@wandelbots/wandelbots-js-react-components 5.4.1 → 5.4.2-pr.ci-pr-preview.586.f684aae
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/3d.cjs.js +1 -1
- package/dist/3d.d.ts +1 -1
- package/dist/3d.d.ts.map +1 -1
- package/dist/3d.es.js +1 -1
- package/dist/MotionGroupVisualizer-B-e22qXF.cjs +2 -0
- package/dist/MotionGroupVisualizer-B-e22qXF.cjs.map +1 -0
- package/dist/MotionGroupVisualizer-CIASsBC6.js +1433 -0
- package/dist/MotionGroupVisualizer-CIASsBC6.js.map +1 -0
- package/dist/Setup.d.ts +1 -1
- package/dist/Setup.d.ts.map +1 -1
- package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts +1 -1
- package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts.map +1 -1
- package/dist/components/3d-viewport/collider/ColliderCollection.d.ts.map +1 -1
- package/dist/components/AppHeader.d.ts +1 -1
- package/dist/components/AppHeader.d.ts.map +1 -1
- package/dist/components/ConsoleFilter.d.ts +1 -1
- package/dist/components/ConsoleFilter.d.ts.map +1 -1
- package/dist/components/CopyableText.d.ts.map +1 -1
- package/dist/components/CycleTimer/DefaultVariant.d.ts.map +1 -1
- package/dist/components/CycleTimer/SmallVariant.d.ts.map +1 -1
- package/dist/components/DataGrid.d.ts +1 -1
- package/dist/components/DataGrid.d.ts.map +1 -1
- package/dist/components/LoadingCover.d.ts.map +1 -1
- package/dist/components/LogPanel.d.ts +1 -1
- package/dist/components/LogPanel.d.ts.map +1 -1
- package/dist/components/LogViewer.d.ts +1 -1
- package/dist/components/LogViewer.d.ts.map +1 -1
- package/dist/components/ProgramControl.d.ts.map +1 -1
- package/dist/components/ProgramStateIndicator.d.ts.map +1 -1
- package/dist/components/RobotCard.d.ts.map +1 -1
- package/dist/components/RobotListItem.d.ts.map +1 -1
- package/dist/components/RobotSetupReadinessIndicator.d.ts.map +1 -1
- package/dist/components/SelectableFab.d.ts +1 -1
- package/dist/components/SelectableFab.d.ts.map +1 -1
- package/dist/components/TabBar.d.ts +1 -1
- package/dist/components/TabBar.d.ts.map +1 -1
- package/dist/components/ThemeSelect.d.ts +1 -1
- package/dist/components/ThemeSelect.d.ts.map +1 -1
- package/dist/components/Timer/TimerDefaultVariant.d.ts.map +1 -1
- package/dist/components/Timer/TimerSmallVariant.d.ts.map +1 -1
- package/dist/components/TransparentOverlay.d.ts +2 -2
- package/dist/components/TransparentOverlay.d.ts.map +1 -1
- package/dist/components/VelocitySlider.d.ts +1 -1
- package/dist/components/VelocitySlider.d.ts.map +1 -1
- package/dist/components/experimental/utils/AdornedSelect.d.ts +1 -1
- package/dist/components/experimental/utils/AdornedSelect.d.ts.map +1 -1
- package/dist/components/jogging/JoggingBlocked.d.ts +1 -1
- package/dist/components/jogging/JoggingBlocked.d.ts.map +1 -1
- package/dist/components/jogging/JoggingCartesianAxisControl.d.ts.map +1 -1
- package/dist/components/jogging/JoggingCartesianTab.d.ts.map +1 -1
- package/dist/components/jogging/JoggingFreedriveTab.d.ts.map +1 -1
- package/dist/components/jogging/JoggingJointLimitDetector.d.ts +1 -1
- package/dist/components/jogging/JoggingJointLimitDetector.d.ts.map +1 -1
- package/dist/components/jogging/JoggingJointTab.d.ts +2 -2
- package/dist/components/jogging/JoggingJointTab.d.ts.map +1 -1
- package/dist/components/jogging/JoggingJointValueControl.d.ts.map +1 -1
- package/dist/components/jogging/JoggingOptions.d.ts.map +1 -1
- package/dist/components/jogging/JoggingPanel.d.ts +1 -1
- package/dist/components/jogging/JoggingPanel.d.ts.map +1 -1
- package/dist/components/jogging/JoggingStore.d.ts +1 -1
- package/dist/components/jogging/JoggingStore.d.ts.map +1 -1
- package/dist/components/jogging/JoggingToggleButtonGroup.d.ts +1 -1
- package/dist/components/jogging/JoggingToggleButtonGroup.d.ts.map +1 -1
- package/dist/components/jogging/JoggingVelocitySlider.d.ts +1 -1
- package/dist/components/jogging/JoggingVelocitySlider.d.ts.map +1 -1
- package/dist/components/jogging/PoseCartesianValues.d.ts.map +1 -1
- package/dist/components/jogging/PoseJointValues.d.ts.map +1 -1
- package/dist/components/modal/NoMotionGroupModal.d.ts.map +1 -1
- package/dist/components/robots/DHLinearAxis.d.ts.map +1 -1
- package/dist/components/robots/DHRobot.d.ts.map +1 -1
- package/dist/components/robots/GenericRobot.d.ts +1 -1
- package/dist/components/robots/GenericRobot.d.ts.map +1 -1
- package/dist/components/robots/LinearAxisAnimator.d.ts +1 -1
- package/dist/components/robots/LinearAxisAnimator.d.ts.map +1 -1
- package/dist/components/robots/MotionGroupVisualizer.d.ts +2 -2
- package/dist/components/robots/MotionGroupVisualizer.d.ts.map +1 -1
- package/dist/components/robots/RobotAnimator.d.ts +1 -1
- package/dist/components/robots/RobotAnimator.d.ts.map +1 -1
- package/dist/components/robots/SupportedLinearAxis.d.ts.map +1 -1
- package/dist/components/robots/SupportedRobot.d.ts.map +1 -1
- package/dist/components/robots/robotModelLogic.d.ts.map +1 -1
- package/dist/components/safetyBar/ControllerTypeIndicator.d.ts +1 -1
- package/dist/components/safetyBar/ControllerTypeIndicator.d.ts.map +1 -1
- package/dist/components/safetyBar/IndicatorWithExplanation.d.ts +2 -1
- package/dist/components/safetyBar/IndicatorWithExplanation.d.ts.map +1 -1
- package/dist/components/safetyBar/OperationModeIndicator.d.ts +1 -1
- package/dist/components/safetyBar/OperationModeIndicator.d.ts.map +1 -1
- package/dist/components/safetyBar/SafetyBar.d.ts +1 -1
- package/dist/components/safetyBar/SafetyBar.d.ts.map +1 -1
- package/dist/components/safetyBar/SafetyStateIndicator.d.ts +1 -1
- package/dist/components/safetyBar/SafetyStateIndicator.d.ts.map +1 -1
- package/dist/components/utils/converters.d.ts +2 -2
- package/dist/components/utils/converters.d.ts.map +1 -1
- package/dist/components/utils/hooks.d.ts.map +1 -1
- package/dist/components/utils/interpolation.d.ts.map +1 -1
- package/dist/core.cjs.js +1 -1
- package/dist/core.es.js +2 -2
- package/dist/externalizeComponent.d.ts.map +1 -1
- package/dist/icons/DropdownArrowIcon.d.ts +1 -1
- package/dist/icons/DropdownArrowIcon.d.ts.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +3 -3
- package/dist/interpolation-BIB6FC35.cjs +198 -0
- package/dist/interpolation-BIB6FC35.cjs.map +1 -0
- package/dist/interpolation-lSTX6ZXZ.js +14559 -0
- package/dist/interpolation-lSTX6ZXZ.js.map +1 -0
- package/dist/lib/JoggerConnection.d.ts +1 -1
- package/dist/lib/JoggerConnection.d.ts.map +1 -1
- package/dist/themes/createDarkTheme.d.ts +1 -1
- package/dist/themes/createDarkTheme.d.ts.map +1 -1
- package/dist/themes/createLightTheme.d.ts +1 -1
- package/dist/themes/createLightTheme.d.ts.map +1 -1
- package/dist/theming-D_pShDEg.js +32236 -0
- package/dist/theming-D_pShDEg.js.map +1 -0
- package/dist/theming-L5E8VSae.cjs +84 -0
- package/dist/theming-L5E8VSae.cjs.map +1 -0
- package/package.json +4 -3
- package/src/3d.ts +2 -2
- package/src/Setup.tsx +2 -6
- package/src/components/3d-viewport/PresetEnvironment.tsx +1 -0
- package/src/components/3d-viewport/SafetyZonesRenderer.tsx +43 -23
- package/src/components/3d-viewport/TrajectoryRenderer.tsx +1 -1
- package/src/components/3d-viewport/collider/ColliderCollection.tsx +3 -2
- package/src/components/AppHeader.tsx +9 -12
- package/src/components/ConsoleFilter.tsx +1 -1
- package/src/components/CopyableText.tsx +4 -1
- package/src/components/CycleTimer/DefaultVariant.tsx +8 -5
- package/src/components/CycleTimer/SmallVariant.tsx +3 -1
- package/src/components/DataGrid.tsx +4 -1
- package/src/components/LoadingCover.tsx +4 -1
- package/src/components/LogPanel.tsx +1 -1
- package/src/components/LogViewer.tsx +13 -17
- package/src/components/ProgramControl.tsx +7 -2
- package/src/components/ProgramStateIndicator.tsx +3 -2
- package/src/components/RobotCard.tsx +6 -1
- package/src/components/RobotListItem.tsx +4 -1
- package/src/components/RobotSetupReadinessIndicator.tsx +4 -2
- package/src/components/SelectableFab.tsx +2 -2
- package/src/components/TabBar.tsx +7 -3
- package/src/components/ThemeSelect.tsx +2 -1
- package/src/components/Timer/TimerDefaultVariant.tsx +9 -6
- package/src/components/Timer/TimerSmallVariant.tsx +2 -1
- package/src/components/Timer/useTimerLogic.ts +9 -9
- package/src/components/TransparentOverlay.tsx +2 -2
- package/src/components/VelocitySlider.tsx +3 -1
- package/src/components/experimental/utils/AdornedSelect.tsx +4 -8
- package/src/components/jogging/JoggingBlocked.tsx +6 -2
- package/src/components/jogging/JoggingCartesianAxisControl.tsx +5 -7
- package/src/components/jogging/JoggingCartesianTab.tsx +6 -8
- package/src/components/jogging/JoggingFreedriveTab.tsx +1 -2
- package/src/components/jogging/JoggingJointLimitDetector.tsx +41 -43
- package/src/components/jogging/JoggingJointTab.tsx +12 -20
- package/src/components/jogging/JoggingJointValueControl.tsx +44 -30
- package/src/components/jogging/JoggingOptions.tsx +143 -139
- package/src/components/jogging/JoggingPanel.test.tsx +77 -85
- package/src/components/jogging/JoggingPanel.tsx +10 -13
- package/src/components/jogging/JoggingStore.ts +18 -13
- package/src/components/jogging/JoggingToggleButtonGroup.tsx +3 -3
- package/src/components/jogging/JoggingVelocitySlider.tsx +2 -10
- package/src/components/jogging/PoseCartesianValues.tsx +2 -1
- package/src/components/jogging/PoseJointValues.tsx +2 -1
- package/src/components/jogging/__fixtures__/motionStreamMockData.ts +0 -1
- package/src/components/modal/NoMotionGroupModal.tsx +7 -10
- package/src/components/robots/DHLinearAxis.tsx +62 -45
- package/src/components/robots/DHRobot.tsx +47 -45
- package/src/components/robots/GenericRobot.tsx +24 -24
- package/src/components/robots/LinearAxis.tsx +0 -1
- package/src/components/robots/LinearAxisAnimator.tsx +4 -1
- package/src/components/robots/MotionGroupVisualizer.tsx +53 -53
- package/src/components/robots/RobotAnimator.test.tsx +2 -2
- package/src/components/robots/RobotAnimator.tsx +4 -1
- package/src/components/robots/SupportedLinearAxis.tsx +10 -3
- package/src/components/robots/SupportedRobot.tsx +10 -3
- package/src/components/robots/robotModelLogic.ts +22 -11
- package/src/components/safetyBar/ControllerTypeIndicator.tsx +2 -1
- package/src/components/safetyBar/IndicatorWithExplanation.tsx +13 -11
- package/src/components/safetyBar/OperationModeIndicator.tsx +2 -1
- package/src/components/safetyBar/SafetyBar.tsx +3 -1
- package/src/components/safetyBar/SafetyStateIndicator.tsx +2 -1
- package/src/components/utils/converters.ts +10 -7
- package/src/components/utils/errorHandling.ts +1 -1
- package/src/components/utils/hooks.tsx +1 -0
- package/src/components/utils/interpolation.test.ts +53 -38
- package/src/components/utils/interpolation.ts +1 -0
- package/src/externalizeComponent.tsx +3 -1
- package/src/icons/DropdownArrowIcon.tsx +1 -2
- package/src/lib/JoggerConnection.ts +24 -24
- package/src/themes/createDarkTheme.ts +2 -3
- package/dist/MotionGroupVisualizer-1twp8wG6.js +0 -1328
- package/dist/MotionGroupVisualizer-1twp8wG6.js.map +0 -1
- package/dist/MotionGroupVisualizer-Dq_KWGsa.cjs +0 -2
- package/dist/MotionGroupVisualizer-Dq_KWGsa.cjs.map +0 -1
- package/dist/interpolation-B3pbgXYX.cjs +0 -42
- package/dist/interpolation-B3pbgXYX.cjs.map +0 -1
- package/dist/interpolation-D4ATdkEg.js +0 -7912
- package/dist/interpolation-D4ATdkEg.js.map +0 -1
- package/dist/theming-BJ6pB6jG.cjs +0 -115
- package/dist/theming-BJ6pB6jG.cjs.map +0 -1
- package/dist/theming-LwkvEF-K.js +0 -22417
- package/dist/theming-LwkvEF-K.js.map +0 -1
|
@@ -578,7 +578,9 @@ describe("ValueInterpolator", () => {
|
|
|
578
578
|
})
|
|
579
579
|
|
|
580
580
|
// Clean up
|
|
581
|
-
interpolators.forEach((interpolator) =>
|
|
581
|
+
interpolators.forEach((interpolator) => {
|
|
582
|
+
interpolator.destroy()
|
|
583
|
+
})
|
|
582
584
|
})
|
|
583
585
|
|
|
584
586
|
it("should handle multiple interpolators using auto-interpolation without interference", async () => {
|
|
@@ -613,14 +615,14 @@ describe("ValueInterpolator", () => {
|
|
|
613
615
|
interpolator3.startAutoInterpolation()
|
|
614
616
|
|
|
615
617
|
// Wait for automatic interpolation to progress
|
|
616
|
-
await new Promise(resolve => setTimeout(resolve, 500))
|
|
618
|
+
await new Promise((resolve) => setTimeout(resolve, 500))
|
|
617
619
|
|
|
618
620
|
// Check that all interpolators are moving independently
|
|
619
621
|
const values1 = interpolator1.getCurrentValues()
|
|
620
622
|
const values2 = interpolator2.getCurrentValues()
|
|
621
623
|
const values3 = interpolator3.getCurrentValues()
|
|
622
624
|
|
|
623
|
-
console.log(
|
|
625
|
+
console.log("Auto-interpolation values:", { values1, values2, values3 })
|
|
624
626
|
|
|
625
627
|
// All should have made significant progress toward their targets
|
|
626
628
|
expect(values1[0]).toBeGreaterThan(1) // Moving toward 10
|
|
@@ -668,13 +670,18 @@ describe("ValueInterpolator", () => {
|
|
|
668
670
|
for (let frame = 0; frame < 30; frame++) {
|
|
669
671
|
manualInterpolator.update(1 / 60)
|
|
670
672
|
manualValues.push(manualInterpolator.getCurrentValues()[0])
|
|
671
|
-
await new Promise(resolve => setTimeout(resolve, 16)) // ~60fps
|
|
673
|
+
await new Promise((resolve) => setTimeout(resolve, 16)) // ~60fps
|
|
672
674
|
}
|
|
673
675
|
|
|
674
676
|
// Check auto interpolator after same time
|
|
675
677
|
const autoValue = autoInterpolator.getCurrentValues()[0]
|
|
676
678
|
|
|
677
|
-
console.log(
|
|
679
|
+
console.log(
|
|
680
|
+
"Mixed mode - Manual final:",
|
|
681
|
+
manualValues[manualValues.length - 1],
|
|
682
|
+
"Auto final:",
|
|
683
|
+
autoValue,
|
|
684
|
+
)
|
|
678
685
|
|
|
679
686
|
// Both should have made progress
|
|
680
687
|
expect(manualValues[manualValues.length - 1]).toBeGreaterThan(0.5)
|
|
@@ -703,16 +710,16 @@ describe("ValueInterpolator", () => {
|
|
|
703
710
|
for (let i = 0; i < 5; i++) {
|
|
704
711
|
interpolator.startAutoInterpolation()
|
|
705
712
|
expect(interpolator.isInterpolating()).toBe(true)
|
|
706
|
-
|
|
713
|
+
|
|
707
714
|
interpolator.stop()
|
|
708
715
|
expect(interpolator.isInterpolating()).toBe(false)
|
|
709
|
-
|
|
710
|
-
await new Promise(resolve => setTimeout(resolve, 10))
|
|
716
|
+
|
|
717
|
+
await new Promise((resolve) => setTimeout(resolve, 10))
|
|
711
718
|
}
|
|
712
719
|
|
|
713
720
|
// Final start
|
|
714
721
|
interpolator.startAutoInterpolation()
|
|
715
|
-
await new Promise(resolve => setTimeout(resolve, 200))
|
|
722
|
+
await new Promise((resolve) => setTimeout(resolve, 200))
|
|
716
723
|
|
|
717
724
|
// Should still be working correctly
|
|
718
725
|
const finalValue = interpolator.getCurrentValues()[0]
|
|
@@ -728,7 +735,7 @@ describe("ValueInterpolator", () => {
|
|
|
728
735
|
// useAutorun(() => {
|
|
729
736
|
// requestAnimationFrame(() => updateJoints(newJointValues))
|
|
730
737
|
// })
|
|
731
|
-
|
|
738
|
+
|
|
732
739
|
const interpolator1 = new ValueInterpolator([0, 0, 0], {
|
|
733
740
|
tension: 120,
|
|
734
741
|
friction: 20,
|
|
@@ -749,12 +756,12 @@ describe("ValueInterpolator", () => {
|
|
|
749
756
|
|
|
750
757
|
const interpolators = [interpolator1, interpolator2, interpolator3]
|
|
751
758
|
|
|
752
|
-
// Simulate the RobotAnimator pattern where multiple components
|
|
759
|
+
// Simulate the RobotAnimator pattern where multiple components
|
|
753
760
|
// schedule setTarget calls via requestAnimationFrame
|
|
754
761
|
const targetSets = [
|
|
755
762
|
[1, 2, 3],
|
|
756
|
-
[4, 5, 6],
|
|
757
|
-
[7, 8, 9]
|
|
763
|
+
[4, 5, 6],
|
|
764
|
+
[7, 8, 9],
|
|
758
765
|
]
|
|
759
766
|
|
|
760
767
|
// Schedule all setTarget calls via requestAnimationFrame (like RobotAnimator does)
|
|
@@ -765,20 +772,22 @@ describe("ValueInterpolator", () => {
|
|
|
765
772
|
})
|
|
766
773
|
|
|
767
774
|
// Wait for requestAnimationFrame calls to execute
|
|
768
|
-
await new Promise(resolve => setTimeout(resolve, 50))
|
|
775
|
+
await new Promise((resolve) => setTimeout(resolve, 50))
|
|
769
776
|
|
|
770
777
|
// Now manually update all interpolators for several frames
|
|
771
778
|
for (let frame = 0; frame < 30; frame++) {
|
|
772
|
-
interpolators.forEach(interpolator => {
|
|
779
|
+
interpolators.forEach((interpolator) => {
|
|
773
780
|
interpolator.update(1 / 60)
|
|
774
781
|
})
|
|
775
|
-
await new Promise(resolve => setTimeout(resolve, 16))
|
|
782
|
+
await new Promise((resolve) => setTimeout(resolve, 16))
|
|
776
783
|
}
|
|
777
784
|
|
|
778
785
|
// Check the results
|
|
779
|
-
const finalValues = interpolators.map(interpolator =>
|
|
780
|
-
|
|
781
|
-
|
|
786
|
+
const finalValues = interpolators.map((interpolator) =>
|
|
787
|
+
interpolator.getCurrentValues(),
|
|
788
|
+
)
|
|
789
|
+
|
|
790
|
+
console.log("RAF setTarget pattern results:", finalValues)
|
|
782
791
|
|
|
783
792
|
// All should have made progress toward their respective targets
|
|
784
793
|
expect(finalValues[0][0]).toBeGreaterThan(0.3) // Moving toward 1
|
|
@@ -790,13 +799,15 @@ describe("ValueInterpolator", () => {
|
|
|
790
799
|
expect(finalValues[1][0]).not.toBeCloseTo(finalValues[2][0], 0)
|
|
791
800
|
|
|
792
801
|
// Clean up
|
|
793
|
-
interpolators.forEach(interpolator =>
|
|
802
|
+
interpolators.forEach((interpolator) => {
|
|
803
|
+
interpolator.destroy()
|
|
804
|
+
})
|
|
794
805
|
})
|
|
795
806
|
|
|
796
807
|
it("should handle simultaneous setTarget calls without target blending interference", () => {
|
|
797
808
|
// Test the specific case where setTarget is called on multiple interpolators
|
|
798
809
|
// at nearly the same time (which could trigger the target blending bug)
|
|
799
|
-
|
|
810
|
+
|
|
800
811
|
const interpolator1 = new ValueInterpolator([0], {
|
|
801
812
|
tension: 120,
|
|
802
813
|
friction: 20,
|
|
@@ -813,7 +824,7 @@ describe("ValueInterpolator", () => {
|
|
|
813
824
|
const now = performance.now()
|
|
814
825
|
interpolator1.setTarget([10])
|
|
815
826
|
interpolator2.setTarget([20])
|
|
816
|
-
|
|
827
|
+
|
|
817
828
|
// Verify the targets were set correctly (not blended)
|
|
818
829
|
expect(interpolator1.getCurrentValues()[0]).toBe(0) // Should start at 0
|
|
819
830
|
expect(interpolator2.getCurrentValues()[0]).toBe(0) // Should start at 0
|
|
@@ -825,12 +836,15 @@ describe("ValueInterpolator", () => {
|
|
|
825
836
|
const values1 = interpolator1.getCurrentValues()[0]
|
|
826
837
|
const values2 = interpolator2.getCurrentValues()[0]
|
|
827
838
|
|
|
828
|
-
console.log(
|
|
839
|
+
console.log("Simultaneous setTarget - Values after 1 frame:", {
|
|
840
|
+
values1,
|
|
841
|
+
values2,
|
|
842
|
+
})
|
|
829
843
|
|
|
830
844
|
// Both should be moving in the right direction
|
|
831
845
|
expect(values1).toBeGreaterThan(0) // Moving toward 10
|
|
832
846
|
expect(values2).toBeGreaterThan(0) // Moving toward 20
|
|
833
|
-
|
|
847
|
+
|
|
834
848
|
// Interpolator2 should be moving faster (higher target)
|
|
835
849
|
expect(values2).toBeGreaterThan(values1)
|
|
836
850
|
|
|
@@ -873,11 +887,12 @@ describe("ValueInterpolator", () => {
|
|
|
873
887
|
interpolator3.startAutoInterpolation()
|
|
874
888
|
|
|
875
889
|
// Wait for REAL animation frames to process
|
|
876
|
-
await new Promise(resolve => {
|
|
890
|
+
await new Promise((resolve) => {
|
|
877
891
|
let frameCount = 0
|
|
878
892
|
const checkProgress = () => {
|
|
879
893
|
frameCount++
|
|
880
|
-
if (frameCount >= 30) {
|
|
894
|
+
if (frameCount >= 30) {
|
|
895
|
+
// Wait for ~30 real frames
|
|
881
896
|
resolve(undefined)
|
|
882
897
|
} else {
|
|
883
898
|
requestAnimationFrame(checkProgress)
|
|
@@ -891,7 +906,7 @@ describe("ValueInterpolator", () => {
|
|
|
891
906
|
const values2 = interpolator2.getCurrentValues()[0]
|
|
892
907
|
const values3 = interpolator3.getCurrentValues()[0]
|
|
893
908
|
|
|
894
|
-
console.log(
|
|
909
|
+
console.log("Real RAF test results:", { values1, values2, values3 })
|
|
895
910
|
|
|
896
911
|
// All should have made significant progress
|
|
897
912
|
expect(values1).toBeGreaterThan(1)
|
|
@@ -970,7 +985,7 @@ describe("ValueInterpolator", () => {
|
|
|
970
985
|
const values1 = interpolator1.getCurrentValues()
|
|
971
986
|
const values2 = interpolator2.getCurrentValues()
|
|
972
987
|
|
|
973
|
-
console.log(
|
|
988
|
+
console.log("useFrame simulation results:", { values1, values2 })
|
|
974
989
|
|
|
975
990
|
// Both should have made good progress
|
|
976
991
|
expect(values1[0]).toBeGreaterThan(0.5) // Moving toward 1
|
|
@@ -993,7 +1008,7 @@ describe("ValueInterpolator", () => {
|
|
|
993
1008
|
it("should handle CartesianJoggingAxisVisualization pattern with multiple components", async () => {
|
|
994
1009
|
// This test replicates the exact pattern from CartesianJoggingAxisVisualization
|
|
995
1010
|
// where multiple components watch the same MobX observable and call setTarget via RAF
|
|
996
|
-
|
|
1011
|
+
|
|
997
1012
|
const interpolator1 = new ValueInterpolator([0, 0, 0, 0, 0, 0, 1], {
|
|
998
1013
|
tension: 120,
|
|
999
1014
|
friction: 20,
|
|
@@ -1035,7 +1050,7 @@ describe("ValueInterpolator", () => {
|
|
|
1035
1050
|
requestAnimationFrame(() => updateFlangePose3(pose3))
|
|
1036
1051
|
|
|
1037
1052
|
// Wait for RAF calls to execute
|
|
1038
|
-
await new Promise(resolve => setTimeout(resolve, 32))
|
|
1053
|
+
await new Promise((resolve) => setTimeout(resolve, 32))
|
|
1039
1054
|
|
|
1040
1055
|
// Now simulate useFrame updates for all three interpolators
|
|
1041
1056
|
for (let frame = 0; frame < 30; frame++) {
|
|
@@ -1043,17 +1058,17 @@ describe("ValueInterpolator", () => {
|
|
|
1043
1058
|
interpolator1.update(delta)
|
|
1044
1059
|
interpolator2.update(delta)
|
|
1045
1060
|
interpolator3.update(delta)
|
|
1046
|
-
await new Promise(resolve => setTimeout(resolve, 16))
|
|
1061
|
+
await new Promise((resolve) => setTimeout(resolve, 16))
|
|
1047
1062
|
}
|
|
1048
1063
|
|
|
1049
1064
|
const values1 = interpolator1.getCurrentValues()
|
|
1050
1065
|
const values2 = interpolator2.getCurrentValues()
|
|
1051
1066
|
const values3 = interpolator3.getCurrentValues()
|
|
1052
1067
|
|
|
1053
|
-
console.log(
|
|
1054
|
-
console.log(
|
|
1055
|
-
console.log(
|
|
1056
|
-
console.log(
|
|
1068
|
+
console.log("CartesianJoggingAxisVisualization pattern results:")
|
|
1069
|
+
console.log("Component 1:", values1.slice(0, 3))
|
|
1070
|
+
console.log("Component 2:", values2.slice(0, 3))
|
|
1071
|
+
console.log("Component 3:", values3.slice(0, 3))
|
|
1057
1072
|
|
|
1058
1073
|
// Each interpolator should be moving toward its own target
|
|
1059
1074
|
expect(values1[0]).toBeCloseTo(0.1, 1) // Should be close to target 0.1
|
|
@@ -1101,16 +1116,16 @@ describe("ValueInterpolator", () => {
|
|
|
1101
1116
|
})
|
|
1102
1117
|
|
|
1103
1118
|
// Wait for all RAF calls to execute
|
|
1104
|
-
await new Promise(resolve => setTimeout(resolve, 100))
|
|
1119
|
+
await new Promise((resolve) => setTimeout(resolve, 100))
|
|
1105
1120
|
|
|
1106
1121
|
// Run interpolation for a while
|
|
1107
1122
|
for (let frame = 0; frame < 50; frame++) {
|
|
1108
1123
|
interpolator.update(1 / 60)
|
|
1109
|
-
await new Promise(resolve => setTimeout(resolve, 16))
|
|
1124
|
+
await new Promise((resolve) => setTimeout(resolve, 16))
|
|
1110
1125
|
}
|
|
1111
1126
|
|
|
1112
1127
|
const finalValues = interpolator.getCurrentValues()
|
|
1113
|
-
console.log(
|
|
1128
|
+
console.log("Rapid pose updates result:", finalValues.slice(0, 3))
|
|
1114
1129
|
|
|
1115
1130
|
// Should converge toward the final target [0.15, 0.15, 0.15]
|
|
1116
1131
|
expect(finalValues[0]).toBeCloseTo(0.15, 1)
|
|
@@ -57,7 +57,7 @@ export class JoggerConnection {
|
|
|
57
57
|
ENDPOINT_TRAJECTORY = "/execution/trajectory"
|
|
58
58
|
DEFAULT_MODE = "off" as JoggerMode
|
|
59
59
|
DEFAULT_TCP: string | undefined = "Flange"
|
|
60
|
-
NO_TCP: string | undefined = undefined
|
|
60
|
+
NO_TCP: string | undefined = undefined
|
|
61
61
|
// DEFAULT_COORDINATE_SYSTEM = "world"
|
|
62
62
|
DEFAULT_INIT_TIMEOUT = 5000
|
|
63
63
|
DEFAULT_ORIENTATION = "coordsys" as JoggerOrientation
|
|
@@ -97,7 +97,6 @@ export class JoggerConnection {
|
|
|
97
97
|
// Get matching motion stream
|
|
98
98
|
const motionStream = await MotionStreamConnection.open(nova, motionGroupId)
|
|
99
99
|
|
|
100
|
-
|
|
101
100
|
// Initialize jogger with options
|
|
102
101
|
const jogger = new JoggerConnection(motionStream, options)
|
|
103
102
|
|
|
@@ -112,7 +111,10 @@ export class JoggerConnection {
|
|
|
112
111
|
readonly motionStream: MotionStreamConnection,
|
|
113
112
|
readonly options: JoggerConnectionOptions | undefined = {},
|
|
114
113
|
) {
|
|
115
|
-
this.tcp =
|
|
114
|
+
this.tcp =
|
|
115
|
+
options?.tcp ||
|
|
116
|
+
motionStream.motionGroup.tcp ||
|
|
117
|
+
this.getDefaultTcp(motionStream)
|
|
116
118
|
// this.coordinateSystem = options?.coordinateSystem || this.DEFAULT_COORDINATE_SYSTEM
|
|
117
119
|
this.orientation = options?.orientation || this.DEFAULT_ORIENTATION
|
|
118
120
|
this.timeout = options?.timeout || this.DEFAULT_INIT_TIMEOUT
|
|
@@ -120,15 +122,16 @@ export class JoggerConnection {
|
|
|
120
122
|
this.onError = options?.onError
|
|
121
123
|
}
|
|
122
124
|
|
|
123
|
-
getDefaultTcp(motionStream: MotionStreamConnection){
|
|
125
|
+
getDefaultTcp(motionStream: MotionStreamConnection) {
|
|
124
126
|
const firstJointType = motionStream.description.dh_parameters?.[0]?.type
|
|
125
|
-
if(
|
|
127
|
+
if (
|
|
126
128
|
motionStream.joints.length < 6 &&
|
|
127
|
-
(firstJointType === JointTypeEnum.RevoluteJoint ||
|
|
128
|
-
|
|
129
|
-
|
|
129
|
+
(firstJointType === JointTypeEnum.RevoluteJoint ||
|
|
130
|
+
firstJointType === JointTypeEnum.PrismaticJoint)
|
|
131
|
+
) {
|
|
132
|
+
return this.NO_TCP
|
|
130
133
|
}
|
|
131
|
-
return this.DEFAULT_TCP
|
|
134
|
+
return this.DEFAULT_TCP
|
|
132
135
|
}
|
|
133
136
|
|
|
134
137
|
// Set a new tcp or other options. If current mode is jogging, will reinitialize the jogging websocket
|
|
@@ -297,8 +300,7 @@ export class JoggerConnection {
|
|
|
297
300
|
joint,
|
|
298
301
|
direction,
|
|
299
302
|
velocityValue,
|
|
300
|
-
velocityUnit
|
|
301
|
-
|
|
303
|
+
velocityUnit,
|
|
302
304
|
}: {
|
|
303
305
|
/** Index of the joint to rotate */
|
|
304
306
|
joint: number
|
|
@@ -307,7 +309,6 @@ export class JoggerConnection {
|
|
|
307
309
|
/** Speed of the rotation, unit is currently unused, but i wanted it there to raise awareness that not everything here is rad/s*/
|
|
308
310
|
velocityValue: number
|
|
309
311
|
velocityUnit: "mm/s" | "rad/s"
|
|
310
|
-
|
|
311
312
|
}) {
|
|
312
313
|
if (!this.joggingSocket || this.mode !== "jogging") {
|
|
313
314
|
throw new Error(
|
|
@@ -317,8 +318,7 @@ export class JoggerConnection {
|
|
|
317
318
|
|
|
318
319
|
const velocity = new Array(this.numJoints).fill(0)
|
|
319
320
|
|
|
320
|
-
velocity[joint] =
|
|
321
|
-
direction === "-" ? - velocityValue : velocityValue
|
|
321
|
+
velocity[joint] = direction === "-" ? -velocityValue : velocityValue
|
|
322
322
|
|
|
323
323
|
this.joggingSocket.sendJson({
|
|
324
324
|
message_type: "JointVelocityRequest",
|
|
@@ -408,14 +408,14 @@ export class JoggerConnection {
|
|
|
408
408
|
axis: "x" | "y" | "z"
|
|
409
409
|
direction: "-" | "+"
|
|
410
410
|
motion:
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
411
|
+
| {
|
|
412
|
+
type: "rotate"
|
|
413
|
+
distanceRads: number
|
|
414
|
+
}
|
|
415
|
+
| {
|
|
416
|
+
type: "translate"
|
|
417
|
+
distanceMm: number
|
|
418
|
+
}
|
|
419
419
|
}) {
|
|
420
420
|
const commands: MotionCommand[] = []
|
|
421
421
|
|
|
@@ -577,8 +577,8 @@ export class JoggerConnection {
|
|
|
577
577
|
} else {
|
|
578
578
|
throw new Error(
|
|
579
579
|
result?.add_trajectory_error?.message ||
|
|
580
|
-
|
|
581
|
-
|
|
580
|
+
result?.message ||
|
|
581
|
+
"Failed to execute trajectory, unknown error",
|
|
582
582
|
)
|
|
583
583
|
}
|
|
584
584
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { createTheme,
|
|
2
|
-
|
|
1
|
+
import { createTheme, type Theme } from "@mui/material/styles"
|
|
3
2
|
export function createDarkTheme(): Theme {
|
|
4
3
|
const baseTheme = createTheme({
|
|
5
4
|
palette: {
|
|
@@ -338,7 +337,7 @@ export function createDarkTheme(): Theme {
|
|
|
338
337
|
VelocitySlider: {
|
|
339
338
|
sliderLegendColor: baseTheme.palette.text.primary,
|
|
340
339
|
},
|
|
341
|
-
}
|
|
340
|
+
},
|
|
342
341
|
},
|
|
343
342
|
} as Theme
|
|
344
343
|
}
|