@wandelbots/wandelbots-js-react-components 5.5.1 → 5.5.2
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 +1 -2
- package/dist/3d.d.ts +0 -1
- package/dist/3d.js +16 -29
- package/dist/{components/safetyBar → SafetyBar}/ControllerTypeIndicator.d.ts +0 -1
- package/dist/{components/safetyBar → SafetyBar}/IndicatorWithExplanation.d.ts +0 -1
- package/dist/{components/safetyBar → SafetyBar}/OperationModeIndicator.d.ts +0 -1
- package/dist/{components/safetyBar → SafetyBar}/SafetyBar.d.ts +0 -1
- package/dist/{components/safetyBar → SafetyBar}/SafetyStateIndicator.d.ts +0 -1
- package/dist/{components/safetyBar → SafetyBar}/icons/index.d.ts +0 -1
- package/dist/SafetyBar/index.cjs +1 -0
- package/dist/SafetyBar/index.d.ts +2 -0
- package/dist/SafetyBar/index.js +5 -0
- package/dist/Setup.d.ts +0 -1
- package/dist/chunks/MotionGroupVisualizer-C6wNomDj.cjs +1 -0
- package/dist/chunks/MotionGroupVisualizer-DDvhDBEq.js +1376 -0
- package/dist/chunks/SafetyBar-CLp3W5D7.js +413 -0
- package/dist/chunks/SafetyBar-Dq9qSLtS.cjs +1 -0
- package/dist/chunks/externalizeComponent-BuuzAqKe.js +246 -0
- package/dist/chunks/externalizeComponent-UnCHtc94.cjs +2 -0
- package/dist/chunks/interpolation-B8AQk0uI.cjs +1 -0
- package/dist/chunks/interpolation-BfD7X52s.js +433 -0
- package/dist/chunks/robot-Cy9ST5-m.js +40 -0
- package/dist/chunks/robot-SEtfVAmf.cjs +1 -0
- package/dist/chunks/safety-state-stop-CJW5CKkp.js +55 -0
- package/dist/chunks/safety-state-stop-CgPfwC18.cjs +1 -0
- package/dist/chunks/theming-B8Wz2VOQ.cjs +4 -0
- package/dist/chunks/theming-DT32b-FT.js +5473 -0
- package/dist/chunks/wbLogo-CObCmqTw.js +30 -0
- package/dist/chunks/wbLogo-G_IfZ03l.cjs +1 -0
- package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts +0 -1
- package/dist/components/3d-viewport/PresetEnvironment.d.ts +0 -1
- package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts +0 -1
- package/dist/components/3d-viewport/TrajectoryRenderer.d.ts +0 -1
- package/dist/components/3d-viewport/collider/ColliderCollection.d.ts +0 -1
- package/dist/components/3d-viewport/collider/ColliderElement.d.ts +0 -1
- package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts +0 -1
- package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.d.ts +0 -1
- package/dist/components/AppHeader.d.ts +0 -1
- package/dist/components/ConsoleFilter.d.ts +0 -1
- package/dist/components/CopyableText.d.ts +0 -1
- package/dist/components/CycleTimer/CycleTimer.d.ts +0 -1
- package/dist/components/CycleTimer/DefaultVariant.d.ts +0 -1
- package/dist/components/CycleTimer/SmallVariant.d.ts +0 -1
- package/dist/components/CycleTimer/index.d.ts +0 -1
- package/dist/components/CycleTimer/types.d.ts +0 -1
- package/dist/components/CycleTimer/useAnimations.d.ts +0 -1
- package/dist/components/CycleTimer/useTimerLogic.d.ts +0 -1
- package/dist/components/CycleTimer/utils.d.ts +0 -1
- package/dist/components/CycleTimer.d.ts +0 -1
- package/dist/components/DataGrid.d.ts +0 -1
- package/dist/components/LoadingCover.d.ts +0 -1
- package/dist/components/LogPanel.d.ts +0 -1
- package/dist/components/LogStore.d.ts +0 -1
- package/dist/components/LogViewer.d.ts +0 -1
- package/dist/components/ProgramControl.d.ts +0 -1
- package/dist/components/ProgramStateIndicator.d.ts +0 -1
- package/dist/components/RobotCard.d.ts +0 -1
- package/dist/components/RobotListItem.d.ts +0 -1
- package/dist/components/RobotSetupReadinessIndicator.d.ts +0 -1
- package/dist/components/SelectableFab.d.ts +0 -1
- package/dist/components/TabBar.d.ts +0 -1
- package/dist/components/ThemeSelect.d.ts +0 -1
- package/dist/components/Timer/Timer.d.ts +0 -1
- package/dist/components/Timer/TimerDefaultVariant.d.ts +0 -1
- package/dist/components/Timer/TimerSmallVariant.d.ts +0 -1
- package/dist/components/Timer/index.d.ts +0 -1
- package/dist/components/Timer/types.d.ts +0 -1
- package/dist/components/Timer/useTimerAnimations.d.ts +0 -1
- package/dist/components/Timer/useTimerLogic.d.ts +0 -1
- package/dist/components/Timer/utils.d.ts +0 -1
- package/dist/components/Timer.d.ts +0 -1
- package/dist/components/TransparentOverlay.d.ts +0 -1
- package/dist/components/VelocitySlider.d.ts +0 -1
- package/dist/components/experimental/utils/AdornedSelect.d.ts +0 -1
- package/dist/components/jogging/JoggingBlocked.d.ts +0 -1
- package/dist/components/jogging/JoggingCartesianAxisControl.d.ts +0 -1
- package/dist/components/jogging/JoggingCartesianTab.d.ts +0 -1
- package/dist/components/jogging/JoggingFreedriveTab.d.ts +0 -1
- package/dist/components/jogging/JoggingJointLimitDetector.d.ts +0 -1
- package/dist/components/jogging/JoggingJointTab.d.ts +0 -1
- package/dist/components/jogging/JoggingJointValueControl.d.ts +0 -1
- package/dist/components/jogging/JoggingOptions.d.ts +0 -1
- package/dist/components/jogging/JoggingPanel.d.ts +0 -1
- package/dist/components/jogging/JoggingStore.d.ts +0 -1
- package/dist/components/jogging/JoggingToggleButtonGroup.d.ts +0 -1
- package/dist/components/jogging/JoggingVelocitySlider.d.ts +0 -1
- package/dist/components/jogging/PoseCartesianValues.d.ts +0 -1
- package/dist/components/jogging/PoseJointValues.d.ts +0 -1
- package/dist/components/modal/NoMotionGroupModal.d.ts +0 -1
- package/dist/components/robots/AxisConfig.d.ts +0 -1
- package/dist/components/robots/DHLinearAxis.d.ts +0 -1
- package/dist/components/robots/DHRobot.d.ts +0 -1
- package/dist/components/robots/GenericRobot.d.ts +0 -1
- package/dist/components/robots/LinearAxis.d.ts +0 -1
- package/dist/components/robots/LinearAxisAnimator.d.ts +0 -1
- package/dist/components/robots/MotionGroupVisualizer.d.ts +0 -1
- package/dist/components/robots/Robot.d.ts +0 -1
- package/dist/components/robots/RobotAnimator.d.ts +0 -1
- package/dist/components/robots/SupportedLinearAxis.d.ts +0 -1
- package/dist/components/robots/SupportedRobot.d.ts +0 -1
- package/dist/components/robots/ghostStyle.d.ts +0 -1
- package/dist/components/robots/manufacturerHomePositions.d.ts +0 -1
- package/dist/components/robots/robotModelLogic.d.ts +0 -1
- package/dist/components/utils/converters.d.ts +0 -1
- package/dist/components/utils/errorHandling.d.ts +0 -1
- package/dist/components/utils/hooks.d.ts +0 -1
- package/dist/components/utils/interpolation.d.ts +0 -1
- package/dist/core.cjs +1 -2
- package/dist/core.d.ts +1 -2
- package/dist/core.js +50 -78
- package/dist/externalizeComponent.d.ts +0 -1
- package/dist/i18n/config.d.ts +0 -1
- package/dist/icons/DropdownArrowIcon.d.ts +0 -1
- package/dist/icons/index.d.ts +0 -1
- package/dist/index.cjs +1 -2
- package/dist/index.d.ts +0 -1
- package/dist/index.js +91 -150
- package/dist/lib/ConnectedMotionGroup.d.ts +0 -1
- package/dist/lib/JoggerConnection.d.ts +0 -1
- package/dist/lib/MotionStreamConnection.d.ts +0 -1
- package/dist/lib/motionStateUpdate.d.ts +0 -1
- package/dist/themes/createDarkTheme.d.ts +0 -1
- package/dist/themes/createLightTheme.d.ts +0 -1
- package/dist/themes/themeTypes.d.ts +0 -1
- package/dist/themes/theming.d.ts +0 -1
- package/dist/wb-icons.cjs +1 -2
- package/dist/wb-icons.d.ts +1 -2
- package/dist/wb-icons.js +25 -45
- package/package.json +4 -5
- package/dist/3d.cjs.map +0 -1
- package/dist/3d.d.ts.map +0 -1
- package/dist/3d.js.map +0 -1
- package/dist/Setup.d.ts.map +0 -1
- package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts.map +0 -1
- package/dist/components/3d-viewport/PresetEnvironment.cjs +0 -2
- package/dist/components/3d-viewport/PresetEnvironment.cjs.map +0 -1
- package/dist/components/3d-viewport/PresetEnvironment.d.ts.map +0 -1
- package/dist/components/3d-viewport/PresetEnvironment.js +0 -81
- package/dist/components/3d-viewport/PresetEnvironment.js.map +0 -1
- package/dist/components/3d-viewport/SafetyZonesRenderer.cjs +0 -2
- package/dist/components/3d-viewport/SafetyZonesRenderer.cjs.map +0 -1
- package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts.map +0 -1
- package/dist/components/3d-viewport/SafetyZonesRenderer.js +0 -131
- package/dist/components/3d-viewport/SafetyZonesRenderer.js.map +0 -1
- package/dist/components/3d-viewport/TrajectoryRenderer.cjs +0 -2
- package/dist/components/3d-viewport/TrajectoryRenderer.cjs.map +0 -1
- package/dist/components/3d-viewport/TrajectoryRenderer.d.ts.map +0 -1
- package/dist/components/3d-viewport/TrajectoryRenderer.js +0 -31
- package/dist/components/3d-viewport/TrajectoryRenderer.js.map +0 -1
- package/dist/components/3d-viewport/collider/ColliderCollection.cjs +0 -2
- package/dist/components/3d-viewport/collider/ColliderCollection.cjs.map +0 -1
- package/dist/components/3d-viewport/collider/ColliderCollection.d.ts.map +0 -1
- package/dist/components/3d-viewport/collider/ColliderCollection.js +0 -22
- package/dist/components/3d-viewport/collider/ColliderCollection.js.map +0 -1
- package/dist/components/3d-viewport/collider/ColliderElement.cjs +0 -2
- package/dist/components/3d-viewport/collider/ColliderElement.cjs.map +0 -1
- package/dist/components/3d-viewport/collider/ColliderElement.d.ts.map +0 -1
- package/dist/components/3d-viewport/collider/ColliderElement.js +0 -29
- package/dist/components/3d-viewport/collider/ColliderElement.js.map +0 -1
- package/dist/components/3d-viewport/collider/CollisionSceneRenderer.cjs +0 -2
- package/dist/components/3d-viewport/collider/CollisionSceneRenderer.cjs.map +0 -1
- package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts.map +0 -1
- package/dist/components/3d-viewport/collider/CollisionSceneRenderer.js +0 -19
- package/dist/components/3d-viewport/collider/CollisionSceneRenderer.js.map +0 -1
- package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.cjs +0 -2
- package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.cjs.map +0 -1
- package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.d.ts.map +0 -1
- package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.js +0 -43
- package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.js.map +0 -1
- package/dist/components/AppHeader.cjs +0 -2
- package/dist/components/AppHeader.cjs.map +0 -1
- package/dist/components/AppHeader.d.ts.map +0 -1
- package/dist/components/AppHeader.js +0 -139
- package/dist/components/AppHeader.js.map +0 -1
- package/dist/components/ConsoleFilter.cjs +0 -2
- package/dist/components/ConsoleFilter.cjs.map +0 -1
- package/dist/components/ConsoleFilter.d.ts.map +0 -1
- package/dist/components/ConsoleFilter.js +0 -13
- package/dist/components/ConsoleFilter.js.map +0 -1
- package/dist/components/CopyableText.cjs +0 -2
- package/dist/components/CopyableText.cjs.map +0 -1
- package/dist/components/CopyableText.d.ts.map +0 -1
- package/dist/components/CopyableText.js +0 -71
- package/dist/components/CopyableText.js.map +0 -1
- package/dist/components/CycleTimer/CycleTimer.d.ts.map +0 -1
- package/dist/components/CycleTimer/DefaultVariant.cjs +0 -2
- package/dist/components/CycleTimer/DefaultVariant.cjs.map +0 -1
- package/dist/components/CycleTimer/DefaultVariant.d.ts.map +0 -1
- package/dist/components/CycleTimer/DefaultVariant.js +0 -301
- package/dist/components/CycleTimer/DefaultVariant.js.map +0 -1
- package/dist/components/CycleTimer/SmallVariant.cjs +0 -2
- package/dist/components/CycleTimer/SmallVariant.cjs.map +0 -1
- package/dist/components/CycleTimer/SmallVariant.d.ts.map +0 -1
- package/dist/components/CycleTimer/SmallVariant.js +0 -150
- package/dist/components/CycleTimer/SmallVariant.js.map +0 -1
- package/dist/components/CycleTimer/index.cjs +0 -2
- package/dist/components/CycleTimer/index.cjs.map +0 -1
- package/dist/components/CycleTimer/index.d.ts.map +0 -1
- package/dist/components/CycleTimer/index.js +0 -86
- package/dist/components/CycleTimer/index.js.map +0 -1
- package/dist/components/CycleTimer/types.d.ts.map +0 -1
- package/dist/components/CycleTimer/useAnimations.cjs +0 -2
- package/dist/components/CycleTimer/useAnimations.cjs.map +0 -1
- package/dist/components/CycleTimer/useAnimations.d.ts.map +0 -1
- package/dist/components/CycleTimer/useAnimations.js +0 -105
- package/dist/components/CycleTimer/useAnimations.js.map +0 -1
- package/dist/components/CycleTimer/useTimerLogic.cjs +0 -2
- package/dist/components/CycleTimer/useTimerLogic.cjs.map +0 -1
- package/dist/components/CycleTimer/useTimerLogic.d.ts.map +0 -1
- package/dist/components/CycleTimer/useTimerLogic.js +0 -191
- package/dist/components/CycleTimer/useTimerLogic.js.map +0 -1
- package/dist/components/CycleTimer/utils.cjs +0 -2
- package/dist/components/CycleTimer/utils.cjs.map +0 -1
- package/dist/components/CycleTimer/utils.d.ts.map +0 -1
- package/dist/components/CycleTimer/utils.js +0 -20
- package/dist/components/CycleTimer/utils.js.map +0 -1
- package/dist/components/CycleTimer.cjs +0 -2
- package/dist/components/CycleTimer.cjs.map +0 -1
- package/dist/components/CycleTimer.d.ts.map +0 -1
- package/dist/components/CycleTimer.js +0 -6
- package/dist/components/CycleTimer.js.map +0 -1
- package/dist/components/DataGrid.cjs +0 -2
- package/dist/components/DataGrid.cjs.map +0 -1
- package/dist/components/DataGrid.d.ts.map +0 -1
- package/dist/components/DataGrid.js +0 -535
- package/dist/components/DataGrid.js.map +0 -1
- package/dist/components/LoadingCover.cjs +0 -2
- package/dist/components/LoadingCover.cjs.map +0 -1
- package/dist/components/LoadingCover.d.ts.map +0 -1
- package/dist/components/LoadingCover.js +0 -77
- package/dist/components/LoadingCover.js.map +0 -1
- package/dist/components/LogPanel.cjs +0 -2
- package/dist/components/LogPanel.cjs.map +0 -1
- package/dist/components/LogPanel.d.ts.map +0 -1
- package/dist/components/LogPanel.js +0 -34
- package/dist/components/LogPanel.js.map +0 -1
- package/dist/components/LogStore.cjs +0 -2
- package/dist/components/LogStore.cjs.map +0 -1
- package/dist/components/LogStore.d.ts.map +0 -1
- package/dist/components/LogStore.js +0 -33
- package/dist/components/LogStore.js.map +0 -1
- package/dist/components/LogViewer.cjs +0 -2
- package/dist/components/LogViewer.cjs.map +0 -1
- package/dist/components/LogViewer.d.ts.map +0 -1
- package/dist/components/LogViewer.js +0 -299
- package/dist/components/LogViewer.js.map +0 -1
- package/dist/components/ProgramControl.cjs +0 -2
- package/dist/components/ProgramControl.cjs.map +0 -1
- package/dist/components/ProgramControl.d.ts.map +0 -1
- package/dist/components/ProgramControl.js +0 -147
- package/dist/components/ProgramControl.js.map +0 -1
- package/dist/components/ProgramStateIndicator.cjs +0 -2
- package/dist/components/ProgramStateIndicator.cjs.map +0 -1
- package/dist/components/ProgramStateIndicator.d.ts.map +0 -1
- package/dist/components/ProgramStateIndicator.js +0 -140
- package/dist/components/ProgramStateIndicator.js.map +0 -1
- package/dist/components/RobotCard.cjs +0 -2
- package/dist/components/RobotCard.cjs.map +0 -1
- package/dist/components/RobotCard.d.ts.map +0 -1
- package/dist/components/RobotCard.js +0 -360
- package/dist/components/RobotCard.js.map +0 -1
- package/dist/components/RobotListItem.cjs +0 -2
- package/dist/components/RobotListItem.cjs.map +0 -1
- package/dist/components/RobotListItem.d.ts.map +0 -1
- package/dist/components/RobotListItem.js +0 -122
- package/dist/components/RobotListItem.js.map +0 -1
- package/dist/components/RobotSetupReadinessIndicator.cjs +0 -2
- package/dist/components/RobotSetupReadinessIndicator.cjs.map +0 -1
- package/dist/components/RobotSetupReadinessIndicator.d.ts.map +0 -1
- package/dist/components/RobotSetupReadinessIndicator.js +0 -122
- package/dist/components/RobotSetupReadinessIndicator.js.map +0 -1
- package/dist/components/RobotSetupReadinessIndicator.test.d.ts +0 -2
- package/dist/components/RobotSetupReadinessIndicator.test.d.ts.map +0 -1
- package/dist/components/SelectableFab.cjs +0 -2
- package/dist/components/SelectableFab.cjs.map +0 -1
- package/dist/components/SelectableFab.d.ts.map +0 -1
- package/dist/components/SelectableFab.js +0 -51
- package/dist/components/SelectableFab.js.map +0 -1
- package/dist/components/TabBar.cjs +0 -2
- package/dist/components/TabBar.cjs.map +0 -1
- package/dist/components/TabBar.d.ts.map +0 -1
- package/dist/components/TabBar.js +0 -212
- package/dist/components/TabBar.js.map +0 -1
- package/dist/components/ThemeSelect.d.ts.map +0 -1
- package/dist/components/Timer/Timer.d.ts.map +0 -1
- package/dist/components/Timer/TimerDefaultVariant.cjs +0 -2
- package/dist/components/Timer/TimerDefaultVariant.cjs.map +0 -1
- package/dist/components/Timer/TimerDefaultVariant.d.ts.map +0 -1
- package/dist/components/Timer/TimerDefaultVariant.js +0 -136
- package/dist/components/Timer/TimerDefaultVariant.js.map +0 -1
- package/dist/components/Timer/TimerSmallVariant.cjs +0 -2
- package/dist/components/Timer/TimerSmallVariant.cjs.map +0 -1
- package/dist/components/Timer/TimerSmallVariant.d.ts.map +0 -1
- package/dist/components/Timer/TimerSmallVariant.js +0 -128
- package/dist/components/Timer/TimerSmallVariant.js.map +0 -1
- package/dist/components/Timer/index.cjs +0 -2
- package/dist/components/Timer/index.cjs.map +0 -1
- package/dist/components/Timer/index.d.ts.map +0 -1
- package/dist/components/Timer/index.js +0 -68
- package/dist/components/Timer/index.js.map +0 -1
- package/dist/components/Timer/types.d.ts.map +0 -1
- package/dist/components/Timer/useTimerAnimations.cjs +0 -2
- package/dist/components/Timer/useTimerAnimations.cjs.map +0 -1
- package/dist/components/Timer/useTimerAnimations.d.ts.map +0 -1
- package/dist/components/Timer/useTimerAnimations.js +0 -48
- package/dist/components/Timer/useTimerAnimations.js.map +0 -1
- package/dist/components/Timer/useTimerLogic.cjs +0 -2
- package/dist/components/Timer/useTimerLogic.cjs.map +0 -1
- package/dist/components/Timer/useTimerLogic.d.ts.map +0 -1
- package/dist/components/Timer/useTimerLogic.js +0 -113
- package/dist/components/Timer/useTimerLogic.js.map +0 -1
- package/dist/components/Timer/utils.cjs +0 -2
- package/dist/components/Timer/utils.cjs.map +0 -1
- package/dist/components/Timer/utils.d.ts.map +0 -1
- package/dist/components/Timer/utils.js +0 -19
- package/dist/components/Timer/utils.js.map +0 -1
- package/dist/components/Timer.cjs +0 -2
- package/dist/components/Timer.cjs.map +0 -1
- package/dist/components/Timer.d.ts.map +0 -1
- package/dist/components/Timer.js +0 -6
- package/dist/components/Timer.js.map +0 -1
- package/dist/components/TransparentOverlay.d.ts.map +0 -1
- package/dist/components/VelocitySlider.cjs +0 -2
- package/dist/components/VelocitySlider.cjs.map +0 -1
- package/dist/components/VelocitySlider.d.ts.map +0 -1
- package/dist/components/VelocitySlider.js +0 -97
- package/dist/components/VelocitySlider.js.map +0 -1
- package/dist/components/experimental/utils/AdornedSelect.cjs +0 -2
- package/dist/components/experimental/utils/AdornedSelect.cjs.map +0 -1
- package/dist/components/experimental/utils/AdornedSelect.d.ts.map +0 -1
- package/dist/components/experimental/utils/AdornedSelect.js +0 -35
- package/dist/components/experimental/utils/AdornedSelect.js.map +0 -1
- package/dist/components/jogging/JoggingBlocked.cjs +0 -2
- package/dist/components/jogging/JoggingBlocked.cjs.map +0 -1
- package/dist/components/jogging/JoggingBlocked.d.ts.map +0 -1
- package/dist/components/jogging/JoggingBlocked.js +0 -46
- package/dist/components/jogging/JoggingBlocked.js.map +0 -1
- package/dist/components/jogging/JoggingCartesianAxisControl.cjs +0 -2
- package/dist/components/jogging/JoggingCartesianAxisControl.cjs.map +0 -1
- package/dist/components/jogging/JoggingCartesianAxisControl.d.ts.map +0 -1
- package/dist/components/jogging/JoggingCartesianAxisControl.js +0 -186
- package/dist/components/jogging/JoggingCartesianAxisControl.js.map +0 -1
- package/dist/components/jogging/JoggingCartesianTab.cjs +0 -2
- package/dist/components/jogging/JoggingCartesianTab.cjs.map +0 -1
- package/dist/components/jogging/JoggingCartesianTab.d.ts.map +0 -1
- package/dist/components/jogging/JoggingCartesianTab.js +0 -267
- package/dist/components/jogging/JoggingCartesianTab.js.map +0 -1
- package/dist/components/jogging/JoggingFreedriveTab.d.ts.map +0 -1
- package/dist/components/jogging/JoggingJointLimitDetector.cjs +0 -2
- package/dist/components/jogging/JoggingJointLimitDetector.cjs.map +0 -1
- package/dist/components/jogging/JoggingJointLimitDetector.d.ts.map +0 -1
- package/dist/components/jogging/JoggingJointLimitDetector.js +0 -42
- package/dist/components/jogging/JoggingJointLimitDetector.js.map +0 -1
- package/dist/components/jogging/JoggingJointTab.cjs +0 -2
- package/dist/components/jogging/JoggingJointTab.cjs.map +0 -1
- package/dist/components/jogging/JoggingJointTab.d.ts.map +0 -1
- package/dist/components/jogging/JoggingJointTab.js +0 -114
- package/dist/components/jogging/JoggingJointTab.js.map +0 -1
- package/dist/components/jogging/JoggingJointValueControl.cjs +0 -2
- package/dist/components/jogging/JoggingJointValueControl.cjs.map +0 -1
- package/dist/components/jogging/JoggingJointValueControl.d.ts.map +0 -1
- package/dist/components/jogging/JoggingJointValueControl.js +0 -240
- package/dist/components/jogging/JoggingJointValueControl.js.map +0 -1
- package/dist/components/jogging/JoggingOptions.cjs +0 -2
- package/dist/components/jogging/JoggingOptions.cjs.map +0 -1
- package/dist/components/jogging/JoggingOptions.d.ts.map +0 -1
- package/dist/components/jogging/JoggingOptions.js +0 -117
- package/dist/components/jogging/JoggingOptions.js.map +0 -1
- package/dist/components/jogging/JoggingPanel.cjs +0 -2
- package/dist/components/jogging/JoggingPanel.cjs.map +0 -1
- package/dist/components/jogging/JoggingPanel.d.ts.map +0 -1
- package/dist/components/jogging/JoggingPanel.js +0 -121
- package/dist/components/jogging/JoggingPanel.js.map +0 -1
- package/dist/components/jogging/JoggingPanel.test.d.ts +0 -2
- package/dist/components/jogging/JoggingPanel.test.d.ts.map +0 -1
- package/dist/components/jogging/JoggingStore.cjs +0 -2
- package/dist/components/jogging/JoggingStore.cjs.map +0 -1
- package/dist/components/jogging/JoggingStore.d.ts.map +0 -1
- package/dist/components/jogging/JoggingStore.js +0 -219
- package/dist/components/jogging/JoggingStore.js.map +0 -1
- package/dist/components/jogging/JoggingToggleButtonGroup.cjs +0 -2
- package/dist/components/jogging/JoggingToggleButtonGroup.cjs.map +0 -1
- package/dist/components/jogging/JoggingToggleButtonGroup.d.ts.map +0 -1
- package/dist/components/jogging/JoggingToggleButtonGroup.js +0 -29
- package/dist/components/jogging/JoggingToggleButtonGroup.js.map +0 -1
- package/dist/components/jogging/JoggingVelocitySlider.cjs +0 -2
- package/dist/components/jogging/JoggingVelocitySlider.cjs.map +0 -1
- package/dist/components/jogging/JoggingVelocitySlider.d.ts.map +0 -1
- package/dist/components/jogging/JoggingVelocitySlider.js +0 -40
- package/dist/components/jogging/JoggingVelocitySlider.js.map +0 -1
- package/dist/components/jogging/PoseCartesianValues.cjs +0 -2
- package/dist/components/jogging/PoseCartesianValues.cjs.map +0 -1
- package/dist/components/jogging/PoseCartesianValues.d.ts.map +0 -1
- package/dist/components/jogging/PoseCartesianValues.js +0 -48
- package/dist/components/jogging/PoseCartesianValues.js.map +0 -1
- package/dist/components/jogging/PoseJointValues.cjs +0 -2
- package/dist/components/jogging/PoseJointValues.cjs.map +0 -1
- package/dist/components/jogging/PoseJointValues.d.ts.map +0 -1
- package/dist/components/jogging/PoseJointValues.js +0 -47
- package/dist/components/jogging/PoseJointValues.js.map +0 -1
- package/dist/components/jogging/__fixtures__/motionStreamMockData.d.ts +0 -11
- package/dist/components/jogging/__fixtures__/motionStreamMockData.d.ts.map +0 -1
- package/dist/components/modal/NoMotionGroupModal.cjs +0 -2
- package/dist/components/modal/NoMotionGroupModal.cjs.map +0 -1
- package/dist/components/modal/NoMotionGroupModal.d.ts.map +0 -1
- package/dist/components/modal/NoMotionGroupModal.js +0 -92
- package/dist/components/modal/NoMotionGroupModal.js.map +0 -1
- package/dist/components/robots/AxisConfig.cjs +0 -2
- package/dist/components/robots/AxisConfig.cjs.map +0 -1
- package/dist/components/robots/AxisConfig.d.ts.map +0 -1
- package/dist/components/robots/AxisConfig.js +0 -5
- package/dist/components/robots/AxisConfig.js.map +0 -1
- package/dist/components/robots/DHLinearAxis.cjs +0 -2
- package/dist/components/robots/DHLinearAxis.cjs.map +0 -1
- package/dist/components/robots/DHLinearAxis.d.ts.map +0 -1
- package/dist/components/robots/DHLinearAxis.js +0 -92
- package/dist/components/robots/DHLinearAxis.js.map +0 -1
- package/dist/components/robots/DHRobot.cjs +0 -2
- package/dist/components/robots/DHRobot.cjs.map +0 -1
- package/dist/components/robots/DHRobot.d.ts.map +0 -1
- package/dist/components/robots/DHRobot.js +0 -94
- package/dist/components/robots/DHRobot.js.map +0 -1
- package/dist/components/robots/GenericRobot.cjs +0 -2
- package/dist/components/robots/GenericRobot.cjs.map +0 -1
- package/dist/components/robots/GenericRobot.d.ts.map +0 -1
- package/dist/components/robots/GenericRobot.js +0 -91
- package/dist/components/robots/GenericRobot.js.map +0 -1
- package/dist/components/robots/LinearAxis.cjs +0 -2
- package/dist/components/robots/LinearAxis.cjs.map +0 -1
- package/dist/components/robots/LinearAxis.d.ts.map +0 -1
- package/dist/components/robots/LinearAxis.js +0 -42
- package/dist/components/robots/LinearAxis.js.map +0 -1
- package/dist/components/robots/LinearAxisAnimator.cjs +0 -2
- package/dist/components/robots/LinearAxisAnimator.cjs.map +0 -1
- package/dist/components/robots/LinearAxisAnimator.d.ts.map +0 -1
- package/dist/components/robots/LinearAxisAnimator.js +0 -66
- package/dist/components/robots/LinearAxisAnimator.js.map +0 -1
- package/dist/components/robots/MotionGroupVisualizer.cjs +0 -2
- package/dist/components/robots/MotionGroupVisualizer.cjs.map +0 -1
- package/dist/components/robots/MotionGroupVisualizer.d.ts.map +0 -1
- package/dist/components/robots/MotionGroupVisualizer.js +0 -21
- package/dist/components/robots/MotionGroupVisualizer.js.map +0 -1
- package/dist/components/robots/Robot.cjs +0 -2
- package/dist/components/robots/Robot.cjs.map +0 -1
- package/dist/components/robots/Robot.d.ts.map +0 -1
- package/dist/components/robots/Robot.js +0 -31
- package/dist/components/robots/Robot.js.map +0 -1
- package/dist/components/robots/RobotAnimator.cjs +0 -2
- package/dist/components/robots/RobotAnimator.cjs.map +0 -1
- package/dist/components/robots/RobotAnimator.d.ts.map +0 -1
- package/dist/components/robots/RobotAnimator.js +0 -66
- package/dist/components/robots/RobotAnimator.js.map +0 -1
- package/dist/components/robots/RobotAnimator.test.d.ts +0 -2
- package/dist/components/robots/RobotAnimator.test.d.ts.map +0 -1
- package/dist/components/robots/SupportedLinearAxis.cjs +0 -2
- package/dist/components/robots/SupportedLinearAxis.cjs.map +0 -1
- package/dist/components/robots/SupportedLinearAxis.d.ts.map +0 -1
- package/dist/components/robots/SupportedLinearAxis.js +0 -82
- package/dist/components/robots/SupportedLinearAxis.js.map +0 -1
- package/dist/components/robots/SupportedRobot.cjs +0 -2
- package/dist/components/robots/SupportedRobot.cjs.map +0 -1
- package/dist/components/robots/SupportedRobot.d.ts.map +0 -1
- package/dist/components/robots/SupportedRobot.js +0 -82
- package/dist/components/robots/SupportedRobot.js.map +0 -1
- package/dist/components/robots/ghostStyle.cjs +0 -2
- package/dist/components/robots/ghostStyle.cjs.map +0 -1
- package/dist/components/robots/ghostStyle.d.ts.map +0 -1
- package/dist/components/robots/ghostStyle.js +0 -40
- package/dist/components/robots/ghostStyle.js.map +0 -1
- package/dist/components/robots/manufacturerHomePositions.cjs +0 -2
- package/dist/components/robots/manufacturerHomePositions.cjs.map +0 -1
- package/dist/components/robots/manufacturerHomePositions.d.ts.map +0 -1
- package/dist/components/robots/manufacturerHomePositions.js +0 -51
- package/dist/components/robots/manufacturerHomePositions.js.map +0 -1
- package/dist/components/robots/robotModelLogic.cjs +0 -2
- package/dist/components/robots/robotModelLogic.cjs.map +0 -1
- package/dist/components/robots/robotModelLogic.d.ts.map +0 -1
- package/dist/components/robots/robotModelLogic.js +0 -61
- package/dist/components/robots/robotModelLogic.js.map +0 -1
- package/dist/components/safetyBar/ControllerTypeIndicator.cjs +0 -2
- package/dist/components/safetyBar/ControllerTypeIndicator.cjs.map +0 -1
- package/dist/components/safetyBar/ControllerTypeIndicator.d.ts.map +0 -1
- package/dist/components/safetyBar/ControllerTypeIndicator.js +0 -71
- package/dist/components/safetyBar/ControllerTypeIndicator.js.map +0 -1
- package/dist/components/safetyBar/IndicatorWithExplanation.cjs +0 -2
- package/dist/components/safetyBar/IndicatorWithExplanation.cjs.map +0 -1
- package/dist/components/safetyBar/IndicatorWithExplanation.d.ts.map +0 -1
- package/dist/components/safetyBar/IndicatorWithExplanation.js +0 -123
- package/dist/components/safetyBar/IndicatorWithExplanation.js.map +0 -1
- package/dist/components/safetyBar/OperationModeIndicator.cjs +0 -2
- package/dist/components/safetyBar/OperationModeIndicator.cjs.map +0 -1
- package/dist/components/safetyBar/OperationModeIndicator.d.ts.map +0 -1
- package/dist/components/safetyBar/OperationModeIndicator.js +0 -75
- package/dist/components/safetyBar/OperationModeIndicator.js.map +0 -1
- package/dist/components/safetyBar/SafetyBar.cjs +0 -2
- package/dist/components/safetyBar/SafetyBar.cjs.map +0 -1
- package/dist/components/safetyBar/SafetyBar.d.ts.map +0 -1
- package/dist/components/safetyBar/SafetyBar.js +0 -66
- package/dist/components/safetyBar/SafetyBar.js.map +0 -1
- package/dist/components/safetyBar/SafetyStateIndicator.cjs +0 -2
- package/dist/components/safetyBar/SafetyStateIndicator.cjs.map +0 -1
- package/dist/components/safetyBar/SafetyStateIndicator.d.ts.map +0 -1
- package/dist/components/safetyBar/SafetyStateIndicator.js +0 -126
- package/dist/components/safetyBar/SafetyStateIndicator.js.map +0 -1
- package/dist/components/safetyBar/icons/controller-type-physical.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/controller-type-physical.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/controller-type-physical.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/controller-type-physical.svg.js +0 -11
- package/dist/components/safetyBar/icons/controller-type-physical.svg.js.map +0 -1
- package/dist/components/safetyBar/icons/controller-type-virtual.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/controller-type-virtual.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/controller-type-virtual.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/controller-type-virtual.svg.js +0 -11
- package/dist/components/safetyBar/icons/controller-type-virtual.svg.js.map +0 -1
- package/dist/components/safetyBar/icons/index.d.ts.map +0 -1
- package/dist/components/safetyBar/icons/operation-mode-automatic.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/operation-mode-automatic.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/operation-mode-automatic.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/operation-mode-automatic.svg.js +0 -11
- package/dist/components/safetyBar/icons/operation-mode-automatic.svg.js.map +0 -1
- package/dist/components/safetyBar/icons/operation-mode-error.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/operation-mode-error.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/operation-mode-error.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/operation-mode-error.svg.js +0 -11
- package/dist/components/safetyBar/icons/operation-mode-error.svg.js.map +0 -1
- package/dist/components/safetyBar/icons/operation-mode-manual.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/operation-mode-manual.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/operation-mode-manual.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/operation-mode-manual.svg.js +0 -11
- package/dist/components/safetyBar/icons/operation-mode-manual.svg.js.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-error.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/safety-state-error.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-error.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/safety-state-error.svg.js +0 -11
- package/dist/components/safetyBar/icons/safety-state-error.svg.js.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-estop.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/safety-state-estop.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-estop.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/safety-state-estop.svg.js +0 -11
- package/dist/components/safetyBar/icons/safety-state-estop.svg.js.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.js +0 -11
- package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.js.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-normal.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/safety-state-normal.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-normal.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/safety-state-normal.svg.js +0 -11
- package/dist/components/safetyBar/icons/safety-state-normal.svg.js.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-stop.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/safety-state-stop.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-stop.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/safety-state-stop.svg.js +0 -11
- package/dist/components/safetyBar/icons/safety-state-stop.svg.js.map +0 -1
- package/dist/components/utils/converters.cjs +0 -2
- package/dist/components/utils/converters.cjs.map +0 -1
- package/dist/components/utils/converters.d.ts.map +0 -1
- package/dist/components/utils/converters.js +0 -40
- package/dist/components/utils/converters.js.map +0 -1
- package/dist/components/utils/errorHandling.cjs +0 -2
- package/dist/components/utils/errorHandling.cjs.map +0 -1
- package/dist/components/utils/errorHandling.d.ts.map +0 -1
- package/dist/components/utils/errorHandling.js +0 -14
- package/dist/components/utils/errorHandling.js.map +0 -1
- package/dist/components/utils/errorHandling.test.d.ts +0 -2
- package/dist/components/utils/errorHandling.test.d.ts.map +0 -1
- package/dist/components/utils/hooks.cjs +0 -2
- package/dist/components/utils/hooks.cjs.map +0 -1
- package/dist/components/utils/hooks.d.ts.map +0 -1
- package/dist/components/utils/hooks.js +0 -29
- package/dist/components/utils/hooks.js.map +0 -1
- package/dist/components/utils/interpolation.cjs +0 -2
- package/dist/components/utils/interpolation.cjs.map +0 -1
- package/dist/components/utils/interpolation.d.ts.map +0 -1
- package/dist/components/utils/interpolation.js +0 -138
- package/dist/components/utils/interpolation.js.map +0 -1
- package/dist/components/utils/interpolation.test.d.ts +0 -2
- package/dist/components/utils/interpolation.test.d.ts.map +0 -1
- package/dist/core.cjs.map +0 -1
- package/dist/core.d.ts.map +0 -1
- package/dist/core.js.map +0 -1
- package/dist/externalizeComponent.cjs +0 -2
- package/dist/externalizeComponent.cjs.map +0 -1
- package/dist/externalizeComponent.d.ts.map +0 -1
- package/dist/externalizeComponent.js +0 -13
- package/dist/externalizeComponent.js.map +0 -1
- package/dist/i18n/config.cjs +0 -2
- package/dist/i18n/config.cjs.map +0 -1
- package/dist/i18n/config.d.ts.map +0 -1
- package/dist/i18n/config.js +0 -25
- package/dist/i18n/config.js.map +0 -1
- package/dist/i18n/locales/de/translations.json.cjs +0 -3
- package/dist/i18n/locales/de/translations.json.cjs.map +0 -1
- package/dist/i18n/locales/de/translations.json.js +0 -94
- package/dist/i18n/locales/de/translations.json.js.map +0 -1
- package/dist/i18n/locales/en/translations.json.cjs +0 -2
- package/dist/i18n/locales/en/translations.json.cjs.map +0 -1
- package/dist/i18n/locales/en/translations.json.js +0 -94
- package/dist/i18n/locales/en/translations.json.js.map +0 -1
- package/dist/icons/DropdownArrowIcon.cjs +0 -2
- package/dist/icons/DropdownArrowIcon.cjs.map +0 -1
- package/dist/icons/DropdownArrowIcon.d.ts.map +0 -1
- package/dist/icons/DropdownArrowIcon.js +0 -14
- package/dist/icons/DropdownArrowIcon.js.map +0 -1
- package/dist/icons/axis-x.svg.cjs +0 -2
- package/dist/icons/axis-x.svg.cjs.map +0 -1
- package/dist/icons/axis-x.svg.d.ts +0 -3
- package/dist/icons/axis-x.svg.js +0 -11
- package/dist/icons/axis-x.svg.js.map +0 -1
- package/dist/icons/axis-y.svg.cjs +0 -2
- package/dist/icons/axis-y.svg.cjs.map +0 -1
- package/dist/icons/axis-y.svg.d.ts +0 -3
- package/dist/icons/axis-y.svg.js +0 -11
- package/dist/icons/axis-y.svg.js.map +0 -1
- package/dist/icons/axis-z.svg.cjs +0 -2
- package/dist/icons/axis-z.svg.cjs.map +0 -1
- package/dist/icons/axis-z.svg.d.ts +0 -3
- package/dist/icons/axis-z.svg.js +0 -11
- package/dist/icons/axis-z.svg.js.map +0 -1
- package/dist/icons/home.svg.cjs +0 -2
- package/dist/icons/home.svg.cjs.map +0 -1
- package/dist/icons/home.svg.d.ts +0 -3
- package/dist/icons/home.svg.js +0 -11
- package/dist/icons/home.svg.js.map +0 -1
- package/dist/icons/index.d.ts.map +0 -1
- package/dist/icons/jog-minus.svg.cjs +0 -2
- package/dist/icons/jog-minus.svg.cjs.map +0 -1
- package/dist/icons/jog-minus.svg.d.ts +0 -3
- package/dist/icons/jog-minus.svg.js +0 -11
- package/dist/icons/jog-minus.svg.js.map +0 -1
- package/dist/icons/jog-plus.svg.cjs +0 -2
- package/dist/icons/jog-plus.svg.cjs.map +0 -1
- package/dist/icons/jog-plus.svg.d.ts +0 -3
- package/dist/icons/jog-plus.svg.js +0 -11
- package/dist/icons/jog-plus.svg.js.map +0 -1
- package/dist/icons/jogging.svg.cjs +0 -2
- package/dist/icons/jogging.svg.cjs.map +0 -1
- package/dist/icons/jogging.svg.d.ts +0 -3
- package/dist/icons/jogging.svg.js +0 -11
- package/dist/icons/jogging.svg.js.map +0 -1
- package/dist/icons/orientation-coord-system.svg.cjs +0 -2
- package/dist/icons/orientation-coord-system.svg.cjs.map +0 -1
- package/dist/icons/orientation-coord-system.svg.d.ts +0 -3
- package/dist/icons/orientation-coord-system.svg.js +0 -11
- package/dist/icons/orientation-coord-system.svg.js.map +0 -1
- package/dist/icons/orientation-tool.svg.cjs +0 -2
- package/dist/icons/orientation-tool.svg.cjs.map +0 -1
- package/dist/icons/orientation-tool.svg.d.ts +0 -3
- package/dist/icons/orientation-tool.svg.js +0 -11
- package/dist/icons/orientation-tool.svg.js.map +0 -1
- package/dist/icons/robot.svg.cjs +0 -2
- package/dist/icons/robot.svg.cjs.map +0 -1
- package/dist/icons/robot.svg.d.ts +0 -3
- package/dist/icons/robot.svg.js +0 -11
- package/dist/icons/robot.svg.js.map +0 -1
- package/dist/icons/rotation.svg.cjs +0 -2
- package/dist/icons/rotation.svg.cjs.map +0 -1
- package/dist/icons/rotation.svg.d.ts +0 -3
- package/dist/icons/rotation.svg.js +0 -11
- package/dist/icons/rotation.svg.js.map +0 -1
- package/dist/icons/wbLogo.svg.cjs +0 -2
- package/dist/icons/wbLogo.svg.cjs.map +0 -1
- package/dist/icons/wbLogo.svg.d.ts +0 -3
- package/dist/icons/wbLogo.svg.js +0 -11
- package/dist/icons/wbLogo.svg.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/ConnectedMotionGroup.cjs +0 -4
- package/dist/lib/ConnectedMotionGroup.cjs.map +0 -1
- package/dist/lib/ConnectedMotionGroup.d.ts.map +0 -1
- package/dist/lib/ConnectedMotionGroup.js +0 -250
- package/dist/lib/ConnectedMotionGroup.js.map +0 -1
- package/dist/lib/JoggerConnection.cjs +0 -2
- package/dist/lib/JoggerConnection.cjs.map +0 -1
- package/dist/lib/JoggerConnection.d.ts.map +0 -1
- package/dist/lib/JoggerConnection.js +0 -342
- package/dist/lib/JoggerConnection.js.map +0 -1
- package/dist/lib/JoggerConnection.test.d.ts +0 -2
- package/dist/lib/JoggerConnection.test.d.ts.map +0 -1
- package/dist/lib/MotionStreamConnection.cjs +0 -3
- package/dist/lib/MotionStreamConnection.cjs.map +0 -1
- package/dist/lib/MotionStreamConnection.d.ts.map +0 -1
- package/dist/lib/MotionStreamConnection.js +0 -94
- package/dist/lib/MotionStreamConnection.js.map +0 -1
- package/dist/lib/MotionStreamConnection.test.d.ts +0 -2
- package/dist/lib/MotionStreamConnection.test.d.ts.map +0 -1
- package/dist/lib/motionStateUpdate.cjs +0 -2
- package/dist/lib/motionStateUpdate.cjs.map +0 -1
- package/dist/lib/motionStateUpdate.d.ts.map +0 -1
- package/dist/lib/motionStateUpdate.js +0 -49
- package/dist/lib/motionStateUpdate.js.map +0 -1
- package/dist/lib/motionStateUpdate.test.d.ts +0 -2
- package/dist/lib/motionStateUpdate.test.d.ts.map +0 -1
- package/dist/test/consumer.test.d.ts +0 -2
- package/dist/test/consumer.test.d.ts.map +0 -1
- package/dist/test/setup.d.ts +0 -2
- package/dist/test/setup.d.ts.map +0 -1
- package/dist/themes/createDarkTheme.cjs +0 -2
- package/dist/themes/createDarkTheme.cjs.map +0 -1
- package/dist/themes/createDarkTheme.d.ts.map +0 -1
- package/dist/themes/createDarkTheme.js +0 -344
- package/dist/themes/createDarkTheme.js.map +0 -1
- package/dist/themes/createLightTheme.cjs +0 -2
- package/dist/themes/createLightTheme.cjs.map +0 -1
- package/dist/themes/createLightTheme.d.ts.map +0 -1
- package/dist/themes/createLightTheme.js +0 -9
- package/dist/themes/createLightTheme.js.map +0 -1
- package/dist/themes/themeTypes.d.ts.map +0 -1
- package/dist/themes/theming.cjs +0 -2
- package/dist/themes/theming.cjs.map +0 -1
- package/dist/themes/theming.d.ts.map +0 -1
- package/dist/themes/theming.js +0 -14
- package/dist/themes/theming.js.map +0 -1
- package/dist/wb-icons.cjs.map +0 -1
- package/dist/wb-icons.d.ts.map +0 -1
- package/dist/wb-icons.js.map +0 -1
- package/src/3d.ts +0 -18
- package/src/Setup.tsx +0 -33
- package/src/components/3d-viewport/CoordinateSystemTransform.tsx +0 -57
- package/src/components/3d-viewport/PresetEnvironment.tsx +0 -81
- package/src/components/3d-viewport/SafetyZonesRenderer.tsx +0 -198
- package/src/components/3d-viewport/TrajectoryRenderer.tsx +0 -41
- package/src/components/3d-viewport/collider/ColliderCollection.tsx +0 -35
- package/src/components/3d-viewport/collider/ColliderElement.tsx +0 -36
- package/src/components/3d-viewport/collider/CollisionSceneRenderer.tsx +0 -26
- package/src/components/3d-viewport/collider/colliderShapeToBufferGeometry.ts +0 -48
- package/src/components/AppHeader.md +0 -84
- package/src/components/AppHeader.tsx +0 -197
- package/src/components/ConsoleFilter.tsx +0 -24
- package/src/components/CopyableText.tsx +0 -89
- package/src/components/CycleTimer/CycleTimer.ts +0 -8
- package/src/components/CycleTimer/DefaultVariant.tsx +0 -326
- package/src/components/CycleTimer/SmallVariant.tsx +0 -229
- package/src/components/CycleTimer/index.tsx +0 -158
- package/src/components/CycleTimer/types.ts +0 -58
- package/src/components/CycleTimer/useAnimations.ts +0 -202
- package/src/components/CycleTimer/useTimerLogic.ts +0 -330
- package/src/components/CycleTimer/utils.ts +0 -122
- package/src/components/CycleTimer.tsx +0 -8
- package/src/components/DataGrid.tsx +0 -664
- package/src/components/LoadingCover.tsx +0 -91
- package/src/components/LogPanel.tsx +0 -71
- package/src/components/LogStore.ts +0 -46
- package/src/components/LogViewer.tsx +0 -368
- package/src/components/ProgramControl.tsx +0 -267
- package/src/components/ProgramStateIndicator.tsx +0 -195
- package/src/components/RobotCard.tsx +0 -495
- package/src/components/RobotListItem.tsx +0 -155
- package/src/components/RobotSetupReadinessIndicator.test.tsx +0 -60
- package/src/components/RobotSetupReadinessIndicator.tsx +0 -161
- package/src/components/SelectableFab.tsx +0 -52
- package/src/components/TabBar.tsx +0 -325
- package/src/components/ThemeSelect.tsx +0 -51
- package/src/components/Timer/Timer.ts +0 -4
- package/src/components/Timer/TimerDefaultVariant.tsx +0 -143
- package/src/components/Timer/TimerSmallVariant.tsx +0 -141
- package/src/components/Timer/index.tsx +0 -103
- package/src/components/Timer/types.ts +0 -38
- package/src/components/Timer/useTimerAnimations.ts +0 -94
- package/src/components/Timer/useTimerLogic.ts +0 -214
- package/src/components/Timer/utils.ts +0 -87
- package/src/components/Timer.ts +0 -4
- package/src/components/TransparentOverlay.tsx +0 -28
- package/src/components/VelocitySlider.tsx +0 -117
- package/src/components/experimental/utils/AdornedSelect.tsx +0 -38
- package/src/components/jogging/JoggingBlocked.tsx +0 -43
- package/src/components/jogging/JoggingCartesianAxisControl.tsx +0 -237
- package/src/components/jogging/JoggingCartesianTab.tsx +0 -349
- package/src/components/jogging/JoggingFreedriveTab.tsx +0 -8
- package/src/components/jogging/JoggingJointLimitDetector.tsx +0 -57
- package/src/components/jogging/JoggingJointTab.tsx +0 -126
- package/src/components/jogging/JoggingJointValueControl.tsx +0 -293
- package/src/components/jogging/JoggingOptions.tsx +0 -163
- package/src/components/jogging/JoggingPanel.test.tsx +0 -645
- package/src/components/jogging/JoggingPanel.tsx +0 -204
- package/src/components/jogging/JoggingStore.ts +0 -485
- package/src/components/jogging/JoggingToggleButtonGroup.tsx +0 -25
- package/src/components/jogging/JoggingVelocitySlider.tsx +0 -39
- package/src/components/jogging/PoseCartesianValues.tsx +0 -55
- package/src/components/jogging/PoseJointValues.tsx +0 -54
- package/src/components/jogging/__fixtures__/motionStreamMockData.ts +0 -136
- package/src/components/modal/NoMotionGroupModal.tsx +0 -91
- package/src/components/robots/AxisConfig.ts +0 -3
- package/src/components/robots/DHLinearAxis.tsx +0 -147
- package/src/components/robots/DHRobot.tsx +0 -152
- package/src/components/robots/GenericRobot.tsx +0 -137
- package/src/components/robots/LinearAxis.tsx +0 -74
- package/src/components/robots/LinearAxisAnimator.tsx +0 -118
- package/src/components/robots/MotionGroupVisualizer.tsx +0 -73
- package/src/components/robots/Robot.tsx +0 -57
- package/src/components/robots/RobotAnimator.test.tsx +0 -98
- package/src/components/robots/RobotAnimator.tsx +0 -116
- package/src/components/robots/SupportedLinearAxis.tsx +0 -110
- package/src/components/robots/SupportedRobot.tsx +0 -111
- package/src/components/robots/ghostStyle.ts +0 -71
- package/src/components/robots/manufacturerHomePositions.ts +0 -76
- package/src/components/robots/robotModelLogic.ts +0 -158
- package/src/components/safetyBar/ControllerTypeIndicator.tsx +0 -79
- package/src/components/safetyBar/IndicatorWithExplanation.tsx +0 -137
- package/src/components/safetyBar/OperationModeIndicator.tsx +0 -98
- package/src/components/safetyBar/SafetyBar.tsx +0 -72
- package/src/components/safetyBar/SafetyStateIndicator.tsx +0 -163
- package/src/components/safetyBar/icons/controller-type-physical.svg +0 -1
- package/src/components/safetyBar/icons/controller-type-virtual.svg +0 -1
- package/src/components/safetyBar/icons/index.ts +0 -10
- package/src/components/safetyBar/icons/operation-mode-automatic.svg +0 -1
- package/src/components/safetyBar/icons/operation-mode-error.svg +0 -1
- package/src/components/safetyBar/icons/operation-mode-manual.svg +0 -1
- package/src/components/safetyBar/icons/safety-state-error.svg +0 -1
- package/src/components/safetyBar/icons/safety-state-estop.svg +0 -1
- package/src/components/safetyBar/icons/safety-state-manual-action-required.svg +0 -1
- package/src/components/safetyBar/icons/safety-state-normal.svg +0 -1
- package/src/components/safetyBar/icons/safety-state-stop.svg +0 -1
- package/src/components/utils/converters.ts +0 -90
- package/src/components/utils/errorHandling.test.ts +0 -41
- package/src/components/utils/errorHandling.ts +0 -38
- package/src/components/utils/hooks.tsx +0 -55
- package/src/components/utils/interpolation.test.ts +0 -1138
- package/src/components/utils/interpolation.ts +0 -380
- package/src/core.ts +0 -33
- package/src/declarations.d.ts +0 -10
- package/src/env.d.ts +0 -3
- package/src/externalizeComponent.tsx +0 -28
- package/src/i18n/config.ts +0 -26
- package/src/i18n/locales/de/translations.json +0 -89
- package/src/i18n/locales/en/translations.json +0 -90
- package/src/icons/DropdownArrowIcon.tsx +0 -12
- package/src/icons/axis-x.svg +0 -1
- package/src/icons/axis-y.svg +0 -1
- package/src/icons/axis-z.svg +0 -1
- package/src/icons/home.svg +0 -1
- package/src/icons/index.ts +0 -12
- package/src/icons/jog-minus.svg +0 -5
- package/src/icons/jog-plus.svg +0 -9
- package/src/icons/jogging.svg +0 -1
- package/src/icons/orientation-coord-system.svg +0 -1
- package/src/icons/orientation-tool.svg +0 -1
- package/src/icons/robot.svg +0 -1
- package/src/icons/rotation.svg +0 -3
- package/src/icons/wbLogo.svg +0 -1
- package/src/index.ts +0 -4
- package/src/lib/ConnectedMotionGroup.ts +0 -441
- package/src/lib/JoggerConnection.test.ts +0 -122
- package/src/lib/JoggerConnection.ts +0 -694
- package/src/lib/MotionStreamConnection.test.ts +0 -23
- package/src/lib/MotionStreamConnection.ts +0 -186
- package/src/lib/motionStateUpdate.test.ts +0 -28
- package/src/lib/motionStateUpdate.ts +0 -117
- package/src/test/consumer.test.ts +0 -257
- package/src/test/setup.ts +0 -111
- package/src/themes/createDarkTheme.ts +0 -343
- package/src/themes/createLightTheme.ts +0 -8
- package/src/themes/themeTypes.ts +0 -96
- package/src/themes/theming.ts +0 -29
- package/src/wb-icons.ts +0 -3
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import * as e from "react";
|
|
2
|
-
import { forwardRef as o } from "react";
|
|
3
|
-
const a = ({
|
|
4
|
-
title: l,
|
|
5
|
-
titleId: t,
|
|
6
|
-
...c
|
|
7
|
-
}, r) => /* @__PURE__ */ e.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: 15, height: 17, fill: "none", ref: r, "aria-labelledby": t, ...c }, l ? /* @__PURE__ */ e.createElement("title", { id: t }, l) : null, /* @__PURE__ */ e.createElement("path", { fill: "currentColor", d: "M12.9 7.667c-.133-.534-.533-1-1-1.134L10.367 6l-.4 1.267L11.5 7.8c.067 0 .133.067.133.2l1.067 4.867a.32.32 0 0 1-.133.4l-2.267 1.8c-.267.2-.333.666-.133.933s.666.333.933.133l2.267-1.8c.533-.4.733-1.133.6-1.733zM12.5 0H1.833A1.65 1.65 0 0 0 .167 1.667v1.4c0 .866.733 1.6 1.666 1.6h10.734c.866 0 1.6-.734 1.6-1.667V1.667A1.65 1.65 0 0 0 12.5 0M1.633 12.8 2.7 8c0-.067.067-.133.133-.2l1.534-.533-.4-1.2-1.534.466c-.533.2-.933.6-1 1.134L.367 12.533c-.134.667.066 1.334.6 1.734l2.266 1.8c.267.266.734.2.934-.067s.2-.733-.134-.933l-2.266-1.8c-.134-.134-.2-.267-.134-.467" })), i = o(a);
|
|
8
|
-
export {
|
|
9
|
-
i as default
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=orientation-tool.svg.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orientation-tool.svg.js","sources":["../../src/icons/orientation-tool.svg"],"sourcesContent":["import * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgOrientationTool = ({\n title,\n titleId,\n ...props\n}, ref) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 15, height: 17, fill: \"none\", ref, \"aria-labelledby\": titleId, ...props }, title ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, title) : null, /* @__PURE__ */ React.createElement(\"path\", { fill: \"currentColor\", d: \"M12.9 7.667c-.133-.534-.533-1-1-1.134L10.367 6l-.4 1.267L11.5 7.8c.067 0 .133.067.133.2l1.067 4.867a.32.32 0 0 1-.133.4l-2.267 1.8c-.267.2-.333.666-.133.933s.666.333.933.133l2.267-1.8c.533-.4.733-1.133.6-1.733zM12.5 0H1.833A1.65 1.65 0 0 0 .167 1.667v1.4c0 .866.733 1.6 1.666 1.6h10.734c.866 0 1.6-.734 1.6-1.667V1.667A1.65 1.65 0 0 0 12.5 0M1.633 12.8 2.7 8c0-.067.067-.133.133-.2l1.534-.533-.4-1.2-1.534.466c-.533.2-.933.6-1 1.134L.367 12.533c-.134.667.066 1.334.6 1.734l2.266 1.8c.267.266.734.2.934-.067s.2-.733-.134-.933l-2.266-1.8c-.134-.134-.2-.267-.134-.467\" }));\nconst ForwardRef = forwardRef(SvgOrientationTool);\nexport default ForwardRef;\n"],"names":["SvgOrientationTool","title","titleId","props","ref","React","ForwardRef","forwardRef"],"mappings":";;AAEA,MAAMA,IAAqB,CAAC;AAAA,EAC1B,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,MAAwB,gBAAAC,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,IAAI,QAAQ,IAAI,MAAM,QAAQ,KAAAD,GAAK,mBAAmBF,GAAS,GAAGC,EAAK,GAAIF,IAAwB,gBAAAI,EAAM,cAAc,SAAS,EAAE,IAAIH,EAAO,GAAID,CAAK,IAAI,MAAsB,gBAAAI,EAAM,cAAc,QAAQ,EAAE,MAAM,gBAAgB,GAAG,ujBAAsjB,CAAE,CAAC,GAC93BC,IAAaC,EAAWP,CAAkB;"}
|
package/dist/icons/robot.svg.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react");function a(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const l in e)if(l!=="default"){const r=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,r.get?r:{enumerable:!0,get:()=>e[l]})}}return t.default=e,Object.freeze(t)}const n=a(o),c=({title:e,titleId:t,...l},r)=>n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:18,height:18,fill:"none",ref:r,"aria-labelledby":t,...l},e?n.createElement("title",{id:t},e):null,n.createElement("path",{fill:"#38C6F4",fillRule:"evenodd",d:"M6.359 14.25v2.934h7.63v-3.521L10.196 9.87 9 8.674l.859-.859.337-.337.858-.858.565.565.631.63.565.565 1.196-1.195.543-.544 1.196-1.195-1.196-1.196-2.304-2.304L11.054.75 9.86 1.946 3.446 8.359 2.25 9.554l1.196 1.196 2.913 2.913zm1.69 0v1.244h4.249v-1.13L7.804 9.87 6.608 8.674l1.196-1.196L9.86 5.424l.007-.008-.543-.543-4.681 4.681 2.912 2.913.496.496v.113h2.124l1.174 1.174zm3.005-10.022-.294.294-.543-.543.837-.837 2.304 2.304-.543.543-.565-.565z",clipRule:"evenodd"})),u=o.forwardRef(c);exports.default=u;
|
|
2
|
-
//# sourceMappingURL=robot.svg.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"robot.svg.cjs","sources":["../../src/icons/robot.svg"],"sourcesContent":["import * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgRobot = ({\n title,\n titleId,\n ...props\n}, ref) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 18, height: 18, fill: \"none\", ref, \"aria-labelledby\": titleId, ...props }, title ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, title) : null, /* @__PURE__ */ React.createElement(\"path\", { fill: \"#38C6F4\", fillRule: \"evenodd\", d: \"M6.359 14.25v2.934h7.63v-3.521L10.196 9.87 9 8.674l.859-.859.337-.337.858-.858.565.565.631.63.565.565 1.196-1.195.543-.544 1.196-1.195-1.196-1.196-2.304-2.304L11.054.75 9.86 1.946 3.446 8.359 2.25 9.554l1.196 1.196 2.913 2.913zm1.69 0v1.244h4.249v-1.13L7.804 9.87 6.608 8.674l1.196-1.196L9.86 5.424l.007-.008-.543-.543-4.681 4.681 2.912 2.913.496.496v.113h2.124l1.174 1.174zm3.005-10.022-.294.294-.543-.543.837-.837 2.304 2.304-.543.543-.565-.565z\", clipRule: \"evenodd\" }));\nconst ForwardRef = forwardRef(SvgRobot);\nexport default ForwardRef;\n"],"names":["SvgRobot","title","titleId","props","ref","React","ForwardRef","forwardRef"],"mappings":"+ZAEMA,EAAW,CAAC,CAChB,MAAAC,EACA,QAAAC,EACA,GAAGC,CACL,EAAGC,IAAwBC,EAAM,cAAc,MAAO,CAAE,MAAO,6BAA8B,MAAO,GAAI,OAAQ,GAAI,KAAM,OAAQ,IAAAD,EAAK,kBAAmBF,EAAS,GAAGC,CAAK,EAAIF,EAAwBI,EAAM,cAAc,QAAS,CAAE,GAAIH,CAAO,EAAID,CAAK,EAAI,KAAsBI,EAAM,cAAc,OAAQ,CAAE,KAAM,UAAW,SAAU,UAAW,EAAG,kcAAmc,SAAU,SAAS,CAAE,CAAC,EAC9yBC,EAAaC,EAAAA,WAAWP,CAAQ"}
|
package/dist/icons/robot.svg.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import * as e from "react";
|
|
2
|
-
import { forwardRef as a } from "react";
|
|
3
|
-
const n = ({
|
|
4
|
-
title: l,
|
|
5
|
-
titleId: t,
|
|
6
|
-
...o
|
|
7
|
-
}, r) => /* @__PURE__ */ e.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: 18, height: 18, fill: "none", ref: r, "aria-labelledby": t, ...o }, l ? /* @__PURE__ */ e.createElement("title", { id: t }, l) : null, /* @__PURE__ */ e.createElement("path", { fill: "#38C6F4", fillRule: "evenodd", d: "M6.359 14.25v2.934h7.63v-3.521L10.196 9.87 9 8.674l.859-.859.337-.337.858-.858.565.565.631.63.565.565 1.196-1.195.543-.544 1.196-1.195-1.196-1.196-2.304-2.304L11.054.75 9.86 1.946 3.446 8.359 2.25 9.554l1.196 1.196 2.913 2.913zm1.69 0v1.244h4.249v-1.13L7.804 9.87 6.608 8.674l1.196-1.196L9.86 5.424l.007-.008-.543-.543-4.681 4.681 2.912 2.913.496.496v.113h2.124l1.174 1.174zm3.005-10.022-.294.294-.543-.543.837-.837 2.304 2.304-.543.543-.565-.565z", clipRule: "evenodd" })), m = a(n);
|
|
8
|
-
export {
|
|
9
|
-
m as default
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=robot.svg.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"robot.svg.js","sources":["../../src/icons/robot.svg"],"sourcesContent":["import * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgRobot = ({\n title,\n titleId,\n ...props\n}, ref) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 18, height: 18, fill: \"none\", ref, \"aria-labelledby\": titleId, ...props }, title ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, title) : null, /* @__PURE__ */ React.createElement(\"path\", { fill: \"#38C6F4\", fillRule: \"evenodd\", d: \"M6.359 14.25v2.934h7.63v-3.521L10.196 9.87 9 8.674l.859-.859.337-.337.858-.858.565.565.631.63.565.565 1.196-1.195.543-.544 1.196-1.195-1.196-1.196-2.304-2.304L11.054.75 9.86 1.946 3.446 8.359 2.25 9.554l1.196 1.196 2.913 2.913zm1.69 0v1.244h4.249v-1.13L7.804 9.87 6.608 8.674l1.196-1.196L9.86 5.424l.007-.008-.543-.543-4.681 4.681 2.912 2.913.496.496v.113h2.124l1.174 1.174zm3.005-10.022-.294.294-.543-.543.837-.837 2.304 2.304-.543.543-.565-.565z\", clipRule: \"evenodd\" }));\nconst ForwardRef = forwardRef(SvgRobot);\nexport default ForwardRef;\n"],"names":["SvgRobot","title","titleId","props","ref","React","ForwardRef","forwardRef"],"mappings":";;AAEA,MAAMA,IAAW,CAAC;AAAA,EAChB,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,MAAwB,gBAAAC,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,IAAI,QAAQ,IAAI,MAAM,QAAQ,KAAAD,GAAK,mBAAmBF,GAAS,GAAGC,EAAK,GAAIF,IAAwB,gBAAAI,EAAM,cAAc,SAAS,EAAE,IAAIH,EAAO,GAAID,CAAK,IAAI,MAAsB,gBAAAI,EAAM,cAAc,QAAQ,EAAE,MAAM,WAAW,UAAU,WAAW,GAAG,mcAAmc,UAAU,UAAS,CAAE,CAAC,GAC9yBC,IAAaC,EAAWP,CAAQ;"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react");function l(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const o=l(a),c=({title:e,titleId:t,...r},n)=>o.createElement("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",ref:n,"aria-labelledby":t,...r},e?o.createElement("title",{id:t},e):null,o.createElement("path",{d:"M8 16C5.76667 16 3.875 15.225 2.325 13.675C0.775 12.125 0 10.2333 0 8C0 5.76667 0.775 3.875 2.325 2.325C3.875 0.775 5.76667 0 8 0C9.15 0 10.25 0.2375 11.3 0.7125C12.35 1.1875 13.25 1.86667 14 2.75V0H16V7H9V5H13.2C12.6667 4.06667 11.9375 3.33333 11.0125 2.8C10.0875 2.26667 9.08333 2 8 2C6.33333 2 4.91667 2.58333 3.75 3.75C2.58333 4.91667 2 6.33333 2 8C2 9.66667 2.58333 11.0833 3.75 12.25C4.91667 13.4167 6.33333 14 8 14C9.28333 14 10.4417 13.6333 11.475 12.9C11.0583 14.1 12.5083 12.1667 11.475 12.9L12.9 14.325C11.4667 15.4417 9.83333 16 8 16Z",fill:"white"})),i=a.forwardRef(c);exports.default=i;
|
|
2
|
-
//# sourceMappingURL=rotation.svg.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rotation.svg.cjs","sources":["../../src/icons/rotation.svg"],"sourcesContent":["import * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgRotation = ({\n title,\n titleId,\n ...props\n}, ref) => /* @__PURE__ */ React.createElement(\"svg\", { width: 16, height: 16, viewBox: \"0 0 16 16\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ref, \"aria-labelledby\": titleId, ...props }, title ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, title) : null, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8 16C5.76667 16 3.875 15.225 2.325 13.675C0.775 12.125 0 10.2333 0 8C0 5.76667 0.775 3.875 2.325 2.325C3.875 0.775 5.76667 0 8 0C9.15 0 10.25 0.2375 11.3 0.7125C12.35 1.1875 13.25 1.86667 14 2.75V0H16V7H9V5H13.2C12.6667 4.06667 11.9375 3.33333 11.0125 2.8C10.0875 2.26667 9.08333 2 8 2C6.33333 2 4.91667 2.58333 3.75 3.75C2.58333 4.91667 2 6.33333 2 8C2 9.66667 2.58333 11.0833 3.75 12.25C4.91667 13.4167 6.33333 14 8 14C9.28333 14 10.4417 13.6333 11.475 12.9C11.0583 14.1 12.5083 12.1667 11.475 12.9L12.9 14.325C11.4667 15.4417 9.83333 16 8 16Z\", fill: \"white\" }));\nconst ForwardRef = forwardRef(SvgRotation);\nexport default ForwardRef;\n"],"names":["SvgRotation","title","titleId","props","ref","React","ForwardRef","forwardRef"],"mappings":"+ZAEMA,EAAc,CAAC,CACnB,MAAAC,EACA,QAAAC,EACA,GAAGC,CACL,EAAGC,IAAwBC,EAAM,cAAc,MAAO,CAAE,MAAO,GAAI,OAAQ,GAAI,QAAS,YAAa,KAAM,OAAQ,MAAO,6BAA8B,IAAAD,EAAK,kBAAmBF,EAAS,GAAGC,CAAK,EAAIF,EAAwBI,EAAM,cAAc,QAAS,CAAE,GAAIH,CAAO,EAAID,CAAK,EAAI,KAAsBI,EAAM,cAAc,OAAQ,CAAE,EAAG,qiBAAsiB,KAAM,OAAO,CAAE,CAAC,EAC33BC,EAAaC,EAAAA,WAAWP,CAAW"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import * as e from "react";
|
|
2
|
-
import { forwardRef as r } from "react";
|
|
3
|
-
const l = ({
|
|
4
|
-
title: t,
|
|
5
|
-
titleId: C,
|
|
6
|
-
...a
|
|
7
|
-
}, o) => /* @__PURE__ */ e.createElement("svg", { width: 16, height: 16, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ref: o, "aria-labelledby": C, ...a }, t ? /* @__PURE__ */ e.createElement("title", { id: C }, t) : null, /* @__PURE__ */ e.createElement("path", { d: "M8 16C5.76667 16 3.875 15.225 2.325 13.675C0.775 12.125 0 10.2333 0 8C0 5.76667 0.775 3.875 2.325 2.325C3.875 0.775 5.76667 0 8 0C9.15 0 10.25 0.2375 11.3 0.7125C12.35 1.1875 13.25 1.86667 14 2.75V0H16V7H9V5H13.2C12.6667 4.06667 11.9375 3.33333 11.0125 2.8C10.0875 2.26667 9.08333 2 8 2C6.33333 2 4.91667 2.58333 3.75 3.75C2.58333 4.91667 2 6.33333 2 8C2 9.66667 2.58333 11.0833 3.75 12.25C4.91667 13.4167 6.33333 14 8 14C9.28333 14 10.4417 13.6333 11.475 12.9C11.0583 14.1 12.5083 12.1667 11.475 12.9L12.9 14.325C11.4667 15.4417 9.83333 16 8 16Z", fill: "white" })), n = r(l);
|
|
8
|
-
export {
|
|
9
|
-
n as default
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=rotation.svg.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rotation.svg.js","sources":["../../src/icons/rotation.svg"],"sourcesContent":["import * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgRotation = ({\n title,\n titleId,\n ...props\n}, ref) => /* @__PURE__ */ React.createElement(\"svg\", { width: 16, height: 16, viewBox: \"0 0 16 16\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ref, \"aria-labelledby\": titleId, ...props }, title ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, title) : null, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8 16C5.76667 16 3.875 15.225 2.325 13.675C0.775 12.125 0 10.2333 0 8C0 5.76667 0.775 3.875 2.325 2.325C3.875 0.775 5.76667 0 8 0C9.15 0 10.25 0.2375 11.3 0.7125C12.35 1.1875 13.25 1.86667 14 2.75V0H16V7H9V5H13.2C12.6667 4.06667 11.9375 3.33333 11.0125 2.8C10.0875 2.26667 9.08333 2 8 2C6.33333 2 4.91667 2.58333 3.75 3.75C2.58333 4.91667 2 6.33333 2 8C2 9.66667 2.58333 11.0833 3.75 12.25C4.91667 13.4167 6.33333 14 8 14C9.28333 14 10.4417 13.6333 11.475 12.9C11.0583 14.1 12.5083 12.1667 11.475 12.9L12.9 14.325C11.4667 15.4417 9.83333 16 8 16Z\", fill: \"white\" }));\nconst ForwardRef = forwardRef(SvgRotation);\nexport default ForwardRef;\n"],"names":["SvgRotation","title","titleId","props","ref","React","ForwardRef","forwardRef"],"mappings":";;AAEA,MAAMA,IAAc,CAAC;AAAA,EACnB,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,MAAwB,gBAAAC,EAAM,cAAc,OAAO,EAAE,OAAO,IAAI,QAAQ,IAAI,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,KAAAD,GAAK,mBAAmBF,GAAS,GAAGC,EAAK,GAAIF,IAAwB,gBAAAI,EAAM,cAAc,SAAS,EAAE,IAAIH,EAAO,GAAID,CAAK,IAAI,MAAsB,gBAAAI,EAAM,cAAc,QAAQ,EAAE,GAAG,siBAAsiB,MAAM,QAAO,CAAE,CAAC,GAC33BC,IAAaC,EAAWP,CAAW;"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("react");function a(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const l=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,l.get?l:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const o=a(n),c=({title:e,titleId:t,...r},l)=>o.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",viewBox:"0 0 21 25",ref:l,"aria-labelledby":t,...r},e?o.createElement("title",{id:t},e):null,o.createElement("path",{d:"M0 8.256v5.96l17.023-9.745L14.42 0zM9.703 11.676 0 17.21v5.974l9.703-5.536zM11.889 19.413l-9.663 5.58h13.278v-5.58z"})),u=n.forwardRef(c);exports.default=u;
|
|
2
|
-
//# sourceMappingURL=wbLogo.svg.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wbLogo.svg.cjs","sources":["../../src/icons/wbLogo.svg"],"sourcesContent":["import * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgWbLogo = ({\n title,\n titleId,\n ...props\n}, ref) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\", viewBox: \"0 0 21 25\", ref, \"aria-labelledby\": titleId, ...props }, title ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, title) : null, /* @__PURE__ */ React.createElement(\"path\", { d: \"M0 8.256v5.96l17.023-9.745L14.42 0zM9.703 11.676 0 17.21v5.974l9.703-5.536zM11.889 19.413l-9.663 5.58h13.278v-5.58z\" }));\nconst ForwardRef = forwardRef(SvgWbLogo);\nexport default ForwardRef;\n"],"names":["SvgWbLogo","title","titleId","props","ref","React","ForwardRef","forwardRef"],"mappings":"+ZAEMA,EAAY,CAAC,CACjB,MAAAC,EACA,QAAAC,EACA,GAAGC,CACL,EAAGC,IAAwBC,EAAM,cAAc,MAAO,CAAE,MAAO,6BAA8B,KAAM,eAAgB,QAAS,YAAa,IAAAD,EAAK,kBAAmBF,EAAS,GAAGC,CAAK,EAAIF,EAAwBI,EAAM,cAAc,QAAS,CAAE,GAAIH,CAAO,EAAID,CAAK,EAAI,KAAsBI,EAAM,cAAc,OAAQ,CAAE,EAAG,qHAAqH,CAAE,CAAC,EAC9aC,EAAaC,EAAAA,WAAWP,CAAS"}
|
package/dist/icons/wbLogo.svg.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import * as e from "react";
|
|
2
|
-
import { forwardRef as a } from "react";
|
|
3
|
-
const m = ({
|
|
4
|
-
title: r,
|
|
5
|
-
titleId: l,
|
|
6
|
-
...o
|
|
7
|
-
}, t) => /* @__PURE__ */ e.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "currentColor", viewBox: "0 0 21 25", ref: t, "aria-labelledby": l, ...o }, r ? /* @__PURE__ */ e.createElement("title", { id: l }, r) : null, /* @__PURE__ */ e.createElement("path", { d: "M0 8.256v5.96l17.023-9.745L14.42 0zM9.703 11.676 0 17.21v5.974l9.703-5.536zM11.889 19.413l-9.663 5.58h13.278v-5.58z" })), c = a(m);
|
|
8
|
-
export {
|
|
9
|
-
c as default
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=wbLogo.svg.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wbLogo.svg.js","sources":["../../src/icons/wbLogo.svg"],"sourcesContent":["import * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgWbLogo = ({\n title,\n titleId,\n ...props\n}, ref) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\", viewBox: \"0 0 21 25\", ref, \"aria-labelledby\": titleId, ...props }, title ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, title) : null, /* @__PURE__ */ React.createElement(\"path\", { d: \"M0 8.256v5.96l17.023-9.745L14.42 0zM9.703 11.676 0 17.21v5.974l9.703-5.536zM11.889 19.413l-9.663 5.58h13.278v-5.58z\" }));\nconst ForwardRef = forwardRef(SvgWbLogo);\nexport default ForwardRef;\n"],"names":["SvgWbLogo","title","titleId","props","ref","React","ForwardRef","forwardRef"],"mappings":";;AAEA,MAAMA,IAAY,CAAC;AAAA,EACjB,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,MAAwB,gBAAAC,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,MAAM,gBAAgB,SAAS,aAAa,KAAAD,GAAK,mBAAmBF,GAAS,GAAGC,EAAK,GAAIF,IAAwB,gBAAAI,EAAM,cAAc,SAAS,EAAE,IAAIH,EAAO,GAAID,CAAK,IAAI,MAAsB,gBAAAI,EAAM,cAAc,QAAQ,EAAE,GAAG,sHAAqH,CAAE,CAAC,GAC9aC,IAAaC,EAAWP,CAAS;"}
|
package/dist/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,MAAM,CAAA;AACpB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const S=require("@wandelbots/nova-js"),a=require("mobx"),w=require("three"),A=require("./motionStateUpdate.cjs");function I(h){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(h){for(const o in h)if(o!=="default"){const n=Object.getOwnPropertyDescriptor(h,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:()=>h[o]})}}return t.default=h,Object.freeze(t)}const y=I(w),b=1e-4,R={a:0,d:0,alpha:0,theta:0,reverse_rotation_direction:!1};class p{constructor(t,o,n,r,e,s,l,g,c,_){this.nova=t,this.controller=o,this.motionGroup=n,this.initialMotionState=r,this.motionStateSocket=e,this.isVirtual=s,this.tcps=l,this.description=g,this.initialControllerState=c,this.controllerStateSocket=_,this.connectedJoggingSocket=null,this.joggingVelocity=10,this.activationState="inactive",this.rapidlyChangingMotionState=r,this.controllerState=c,_.addEventListener("message",d=>{var u;const i=(u=S.tryParseJson(d.data))==null?void 0:u.result;i&&a.runInAction(()=>{this.controllerState=i})}),e.addEventListener("message",d=>{var u;const i=(u=S.tryParseJson(d.data))==null?void 0:u.result;if(!i)throw new Error(`Failed to get motion state for ${this.motionGroupId}: ${d.data}`);A.jointValuesEqual(this.rapidlyChangingMotionState.joint_position,i.joint_position,b)||a.runInAction(()=>{this.rapidlyChangingMotionState.joint_position=i.joint_position}),A.tcpMotionEqual(this.rapidlyChangingMotionState,i,b)||a.runInAction(()=>{this.rapidlyChangingMotionState.tcp_pose=i.tcp_pose}),this.rapidlyChangingMotionState.standstill!==i.standstill&&a.runInAction(()=>{this.rapidlyChangingMotionState.standstill=i.standstill})}),a.makeAutoObservable(this)}static async connectMultiple(t,o){return Promise.all(o.map(n=>p.connect(t,n)))}static async connect(t,o){var O,T;const[n,r]=o.split("@"),e=await t.api.controller.getCurrentRobotControllerState(r),s=e==null?void 0:e.motion_groups.find(M=>M.motion_group===o);if(!e||!s)throw new Error(`Controller ${r} or motion group ${o} not found`);const l=t.openReconnectingWebsocket(`/controllers/${r}/motion-groups/${o}/state-stream`),g=await l.firstMessage(),c=(O=S.tryParseJson(g.data))==null?void 0:O.result;if(!c)throw new Error(`Unable to parse initial motion state message ${g.data}`);console.log(`Connected motion state websocket to motion group ${s.motion_group}. Initial state:
|
|
2
|
-
`,c);const d=(await t.api.controller.getRobotController(e.controller)).configuration.kind==="VirtualController",i=await t.api.motionGroup.getMotionGroupDescription(r,s.motion_group),u=Object.entries(i.tcps||{}).map(([M,E])=>({id:M,readable_name:E.name,position:E.pose.position,orientation:E.pose.orientation})),f=t.openReconnectingWebsocket(`/controllers/${e.controller}/state-stream?response_rate=1000`),v=await f.firstMessage(),m=(T=S.tryParseJson(v.data))==null?void 0:T.result;if(!m)throw new Error(`Unable to parse initial controller state message ${v.data}`);return console.log(`Connected controller state websocket to controller ${e.controller}. Initial state:
|
|
3
|
-
`,m),new p(t,e,s,c,l,d,u,i,m,f)}get motionGroupId(){return this.motionGroup.motion_group}get controllerId(){return this.controller.controller}get modelFromController(){return this.description.motion_group_model}get joggingVelocityRads(){return this.joggingVelocity*Math.PI/180}get joints(){return this.initialMotionState.joint_position.map((t,o)=>({index:o}))}get dhParameters(){if(this.description.dh_parameters!==void 0)return this.description.dh_parameters.map(t=>({...R,...t}))}get safetyZones(){return this.description.safety_zones}get mountingPosition(){var t,o,n;return this.description.mounting?[(((t=this.description.mounting.position)==null?void 0:t[0])||0)/1e3,(((o=this.description.mounting.position)==null?void 0:o[1])||0)/1e3,(((n=this.description.mounting.position)==null?void 0:n[2])||0)/1e3]:[0,0,0]}get mountingQuaternion(){var r,e,s,l,g,c;const t=new y.Vector3(((e=(r=this.description.mounting)==null?void 0:r.orientation)==null?void 0:e[0])||0,((l=(s=this.description.mounting)==null?void 0:s.orientation)==null?void 0:l[1])||0,((c=(g=this.description.mounting)==null?void 0:g.orientation)==null?void 0:c[2])||0),o=t.length(),n=t.normalize();return new y.Quaternion().setFromAxisAngle(n,o)}get isEstopActive(){return["SAFETY_STATE_ROBOT_EMERGENCY_STOP","SAFETY_STATE_DEVICE_EMERGENCY_STOP"].includes(this.controllerState.safety_state)}get isMoveableSafetyState(){return["SAFETY_STATE_NORMAL","SAFETY_STATE_REDUCED"].includes(this.controllerState.safety_state)}get isMoveableOperationMode(){return["OPERATION_MODE_AUTO","OPERATION_MODE_MANUAL","OPERATION_MODE_MANUAL_T1","OPERATION_MODE_MANUAL_T2"].includes(this.controllerState.operation_mode)}get canBeMoved(){return this.isMoveableSafetyState&&this.isMoveableOperationMode&&this.activationState==="active"}async deactivate(){if(this.activationState!=="active"){console.error("Tried to deactivate while already deactivating");return}a.runInAction(()=>{this.activationState="deactivating"});try{await this.nova.api.controller.setDefaultMode(this.controllerId,"ROBOT_SYSTEM_MODE_MONITOR"),a.runInAction(()=>{this.activationState="inactive"})}catch(t){throw a.runInAction(()=>{this.activationState="active"}),t}}async activate(){if(this.activationState!=="inactive"){console.error("Tried to activate while already activating");return}a.runInAction(()=>{this.activationState="activating"});try{await this.nova.api.controller.setDefaultMode(this.controllerId,"ROBOT_SYSTEM_MODE_CONTROL"),a.runInAction(()=>{this.activationState="active"})}catch(t){throw a.runInAction(()=>{this.activationState="inactive"}),t}}toggleActivation(){this.activationState==="inactive"?this.activate():this.activationState==="active"&&this.deactivate()}dispose(){this.motionStateSocket.close(),this.connectedJoggingSocket&&this.connectedJoggingSocket.close()}setJoggingVelocity(t){this.joggingVelocity=t}}exports.ConnectedMotionGroup=p;exports.default=p;
|
|
4
|
-
//# sourceMappingURL=ConnectedMotionGroup.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectedMotionGroup.cjs","sources":["../../src/lib/ConnectedMotionGroup.ts"],"sourcesContent":["import {\n tryParseJson,\n type AutoReconnectingWebsocket,\n} from \"@wandelbots/nova-js\"\nimport type {\n DHParameter,\n MotionGroupDescription,\n MotionGroupState,\n NovaClient,\n OperationMode,\n RobotControllerState,\n SafetyStateType,\n} from \"@wandelbots/nova-js/v2\"\nimport { makeAutoObservable, runInAction } from \"mobx\"\nimport * as THREE from \"three\"\nimport type { Vector3Simple } from \"./JoggerConnection\"\nimport { jointValuesEqual, tcpMotionEqual } from \"./motionStateUpdate\"\n\nconst MOTION_DELTA_THRESHOLD = 0.0001\n\nexport type RobotTcpLike = {\n id: string\n readable_name: string\n position: Vector3Simple\n orientation: Vector3Simple\n}\n\nexport type MotionGroupOption = {\n selectionId: string\n}\n\nconst EMPTY_DH_PARAMETER: DHParameter = {\n a: 0,\n d: 0,\n alpha: 0,\n theta: 0,\n reverse_rotation_direction: false,\n}\n\n/**\n * Store representing the current state of a connected motion group.\n * API v2 version, not used yet in the components.\n */\nexport class ConnectedMotionGroup {\n static async connectMultiple(nova: NovaClient, motionGroupIds: string[]) {\n return Promise.all(\n motionGroupIds.map((motionGroupId) =>\n ConnectedMotionGroup.connect(nova, motionGroupId),\n ),\n )\n }\n\n static async connect(nova: NovaClient, motionGroupId: string) {\n const [_motionGroupIndex, controllerId] = motionGroupId.split(\"@\") as [\n string,\n string,\n ]\n\n const controller =\n await nova.api.controller.getCurrentRobotControllerState(controllerId)\n const motionGroup = controller?.motion_groups.find(\n (mg) => mg.motion_group === motionGroupId,\n )\n if (!controller || !motionGroup) {\n throw new Error(\n `Controller ${controllerId} or motion group ${motionGroupId} not found`,\n )\n }\n\n const motionStateSocket = nova.openReconnectingWebsocket(\n `/controllers/${controllerId}/motion-groups/${motionGroupId}/state-stream`,\n )\n\n // Wait for the first message to get the initial state\n const firstMessage = await motionStateSocket.firstMessage()\n const initialMotionState = tryParseJson(firstMessage.data)\n ?.result as MotionGroupState\n\n if (!initialMotionState) {\n throw new Error(\n `Unable to parse initial motion state message ${firstMessage.data}`,\n )\n }\n\n console.log(\n `Connected motion state websocket to motion group ${motionGroup.motion_group}. Initial state:\\n `,\n initialMotionState,\n )\n\n // Check if robot is virtual or physical\n const config = await nova.api.controller.getRobotController(\n controller.controller,\n )\n const isVirtual = config.configuration.kind === \"VirtualController\"\n\n // If there's a configured mounting, we need it to show the right\n // position of the robot model\n const description = await nova.api.motionGroup.getMotionGroupDescription(\n controllerId,\n motionGroup.motion_group,\n )\n\n // Find out what TCPs this motion group has (we need it for jogging)\n // There are converted into a RobotTcpLike for easier use in the UI\n const tcps: RobotTcpLike[] = Object.entries(description.tcps || {}).map(\n ([id, tcp]) => ({\n id,\n readable_name: tcp.name,\n position: tcp.pose.position as Vector3Simple,\n orientation: tcp.pose.orientation as Vector3Simple,\n }),\n )\n\n // Open the websocket to monitor controller state for e.g. e-stop\n const controllerStateSocket = nova.openReconnectingWebsocket(\n `/controllers/${controller.controller}/state-stream?response_rate=1000`,\n )\n\n // Wait for the first message to get the initial state\n const firstControllerMessage = await controllerStateSocket.firstMessage()\n const initialControllerState = tryParseJson(firstControllerMessage.data)\n ?.result as RobotControllerState\n\n if (!initialControllerState) {\n throw new Error(\n `Unable to parse initial controller state message ${firstControllerMessage.data}`,\n )\n }\n\n console.log(\n `Connected controller state websocket to controller ${controller.controller}. Initial state:\\n `,\n initialControllerState,\n )\n\n return new ConnectedMotionGroup(\n nova,\n controller,\n motionGroup,\n initialMotionState,\n motionStateSocket,\n isVirtual,\n tcps,\n description,\n initialControllerState,\n controllerStateSocket,\n )\n }\n\n connectedJoggingSocket: WebSocket | null = null\n // biome-ignore lint/suspicious/noExplicitAny: legacy code\n planData: any | null // tmp\n joggingVelocity: number = 10\n\n // Not mobx-observable as this changes very fast; should be observed\n // using animation frames\n rapidlyChangingMotionState: MotionGroupState\n\n // Response rate on the websocket should be a bit slower on this one since\n // we don't use the motion data\n controllerState: RobotControllerState\n\n /**\n * Reflects activation state of the motion group / robot servos. The\n * movement controls in the UI should only be enabled in the \"active\" state\n */\n activationState: \"inactive\" | \"activating\" | \"deactivating\" | \"active\" =\n \"inactive\"\n\n constructor(\n readonly nova: NovaClient,\n readonly controller: RobotControllerState,\n readonly motionGroup: MotionGroupState,\n readonly initialMotionState: MotionGroupState,\n readonly motionStateSocket: AutoReconnectingWebsocket,\n readonly isVirtual: boolean,\n readonly tcps: RobotTcpLike[],\n readonly description: MotionGroupDescription,\n readonly initialControllerState: RobotControllerState,\n readonly controllerStateSocket: AutoReconnectingWebsocket,\n ) {\n this.rapidlyChangingMotionState = initialMotionState\n this.controllerState = initialControllerState\n\n // Track controller state updates (e.g. safety state and operation mode)\n controllerStateSocket.addEventListener(\"message\", (event) => {\n const data = tryParseJson(event.data)?.result\n\n if (!data) {\n return\n }\n\n runInAction(() => {\n this.controllerState = data\n })\n })\n\n motionStateSocket.addEventListener(\"message\", (event) => {\n const latestMotionState = tryParseJson(event.data)?.result as\n | MotionGroupState\n | undefined\n\n if (!latestMotionState) {\n throw new Error(\n `Failed to get motion state for ${this.motionGroupId}: ${event.data}`,\n )\n }\n\n // handle joint position changes\n if (\n !jointValuesEqual(\n this.rapidlyChangingMotionState.joint_position,\n latestMotionState.joint_position,\n MOTION_DELTA_THRESHOLD,\n )\n ) {\n runInAction(() => {\n this.rapidlyChangingMotionState.joint_position =\n latestMotionState.joint_position\n })\n }\n\n // handle tcp pose changes\n if (\n !tcpMotionEqual(\n this.rapidlyChangingMotionState,\n latestMotionState,\n MOTION_DELTA_THRESHOLD,\n )\n ) {\n runInAction(() => {\n this.rapidlyChangingMotionState.tcp_pose = latestMotionState.tcp_pose\n })\n }\n\n // handle standstill changes\n if (\n this.rapidlyChangingMotionState.standstill !==\n latestMotionState.standstill\n ) {\n runInAction(() => {\n this.rapidlyChangingMotionState.standstill =\n latestMotionState.standstill\n })\n }\n })\n makeAutoObservable(this)\n }\n\n get motionGroupId() {\n return this.motionGroup.motion_group\n }\n\n get controllerId() {\n return this.controller.controller\n }\n\n get modelFromController() {\n return this.description.motion_group_model\n }\n\n /** Jogging velocity in radians for rotation and joint movement */\n get joggingVelocityRads() {\n return (this.joggingVelocity * Math.PI) / 180\n }\n\n get joints() {\n return this.initialMotionState.joint_position.map((_, i) => {\n return {\n index: i,\n }\n })\n }\n\n // Please note that API v2 omits 0 values\n get dhParameters() {\n if (this.description.dh_parameters === undefined) {\n return undefined\n }\n\n return this.description.dh_parameters.map((dh_param) => ({\n ...EMPTY_DH_PARAMETER,\n ...dh_param,\n }))\n }\n\n get safetyZones() {\n return this.description.safety_zones\n }\n\n /** Gets the robot mounting position offset in 3D viz coordinates */\n get mountingPosition(): [number, number, number] {\n if (!this.description.mounting) {\n return [0, 0, 0]\n }\n\n return [\n (this.description.mounting.position?.[0] || 0) / 1000,\n (this.description.mounting.position?.[1] || 0) / 1000,\n (this.description.mounting.position?.[2] || 0) / 1000,\n ]\n }\n\n /** Gets the robot mounting position rotation in 3D viz coordinates */\n get mountingQuaternion() {\n const rotationVector = new THREE.Vector3(\n this.description.mounting?.orientation?.[0] || 0,\n this.description.mounting?.orientation?.[1] || 0,\n this.description.mounting?.orientation?.[2] || 0,\n )\n\n const magnitude = rotationVector.length()\n const axis = rotationVector.normalize()\n\n return new THREE.Quaternion().setFromAxisAngle(axis, magnitude)\n }\n\n /**\n * Whether the controller is currently in a safety state\n * corresponding to an emergency stop\n */\n get isEstopActive() {\n const estopStates: SafetyStateType[] = [\n \"SAFETY_STATE_ROBOT_EMERGENCY_STOP\",\n \"SAFETY_STATE_DEVICE_EMERGENCY_STOP\",\n ]\n\n return estopStates.includes(this.controllerState.safety_state)\n }\n\n /**\n * Whether the controller is in a safety state\n * that may be non-functional for robot pad purposes\n */\n get isMoveableSafetyState() {\n const goodSafetyStates: SafetyStateType[] = [\n \"SAFETY_STATE_NORMAL\",\n \"SAFETY_STATE_REDUCED\",\n ]\n\n return goodSafetyStates.includes(this.controllerState.safety_state)\n }\n\n /**\n * Whether the controller is in an operation mode that allows movement\n */\n get isMoveableOperationMode() {\n const goodOperationModes: OperationMode[] = [\n \"OPERATION_MODE_AUTO\",\n \"OPERATION_MODE_MANUAL\",\n \"OPERATION_MODE_MANUAL_T1\",\n \"OPERATION_MODE_MANUAL_T2\",\n ]\n\n return goodOperationModes.includes(this.controllerState.operation_mode)\n }\n\n /**\n * Whether the robot is currently active and can be moved, based on the\n * safety state, operation mode and servo toggle activation state.\n */\n get canBeMoved() {\n return (\n this.isMoveableSafetyState &&\n this.isMoveableOperationMode &&\n this.activationState === \"active\"\n )\n }\n\n async deactivate() {\n if (this.activationState !== \"active\") {\n console.error(\"Tried to deactivate while already deactivating\")\n return\n }\n\n runInAction(() => {\n this.activationState = \"deactivating\"\n })\n\n try {\n await this.nova.api.controller.setDefaultMode(\n this.controllerId,\n \"ROBOT_SYSTEM_MODE_MONITOR\",\n )\n\n runInAction(() => {\n this.activationState = \"inactive\"\n })\n } catch (err) {\n runInAction(() => {\n this.activationState = \"active\"\n })\n throw err\n }\n }\n\n async activate() {\n if (this.activationState !== \"inactive\") {\n console.error(\"Tried to activate while already activating\")\n return\n }\n\n runInAction(() => {\n this.activationState = \"activating\"\n })\n\n try {\n await this.nova.api.controller.setDefaultMode(\n this.controllerId,\n \"ROBOT_SYSTEM_MODE_CONTROL\",\n )\n\n runInAction(() => {\n this.activationState = \"active\"\n })\n } catch (err) {\n runInAction(() => {\n this.activationState = \"inactive\"\n })\n throw err\n }\n }\n\n toggleActivation() {\n if (this.activationState === \"inactive\") {\n this.activate()\n } else if (this.activationState === \"active\") {\n this.deactivate()\n }\n }\n\n dispose() {\n this.motionStateSocket.close()\n if (this.connectedJoggingSocket) this.connectedJoggingSocket.close()\n }\n\n setJoggingVelocity(velocity: number) {\n this.joggingVelocity = velocity\n }\n}\n\nexport default ConnectedMotionGroup\n"],"names":["MOTION_DELTA_THRESHOLD","EMPTY_DH_PARAMETER","ConnectedMotionGroup","nova","controller","motionGroup","initialMotionState","motionStateSocket","isVirtual","tcps","description","initialControllerState","controllerStateSocket","event","data","tryParseJson","runInAction","latestMotionState","jointValuesEqual","tcpMotionEqual","makeAutoObservable","motionGroupIds","motionGroupId","_motionGroupIndex","controllerId","mg","firstMessage","id","tcp","firstControllerMessage","_","i","dh_param","_a","_b","_c","rotationVector","THREE","_d","_f","_e","magnitude","axis","err","velocity"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectedMotionGroup.d.ts","sourceRoot":"","sources":["../../src/lib/ConnectedMotionGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAEV,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,EAEV,oBAAoB,EAErB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAKvD,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,aAAa,CAAA;IACvB,WAAW,EAAE,aAAa,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAUD;;;GAGG;AACH,qBAAa,oBAAoB;IA8H7B,QAAQ,CAAC,IAAI,EAAE,UAAU;IACzB,QAAQ,CAAC,UAAU,EAAE,oBAAoB;IACzC,QAAQ,CAAC,WAAW,EAAE,gBAAgB;IACtC,QAAQ,CAAC,kBAAkB,EAAE,gBAAgB;IAC7C,QAAQ,CAAC,iBAAiB,EAAE,yBAAyB;IACrD,QAAQ,CAAC,SAAS,EAAE,OAAO;IAC3B,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE;IAC7B,QAAQ,CAAC,WAAW,EAAE,sBAAsB;IAC5C,QAAQ,CAAC,sBAAsB,EAAE,oBAAoB;IACrD,QAAQ,CAAC,qBAAqB,EAAE,yBAAyB;WAtI9C,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE;WAQ1D,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM;IAgG5D,sBAAsB,EAAE,SAAS,GAAG,IAAI,CAAO;IAE/C,QAAQ,EAAE,GAAG,GAAG,IAAI,CAAA;IACpB,eAAe,EAAE,MAAM,CAAK;IAI5B,0BAA0B,EAAE,gBAAgB,CAAA;IAI5C,eAAe,EAAE,oBAAoB,CAAA;IAErC;;;OAGG;IACH,eAAe,EAAE,UAAU,GAAG,YAAY,GAAG,cAAc,GAAG,QAAQ,CAC1D;gBAGD,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,oBAAoB,EAChC,WAAW,EAAE,gBAAgB,EAC7B,kBAAkB,EAAE,gBAAgB,EACpC,iBAAiB,EAAE,yBAAyB,EAC5C,SAAS,EAAE,OAAO,EAClB,IAAI,EAAE,YAAY,EAAE,EACpB,WAAW,EAAE,sBAAsB,EACnC,sBAAsB,EAAE,oBAAoB,EAC5C,qBAAqB,EAAE,yBAAyB;IAsE3D,IAAI,aAAa,WAEhB;IAED,IAAI,YAAY,WAEf;IAED,IAAI,mBAAmB,WAEtB;IAED,kEAAkE;IAClE,IAAI,mBAAmB,WAEtB;IAED,IAAI,MAAM;;QAMT;IAGD,IAAI,YAAY;;;;;;;oBASf;IAED,IAAI,WAAW;;kBAEd;IAED,oEAAoE;IACpE,IAAI,gBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAU/C;IAED,sEAAsE;IACtE,IAAI,kBAAkB,qBAWrB;IAED;;;OAGG;IACH,IAAI,aAAa,YAOhB;IAED;;;OAGG;IACH,IAAI,qBAAqB,YAOxB;IAED;;OAEG;IACH,IAAI,uBAAuB,YAS1B;IAED;;;OAGG;IACH,IAAI,UAAU,YAMb;IAEK,UAAU;IA2BV,QAAQ;IA2Bd,gBAAgB;IAQhB,OAAO;IAKP,kBAAkB,CAAC,QAAQ,EAAE,MAAM;CAGpC;AAED,eAAe,oBAAoB,CAAA"}
|
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
import { tryParseJson as p } from "@wandelbots/nova-js";
|
|
2
|
-
import { runInAction as a, makeAutoObservable as A } from "mobx";
|
|
3
|
-
import * as T from "three";
|
|
4
|
-
import { jointValuesEqual as w, tcpMotionEqual as R } from "./motionStateUpdate.js";
|
|
5
|
-
const y = 1e-4, C = {
|
|
6
|
-
a: 0,
|
|
7
|
-
d: 0,
|
|
8
|
-
alpha: 0,
|
|
9
|
-
theta: 0,
|
|
10
|
-
reverse_rotation_direction: !1
|
|
11
|
-
};
|
|
12
|
-
class E {
|
|
13
|
-
constructor(t, o, s, n, i, r, l, g, c, u) {
|
|
14
|
-
this.nova = t, this.controller = o, this.motionGroup = s, this.initialMotionState = n, this.motionStateSocket = i, this.isVirtual = r, this.tcps = l, this.description = g, this.initialControllerState = c, this.controllerStateSocket = u, this.connectedJoggingSocket = null, this.joggingVelocity = 10, this.activationState = "inactive", this.rapidlyChangingMotionState = n, this.controllerState = c, u.addEventListener("message", (d) => {
|
|
15
|
-
var h;
|
|
16
|
-
const e = (h = p(d.data)) == null ? void 0 : h.result;
|
|
17
|
-
e && a(() => {
|
|
18
|
-
this.controllerState = e;
|
|
19
|
-
});
|
|
20
|
-
}), i.addEventListener("message", (d) => {
|
|
21
|
-
var h;
|
|
22
|
-
const e = (h = p(d.data)) == null ? void 0 : h.result;
|
|
23
|
-
if (!e)
|
|
24
|
-
throw new Error(
|
|
25
|
-
`Failed to get motion state for ${this.motionGroupId}: ${d.data}`
|
|
26
|
-
);
|
|
27
|
-
w(
|
|
28
|
-
this.rapidlyChangingMotionState.joint_position,
|
|
29
|
-
e.joint_position,
|
|
30
|
-
y
|
|
31
|
-
) || a(() => {
|
|
32
|
-
this.rapidlyChangingMotionState.joint_position = e.joint_position;
|
|
33
|
-
}), R(
|
|
34
|
-
this.rapidlyChangingMotionState,
|
|
35
|
-
e,
|
|
36
|
-
y
|
|
37
|
-
) || a(() => {
|
|
38
|
-
this.rapidlyChangingMotionState.tcp_pose = e.tcp_pose;
|
|
39
|
-
}), this.rapidlyChangingMotionState.standstill !== e.standstill && a(() => {
|
|
40
|
-
this.rapidlyChangingMotionState.standstill = e.standstill;
|
|
41
|
-
});
|
|
42
|
-
}), A(this);
|
|
43
|
-
}
|
|
44
|
-
static async connectMultiple(t, o) {
|
|
45
|
-
return Promise.all(
|
|
46
|
-
o.map(
|
|
47
|
-
(s) => E.connect(t, s)
|
|
48
|
-
)
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
static async connect(t, o) {
|
|
52
|
-
var f, O;
|
|
53
|
-
const [s, n] = o.split("@"), i = await t.api.controller.getCurrentRobotControllerState(n), r = i == null ? void 0 : i.motion_groups.find(
|
|
54
|
-
(m) => m.motion_group === o
|
|
55
|
-
);
|
|
56
|
-
if (!i || !r)
|
|
57
|
-
throw new Error(
|
|
58
|
-
`Controller ${n} or motion group ${o} not found`
|
|
59
|
-
);
|
|
60
|
-
const l = t.openReconnectingWebsocket(
|
|
61
|
-
`/controllers/${n}/motion-groups/${o}/state-stream`
|
|
62
|
-
), g = await l.firstMessage(), c = (f = p(g.data)) == null ? void 0 : f.result;
|
|
63
|
-
if (!c)
|
|
64
|
-
throw new Error(
|
|
65
|
-
`Unable to parse initial motion state message ${g.data}`
|
|
66
|
-
);
|
|
67
|
-
console.log(
|
|
68
|
-
`Connected motion state websocket to motion group ${r.motion_group}. Initial state:
|
|
69
|
-
`,
|
|
70
|
-
c
|
|
71
|
-
);
|
|
72
|
-
const d = (await t.api.controller.getRobotController(
|
|
73
|
-
i.controller
|
|
74
|
-
)).configuration.kind === "VirtualController", e = await t.api.motionGroup.getMotionGroupDescription(
|
|
75
|
-
n,
|
|
76
|
-
r.motion_group
|
|
77
|
-
), h = Object.entries(e.tcps || {}).map(
|
|
78
|
-
([m, _]) => ({
|
|
79
|
-
id: m,
|
|
80
|
-
readable_name: _.name,
|
|
81
|
-
position: _.pose.position,
|
|
82
|
-
orientation: _.pose.orientation
|
|
83
|
-
})
|
|
84
|
-
), M = t.openReconnectingWebsocket(
|
|
85
|
-
`/controllers/${i.controller}/state-stream?response_rate=1000`
|
|
86
|
-
), v = await M.firstMessage(), S = (O = p(v.data)) == null ? void 0 : O.result;
|
|
87
|
-
if (!S)
|
|
88
|
-
throw new Error(
|
|
89
|
-
`Unable to parse initial controller state message ${v.data}`
|
|
90
|
-
);
|
|
91
|
-
return console.log(
|
|
92
|
-
`Connected controller state websocket to controller ${i.controller}. Initial state:
|
|
93
|
-
`,
|
|
94
|
-
S
|
|
95
|
-
), new E(
|
|
96
|
-
t,
|
|
97
|
-
i,
|
|
98
|
-
r,
|
|
99
|
-
c,
|
|
100
|
-
l,
|
|
101
|
-
d,
|
|
102
|
-
h,
|
|
103
|
-
e,
|
|
104
|
-
S,
|
|
105
|
-
M
|
|
106
|
-
);
|
|
107
|
-
}
|
|
108
|
-
get motionGroupId() {
|
|
109
|
-
return this.motionGroup.motion_group;
|
|
110
|
-
}
|
|
111
|
-
get controllerId() {
|
|
112
|
-
return this.controller.controller;
|
|
113
|
-
}
|
|
114
|
-
get modelFromController() {
|
|
115
|
-
return this.description.motion_group_model;
|
|
116
|
-
}
|
|
117
|
-
/** Jogging velocity in radians for rotation and joint movement */
|
|
118
|
-
get joggingVelocityRads() {
|
|
119
|
-
return this.joggingVelocity * Math.PI / 180;
|
|
120
|
-
}
|
|
121
|
-
get joints() {
|
|
122
|
-
return this.initialMotionState.joint_position.map((t, o) => ({
|
|
123
|
-
index: o
|
|
124
|
-
}));
|
|
125
|
-
}
|
|
126
|
-
// Please note that API v2 omits 0 values
|
|
127
|
-
get dhParameters() {
|
|
128
|
-
if (this.description.dh_parameters !== void 0)
|
|
129
|
-
return this.description.dh_parameters.map((t) => ({
|
|
130
|
-
...C,
|
|
131
|
-
...t
|
|
132
|
-
}));
|
|
133
|
-
}
|
|
134
|
-
get safetyZones() {
|
|
135
|
-
return this.description.safety_zones;
|
|
136
|
-
}
|
|
137
|
-
/** Gets the robot mounting position offset in 3D viz coordinates */
|
|
138
|
-
get mountingPosition() {
|
|
139
|
-
var t, o, s;
|
|
140
|
-
return this.description.mounting ? [
|
|
141
|
-
(((t = this.description.mounting.position) == null ? void 0 : t[0]) || 0) / 1e3,
|
|
142
|
-
(((o = this.description.mounting.position) == null ? void 0 : o[1]) || 0) / 1e3,
|
|
143
|
-
(((s = this.description.mounting.position) == null ? void 0 : s[2]) || 0) / 1e3
|
|
144
|
-
] : [0, 0, 0];
|
|
145
|
-
}
|
|
146
|
-
/** Gets the robot mounting position rotation in 3D viz coordinates */
|
|
147
|
-
get mountingQuaternion() {
|
|
148
|
-
var n, i, r, l, g, c;
|
|
149
|
-
const t = new T.Vector3(
|
|
150
|
-
((i = (n = this.description.mounting) == null ? void 0 : n.orientation) == null ? void 0 : i[0]) || 0,
|
|
151
|
-
((l = (r = this.description.mounting) == null ? void 0 : r.orientation) == null ? void 0 : l[1]) || 0,
|
|
152
|
-
((c = (g = this.description.mounting) == null ? void 0 : g.orientation) == null ? void 0 : c[2]) || 0
|
|
153
|
-
), o = t.length(), s = t.normalize();
|
|
154
|
-
return new T.Quaternion().setFromAxisAngle(s, o);
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Whether the controller is currently in a safety state
|
|
158
|
-
* corresponding to an emergency stop
|
|
159
|
-
*/
|
|
160
|
-
get isEstopActive() {
|
|
161
|
-
return [
|
|
162
|
-
"SAFETY_STATE_ROBOT_EMERGENCY_STOP",
|
|
163
|
-
"SAFETY_STATE_DEVICE_EMERGENCY_STOP"
|
|
164
|
-
].includes(this.controllerState.safety_state);
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Whether the controller is in a safety state
|
|
168
|
-
* that may be non-functional for robot pad purposes
|
|
169
|
-
*/
|
|
170
|
-
get isMoveableSafetyState() {
|
|
171
|
-
return [
|
|
172
|
-
"SAFETY_STATE_NORMAL",
|
|
173
|
-
"SAFETY_STATE_REDUCED"
|
|
174
|
-
].includes(this.controllerState.safety_state);
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Whether the controller is in an operation mode that allows movement
|
|
178
|
-
*/
|
|
179
|
-
get isMoveableOperationMode() {
|
|
180
|
-
return [
|
|
181
|
-
"OPERATION_MODE_AUTO",
|
|
182
|
-
"OPERATION_MODE_MANUAL",
|
|
183
|
-
"OPERATION_MODE_MANUAL_T1",
|
|
184
|
-
"OPERATION_MODE_MANUAL_T2"
|
|
185
|
-
].includes(this.controllerState.operation_mode);
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Whether the robot is currently active and can be moved, based on the
|
|
189
|
-
* safety state, operation mode and servo toggle activation state.
|
|
190
|
-
*/
|
|
191
|
-
get canBeMoved() {
|
|
192
|
-
return this.isMoveableSafetyState && this.isMoveableOperationMode && this.activationState === "active";
|
|
193
|
-
}
|
|
194
|
-
async deactivate() {
|
|
195
|
-
if (this.activationState !== "active") {
|
|
196
|
-
console.error("Tried to deactivate while already deactivating");
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
a(() => {
|
|
200
|
-
this.activationState = "deactivating";
|
|
201
|
-
});
|
|
202
|
-
try {
|
|
203
|
-
await this.nova.api.controller.setDefaultMode(
|
|
204
|
-
this.controllerId,
|
|
205
|
-
"ROBOT_SYSTEM_MODE_MONITOR"
|
|
206
|
-
), a(() => {
|
|
207
|
-
this.activationState = "inactive";
|
|
208
|
-
});
|
|
209
|
-
} catch (t) {
|
|
210
|
-
throw a(() => {
|
|
211
|
-
this.activationState = "active";
|
|
212
|
-
}), t;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
async activate() {
|
|
216
|
-
if (this.activationState !== "inactive") {
|
|
217
|
-
console.error("Tried to activate while already activating");
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
a(() => {
|
|
221
|
-
this.activationState = "activating";
|
|
222
|
-
});
|
|
223
|
-
try {
|
|
224
|
-
await this.nova.api.controller.setDefaultMode(
|
|
225
|
-
this.controllerId,
|
|
226
|
-
"ROBOT_SYSTEM_MODE_CONTROL"
|
|
227
|
-
), a(() => {
|
|
228
|
-
this.activationState = "active";
|
|
229
|
-
});
|
|
230
|
-
} catch (t) {
|
|
231
|
-
throw a(() => {
|
|
232
|
-
this.activationState = "inactive";
|
|
233
|
-
}), t;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
toggleActivation() {
|
|
237
|
-
this.activationState === "inactive" ? this.activate() : this.activationState === "active" && this.deactivate();
|
|
238
|
-
}
|
|
239
|
-
dispose() {
|
|
240
|
-
this.motionStateSocket.close(), this.connectedJoggingSocket && this.connectedJoggingSocket.close();
|
|
241
|
-
}
|
|
242
|
-
setJoggingVelocity(t) {
|
|
243
|
-
this.joggingVelocity = t;
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
export {
|
|
247
|
-
E as ConnectedMotionGroup,
|
|
248
|
-
E as default
|
|
249
|
-
};
|
|
250
|
-
//# sourceMappingURL=ConnectedMotionGroup.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectedMotionGroup.js","sources":["../../src/lib/ConnectedMotionGroup.ts"],"sourcesContent":["import {\n tryParseJson,\n type AutoReconnectingWebsocket,\n} from \"@wandelbots/nova-js\"\nimport type {\n DHParameter,\n MotionGroupDescription,\n MotionGroupState,\n NovaClient,\n OperationMode,\n RobotControllerState,\n SafetyStateType,\n} from \"@wandelbots/nova-js/v2\"\nimport { makeAutoObservable, runInAction } from \"mobx\"\nimport * as THREE from \"three\"\nimport type { Vector3Simple } from \"./JoggerConnection\"\nimport { jointValuesEqual, tcpMotionEqual } from \"./motionStateUpdate\"\n\nconst MOTION_DELTA_THRESHOLD = 0.0001\n\nexport type RobotTcpLike = {\n id: string\n readable_name: string\n position: Vector3Simple\n orientation: Vector3Simple\n}\n\nexport type MotionGroupOption = {\n selectionId: string\n}\n\nconst EMPTY_DH_PARAMETER: DHParameter = {\n a: 0,\n d: 0,\n alpha: 0,\n theta: 0,\n reverse_rotation_direction: false,\n}\n\n/**\n * Store representing the current state of a connected motion group.\n * API v2 version, not used yet in the components.\n */\nexport class ConnectedMotionGroup {\n static async connectMultiple(nova: NovaClient, motionGroupIds: string[]) {\n return Promise.all(\n motionGroupIds.map((motionGroupId) =>\n ConnectedMotionGroup.connect(nova, motionGroupId),\n ),\n )\n }\n\n static async connect(nova: NovaClient, motionGroupId: string) {\n const [_motionGroupIndex, controllerId] = motionGroupId.split(\"@\") as [\n string,\n string,\n ]\n\n const controller =\n await nova.api.controller.getCurrentRobotControllerState(controllerId)\n const motionGroup = controller?.motion_groups.find(\n (mg) => mg.motion_group === motionGroupId,\n )\n if (!controller || !motionGroup) {\n throw new Error(\n `Controller ${controllerId} or motion group ${motionGroupId} not found`,\n )\n }\n\n const motionStateSocket = nova.openReconnectingWebsocket(\n `/controllers/${controllerId}/motion-groups/${motionGroupId}/state-stream`,\n )\n\n // Wait for the first message to get the initial state\n const firstMessage = await motionStateSocket.firstMessage()\n const initialMotionState = tryParseJson(firstMessage.data)\n ?.result as MotionGroupState\n\n if (!initialMotionState) {\n throw new Error(\n `Unable to parse initial motion state message ${firstMessage.data}`,\n )\n }\n\n console.log(\n `Connected motion state websocket to motion group ${motionGroup.motion_group}. Initial state:\\n `,\n initialMotionState,\n )\n\n // Check if robot is virtual or physical\n const config = await nova.api.controller.getRobotController(\n controller.controller,\n )\n const isVirtual = config.configuration.kind === \"VirtualController\"\n\n // If there's a configured mounting, we need it to show the right\n // position of the robot model\n const description = await nova.api.motionGroup.getMotionGroupDescription(\n controllerId,\n motionGroup.motion_group,\n )\n\n // Find out what TCPs this motion group has (we need it for jogging)\n // There are converted into a RobotTcpLike for easier use in the UI\n const tcps: RobotTcpLike[] = Object.entries(description.tcps || {}).map(\n ([id, tcp]) => ({\n id,\n readable_name: tcp.name,\n position: tcp.pose.position as Vector3Simple,\n orientation: tcp.pose.orientation as Vector3Simple,\n }),\n )\n\n // Open the websocket to monitor controller state for e.g. e-stop\n const controllerStateSocket = nova.openReconnectingWebsocket(\n `/controllers/${controller.controller}/state-stream?response_rate=1000`,\n )\n\n // Wait for the first message to get the initial state\n const firstControllerMessage = await controllerStateSocket.firstMessage()\n const initialControllerState = tryParseJson(firstControllerMessage.data)\n ?.result as RobotControllerState\n\n if (!initialControllerState) {\n throw new Error(\n `Unable to parse initial controller state message ${firstControllerMessage.data}`,\n )\n }\n\n console.log(\n `Connected controller state websocket to controller ${controller.controller}. Initial state:\\n `,\n initialControllerState,\n )\n\n return new ConnectedMotionGroup(\n nova,\n controller,\n motionGroup,\n initialMotionState,\n motionStateSocket,\n isVirtual,\n tcps,\n description,\n initialControllerState,\n controllerStateSocket,\n )\n }\n\n connectedJoggingSocket: WebSocket | null = null\n // biome-ignore lint/suspicious/noExplicitAny: legacy code\n planData: any | null // tmp\n joggingVelocity: number = 10\n\n // Not mobx-observable as this changes very fast; should be observed\n // using animation frames\n rapidlyChangingMotionState: MotionGroupState\n\n // Response rate on the websocket should be a bit slower on this one since\n // we don't use the motion data\n controllerState: RobotControllerState\n\n /**\n * Reflects activation state of the motion group / robot servos. The\n * movement controls in the UI should only be enabled in the \"active\" state\n */\n activationState: \"inactive\" | \"activating\" | \"deactivating\" | \"active\" =\n \"inactive\"\n\n constructor(\n readonly nova: NovaClient,\n readonly controller: RobotControllerState,\n readonly motionGroup: MotionGroupState,\n readonly initialMotionState: MotionGroupState,\n readonly motionStateSocket: AutoReconnectingWebsocket,\n readonly isVirtual: boolean,\n readonly tcps: RobotTcpLike[],\n readonly description: MotionGroupDescription,\n readonly initialControllerState: RobotControllerState,\n readonly controllerStateSocket: AutoReconnectingWebsocket,\n ) {\n this.rapidlyChangingMotionState = initialMotionState\n this.controllerState = initialControllerState\n\n // Track controller state updates (e.g. safety state and operation mode)\n controllerStateSocket.addEventListener(\"message\", (event) => {\n const data = tryParseJson(event.data)?.result\n\n if (!data) {\n return\n }\n\n runInAction(() => {\n this.controllerState = data\n })\n })\n\n motionStateSocket.addEventListener(\"message\", (event) => {\n const latestMotionState = tryParseJson(event.data)?.result as\n | MotionGroupState\n | undefined\n\n if (!latestMotionState) {\n throw new Error(\n `Failed to get motion state for ${this.motionGroupId}: ${event.data}`,\n )\n }\n\n // handle joint position changes\n if (\n !jointValuesEqual(\n this.rapidlyChangingMotionState.joint_position,\n latestMotionState.joint_position,\n MOTION_DELTA_THRESHOLD,\n )\n ) {\n runInAction(() => {\n this.rapidlyChangingMotionState.joint_position =\n latestMotionState.joint_position\n })\n }\n\n // handle tcp pose changes\n if (\n !tcpMotionEqual(\n this.rapidlyChangingMotionState,\n latestMotionState,\n MOTION_DELTA_THRESHOLD,\n )\n ) {\n runInAction(() => {\n this.rapidlyChangingMotionState.tcp_pose = latestMotionState.tcp_pose\n })\n }\n\n // handle standstill changes\n if (\n this.rapidlyChangingMotionState.standstill !==\n latestMotionState.standstill\n ) {\n runInAction(() => {\n this.rapidlyChangingMotionState.standstill =\n latestMotionState.standstill\n })\n }\n })\n makeAutoObservable(this)\n }\n\n get motionGroupId() {\n return this.motionGroup.motion_group\n }\n\n get controllerId() {\n return this.controller.controller\n }\n\n get modelFromController() {\n return this.description.motion_group_model\n }\n\n /** Jogging velocity in radians for rotation and joint movement */\n get joggingVelocityRads() {\n return (this.joggingVelocity * Math.PI) / 180\n }\n\n get joints() {\n return this.initialMotionState.joint_position.map((_, i) => {\n return {\n index: i,\n }\n })\n }\n\n // Please note that API v2 omits 0 values\n get dhParameters() {\n if (this.description.dh_parameters === undefined) {\n return undefined\n }\n\n return this.description.dh_parameters.map((dh_param) => ({\n ...EMPTY_DH_PARAMETER,\n ...dh_param,\n }))\n }\n\n get safetyZones() {\n return this.description.safety_zones\n }\n\n /** Gets the robot mounting position offset in 3D viz coordinates */\n get mountingPosition(): [number, number, number] {\n if (!this.description.mounting) {\n return [0, 0, 0]\n }\n\n return [\n (this.description.mounting.position?.[0] || 0) / 1000,\n (this.description.mounting.position?.[1] || 0) / 1000,\n (this.description.mounting.position?.[2] || 0) / 1000,\n ]\n }\n\n /** Gets the robot mounting position rotation in 3D viz coordinates */\n get mountingQuaternion() {\n const rotationVector = new THREE.Vector3(\n this.description.mounting?.orientation?.[0] || 0,\n this.description.mounting?.orientation?.[1] || 0,\n this.description.mounting?.orientation?.[2] || 0,\n )\n\n const magnitude = rotationVector.length()\n const axis = rotationVector.normalize()\n\n return new THREE.Quaternion().setFromAxisAngle(axis, magnitude)\n }\n\n /**\n * Whether the controller is currently in a safety state\n * corresponding to an emergency stop\n */\n get isEstopActive() {\n const estopStates: SafetyStateType[] = [\n \"SAFETY_STATE_ROBOT_EMERGENCY_STOP\",\n \"SAFETY_STATE_DEVICE_EMERGENCY_STOP\",\n ]\n\n return estopStates.includes(this.controllerState.safety_state)\n }\n\n /**\n * Whether the controller is in a safety state\n * that may be non-functional for robot pad purposes\n */\n get isMoveableSafetyState() {\n const goodSafetyStates: SafetyStateType[] = [\n \"SAFETY_STATE_NORMAL\",\n \"SAFETY_STATE_REDUCED\",\n ]\n\n return goodSafetyStates.includes(this.controllerState.safety_state)\n }\n\n /**\n * Whether the controller is in an operation mode that allows movement\n */\n get isMoveableOperationMode() {\n const goodOperationModes: OperationMode[] = [\n \"OPERATION_MODE_AUTO\",\n \"OPERATION_MODE_MANUAL\",\n \"OPERATION_MODE_MANUAL_T1\",\n \"OPERATION_MODE_MANUAL_T2\",\n ]\n\n return goodOperationModes.includes(this.controllerState.operation_mode)\n }\n\n /**\n * Whether the robot is currently active and can be moved, based on the\n * safety state, operation mode and servo toggle activation state.\n */\n get canBeMoved() {\n return (\n this.isMoveableSafetyState &&\n this.isMoveableOperationMode &&\n this.activationState === \"active\"\n )\n }\n\n async deactivate() {\n if (this.activationState !== \"active\") {\n console.error(\"Tried to deactivate while already deactivating\")\n return\n }\n\n runInAction(() => {\n this.activationState = \"deactivating\"\n })\n\n try {\n await this.nova.api.controller.setDefaultMode(\n this.controllerId,\n \"ROBOT_SYSTEM_MODE_MONITOR\",\n )\n\n runInAction(() => {\n this.activationState = \"inactive\"\n })\n } catch (err) {\n runInAction(() => {\n this.activationState = \"active\"\n })\n throw err\n }\n }\n\n async activate() {\n if (this.activationState !== \"inactive\") {\n console.error(\"Tried to activate while already activating\")\n return\n }\n\n runInAction(() => {\n this.activationState = \"activating\"\n })\n\n try {\n await this.nova.api.controller.setDefaultMode(\n this.controllerId,\n \"ROBOT_SYSTEM_MODE_CONTROL\",\n )\n\n runInAction(() => {\n this.activationState = \"active\"\n })\n } catch (err) {\n runInAction(() => {\n this.activationState = \"inactive\"\n })\n throw err\n }\n }\n\n toggleActivation() {\n if (this.activationState === \"inactive\") {\n this.activate()\n } else if (this.activationState === \"active\") {\n this.deactivate()\n }\n }\n\n dispose() {\n this.motionStateSocket.close()\n if (this.connectedJoggingSocket) this.connectedJoggingSocket.close()\n }\n\n setJoggingVelocity(velocity: number) {\n this.joggingVelocity = velocity\n }\n}\n\nexport default ConnectedMotionGroup\n"],"names":["MOTION_DELTA_THRESHOLD","EMPTY_DH_PARAMETER","ConnectedMotionGroup","nova","controller","motionGroup","initialMotionState","motionStateSocket","isVirtual","tcps","description","initialControllerState","controllerStateSocket","event","data","_a","tryParseJson","runInAction","latestMotionState","jointValuesEqual","tcpMotionEqual","makeAutoObservable","motionGroupIds","motionGroupId","_motionGroupIndex","controllerId","mg","firstMessage","id","tcp","firstControllerMessage","_b","_","i","dh_param","_c","rotationVector","THREE","_d","_f","_e","magnitude","axis","err","velocity"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("@wandelbots/nova-js"),w=require("@wandelbots/nova-js/v2"),_=require("mobx"),E=require("three/src/math/Vector3.js"),F=require("./MotionStreamConnection.cjs"),k="Movement request rejected. Another client is currently executing a 'Jogging' motion!";class y{constructor(t,e={}){this.motionStream=t,this.options=e,this.ENDPOINT_JOGGING="/execution/jogging",this.ENDPOINT_TRAJECTORY="/execution/trajectory",this.DEFAULT_MODE="off",this.DEFAULT_TCP="Flange",this.NO_TCP=void 0,this.DEFAULT_INIT_TIMEOUT=5e3,this.DEFAULT_ORIENTATION="coordsys",this.mode="off",this.joggingSocket=null,this.trajectorySocket=null,this.timeout=this.DEFAULT_INIT_TIMEOUT,this.tcp=(e==null?void 0:e.tcp)||t.motionGroup.tcp||this.getDefaultTcp(t),this.orientation=(e==null?void 0:e.orientation)||this.DEFAULT_ORIENTATION,this.timeout=(e==null?void 0:e.timeout)||this.DEFAULT_INIT_TIMEOUT,this.mode=(e==null?void 0:e.mode)||this.DEFAULT_MODE,this.onError=e==null?void 0:e.onError}static async open(t,e,r={}){const s=await F.MotionStreamConnection.open(t,e),i=new y(s,r);return await i.setJoggingMode(i.mode),i}getDefaultTcp(t){var r,s;const e=(s=(r=t.description.dh_parameters)==null?void 0:r[0])==null?void 0:s.type;return t.joints.length<6&&(e===w.JointTypeEnum.RevoluteJoint||e===w.JointTypeEnum.PrismaticJoint)?this.NO_TCP:this.DEFAULT_TCP}async setOptions(t){t.tcp&&(this.tcp=t.tcp),t.orientation&&(this.orientation=t.orientation),t.timeout&&(this.timeout=t.timeout),t.mode&&(this.mode=t.mode),t.onError&&(this.onError=t.onError),this.setJoggingMode(this.mode,!1)}get motionGroupId(){return this.motionStream.motionGroupId}get nova(){return this.motionStream.nova}get numJoints(){return this.motionStream.joints.length}async stop(){if(this.joggingSocket){const t=new Array(this.numJoints).fill(0);this.joggingSocket.sendJson({message_type:"JointVelocityRequest",velocity:t})}this.trajectorySocket&&this.trajectorySocket.sendJson({message_type:"PauseMovementRequest"})}async dispose(){const t=[this.joggingSocket,this.trajectorySocket].filter(e=>e!==null);return t.forEach(e=>{e.dispose()}),this.joggingSocket=null,this.trajectorySocket=null,Promise.all(t.map(e=>e.closed()))}async setJoggingMode(t,e=!0){if(!(this.mode===t&&e)&&(this.dispose(),this.mode=t,this.mode==="jogging"))return this.initializeJoggingWebsocket()}async initializeJoggingWebsocket(){return new Promise((t,e)=>{const r=setTimeout(()=>{e(new Error(`Jogging initialization timeout after ${this.timeout} seconds`))},this.timeout);this.joggingSocket=this.nova.openReconnectingWebsocket(this.ENDPOINT_JOGGING),this.joggingSocket.addEventListener("message",s=>{var c,h,a,d;const i=l.tryParseJson(s.data);if(((c=i==null?void 0:i.result)==null?void 0:c.kind)==="INITIALIZE_RECEIVED"){clearTimeout(r),t();return}if(((h=i==null?void 0:i.result)==null?void 0:h.kind)==="MOTION_ERROR")if(clearTimeout(r),this.onBlocked&&((a=i==null?void 0:i.result)!=null&&a.message.includes(k))){(d=this.joggingSocket)==null||d.dispose(),this.onBlocked();return}else this.onError?this.onError(s.data):e(new Error(s.data))}),this.joggingSocket.sendJson({message_type:"InitializeJoggingRequest",motion_group:this.motionGroupId,...this.tcp?{tcp:this.tcp}:{}})})}async rotateJoints({joint:t,direction:e,velocityValue:r,velocityUnit:s}){if(!this.joggingSocket||this.mode!=="jogging")throw new Error("Joint jogging websocket not connected; create one by setting jogging mode to 'jogging'");const i=new Array(this.numJoints).fill(0);i[t]=e==="-"?-r:r,this.joggingSocket.sendJson({message_type:"JointVelocityRequest",velocity:i})}async translateTCP({axis:t,direction:e,velocityMmPerSec:r}){if(!this.joggingSocket||this.mode!=="jogging")throw new Error("Continuous jogging websocket not connected; create one by setting jogging mode to 'jogging'");const s=[0,0,0],i=[0,0,0];i[l.XYZ_TO_VECTOR[t]]=e==="-"?-r:r,this.joggingSocket.sendJson({message_type:"TcpVelocityRequest",translation:i,rotation:s,use_tool_coordinate_system:this.orientation==="tool"})}async rotateTCP({axis:t,direction:e,velocityRadsPerSec:r}){if(!this.joggingSocket||this.mode!=="jogging")throw new Error("Continuous jogging websocket not connected; create one by setting jogging mode to 'jogging'");const s=[0,0,0],i=[0,0,0];s[l.XYZ_TO_VECTOR[t]]=e==="-"?-r:r,this.joggingSocket.sendJson({message_type:"TcpVelocityRequest",translation:i,rotation:s})}async runIncrementalCartesianMotion({currentTcpPose:t,currentJoints:e,velocityInRelevantUnits:r,axis:s,direction:i,motion:c}){const h=[];if(this.mode!=="trajectory")throw new Error("Set jogging mode to 'trajectory' to run incremental cartesian motions");if(c.type==="translate"){if(!t.position)throw new Error("Current pose has no position, cannot perform translation");const o=[...t.position];o[l.XYZ_TO_VECTOR[s]]+=c.distanceMm*(i==="-"?-1:1),h.push({limits_override:{tcp_velocity_limit:r},path:{path_definition_name:"PathLine",target_pose:{position:o,orientation:t.orientation}}})}else if(c.type==="rotate"){if(!t.orientation)throw new Error("Current pose has no orientation, cannot perform rotation");const o=new E.Vector3(t.orientation[0],t.orientation[1],t.orientation[2]),n=o.length(),m=o.clone().normalize(),g=c.distanceRads*(i==="-"?-1:1),u=new E.Vector3(0,0,0);u[s]=1;const J=Math.cos(.5*g)*Math.cos(.5*n),T=Math.sin(.5*g)*Math.sin(.5*n),M=Math.sin(.5*g)*Math.cos(.5*n),C=Math.cos(.5*g)*Math.sin(.5*n),D=u.dot(m),N=u.clone().cross(m),p=2*Math.acos(J-T*D),v=p/Math.sin(.5*p),A=new E.Vector3().addScaledVector(N,T).addScaledVector(u,M).addScaledVector(m,C).multiplyScalar(v);h.push({limits_override:{tcp_orientation_velocity_limit:r},path:{path_definition_name:"PathLine",target_pose:{position:t.position,orientation:[...A]}}})}const a=this.motionStream.description;if(a.cycle_time===void 0){console.warn("Current motion group has no cycle time, cannot plan jogging motion");return}const d={motion_group_model:a.motion_group_model,cycle_time:a.cycle_time,mounting:a.mounting,global:a.operation_limits.auto_limits},j=await this.nova.api.trajectoryPlanning.planTrajectory({motion_group_setup:d,start_joint_position:e,motion_commands:h}),f=j.response;if(!f)throw new Error(`Failed to plan jogging increment motion ${JSON.stringify(j)}`);this.trajectorySocket&&(console.warn("Trajectory jogging websocket already open; will close"),this.trajectorySocket.dispose()),this.trajectorySocket=this.nova.openReconnectingWebsocket(this.ENDPOINT_TRAJECTORY);const S=o=>{var n;if(!o||o.add_trajectory_error||o.message)if(this.onError)this.onError(o);else throw new Error(((n=o==null?void 0:o.add_trajectory_error)==null?void 0:n.message)||(o==null?void 0:o.message)||"Failed to execute trajectory, unknown error");if(!this.trajectorySocket)throw new Error("Failed to execute trajectory, websocket not available anymore");this.trajectorySocket.sendJson({message_type:"StartMovementRequest",direction:"DIRECTION_FORWARD"})},R=async()=>{var o;await _.when(()=>!this.motionStream.rapidlyChangingMotionState.standstill),await _.when(()=>this.motionStream.rapidlyChangingMotionState.standstill),(o=this.trajectorySocket)==null||o.dispose(),this.trajectorySocket=null},I=async()=>{var o;await _.when(()=>this.motionStream.rapidlyChangingMotionState.standstill),(o=this.trajectorySocket)==null||o.dispose(),this.trajectorySocket=null},O=async o=>{if(o!=null&&o.message)if(this.onError){this.onError(o);return}else throw new Error(o.message||"Failed to execute trajectory, unknown error");this.motionStream.rapidlyChangingMotionState.standstill?await R():await I()};this.trajectorySocket.addEventListener("message",o=>{var m,g;const n=l.tryParseJson(o.data);if(!((m=n==null?void 0:n.result)!=null&&m.kind))throw new Error(`Failed to execute trajectory: Received invalid message ${o.data}`);if(this.onBlocked&&((g=n.result.message)!=null&&g.includes(k))){this.onBlocked();return}if(n.result.kind==="INITIALIZE_RECEIVED")S(n.result);else if(n.result.kind==="START_RECEIVED")O(n);else if(n.result.kind!=="PAUSE_RECEIVED")if(n.result.kind==="MOTION_ERROR"&&n.result.message)if(this.onError){this.onError(n);return}else throw new Error(n.result.message);else throw new Error(`Failed to execute trajectory, cannot handle message type "${n.result.kind}"`)}),this.trajectorySocket.sendJson({message_type:"InitializeMovementRequest",trajectory:{message_type:"TrajectoryData",motion_group:this.motionGroupId,data:f,tcp:this.tcp}})}}exports.JoggerConnection=y;exports.default=y;
|
|
2
|
-
//# sourceMappingURL=JoggerConnection.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JoggerConnection.cjs","sources":["../../src/lib/JoggerConnection.ts"],"sourcesContent":["import {\n type AutoReconnectingWebsocket,\n tryParseJson,\n XYZ_TO_VECTOR,\n} from \"@wandelbots/nova-js\"\nimport {\n JointTypeEnum,\n type InitializeMovementResponse,\n type MotionCommand,\n type NovaClient,\n type Pose,\n type StartMovementResponse,\n} from \"@wandelbots/nova-js/v2\"\nimport { when } from \"mobx\"\nimport { Vector3 } from \"three/src/math/Vector3.js\"\nimport { MotionStreamConnection } from \"./MotionStreamConnection\"\n\nexport type Vector3Simple = [number, number, number]\n\nconst API_ERROR_CONNECTION_BLOCKED = `Movement request rejected. Another client is currently executing a 'Jogging' motion!`\n\nexport type JoggerConnectionOptions = {\n // The mode of the jogger connection - see type description of JoggerMode for details\n mode?: JoggerMode\n\n // Connection timeout in milliseconds to wait for jogging initialization to complete\n timeout?: number\n\n /**\n * When an error message is received from the jogging websocket, it\n * will be passed here. If this handler is not provided, the error will\n * instead be thrown as an unhandled error.\n */\n onError?: (err: unknown) => void\n\n // The TCP to use for jogging motions.\n tcp?: string\n\n // The coordinate system in which jogging takes place in\n // coordinateSystem?: string,\n\n // If set to \"tool\", jogging TcpVelocityRequest will use `use_tool_coordinate_system` option\n orientation?: JoggerOrientation\n}\n\n// Three modes are supported:\n// - \"jogging\": Continuous jogging mode, where joint velocities or TCP velocities can be commanded. Opens a single websocket connection to jogging endpoint\n// - \"trajectory\": Incremental jogging mode, where fixed distance motions are planned and executed. Opens a short lived websocket for each motion.\n// - \"off\": No jogging, all websockets are closed.\nexport type JoggerMode = \"jogging\" | \"trajectory\" | \"off\"\n\n// If set to \"tool\", will use `use_tool_coordinate_system` option in movement requests\nexport type JoggerOrientation = \"coordsys\" | \"tool\"\n\nexport class JoggerConnection {\n ENDPOINT_JOGGING = \"/execution/jogging\"\n ENDPOINT_TRAJECTORY = \"/execution/trajectory\"\n DEFAULT_MODE = \"off\" as JoggerMode\n DEFAULT_TCP: string | undefined = \"Flange\"\n NO_TCP: string | undefined = undefined\n // DEFAULT_COORDINATE_SYSTEM = \"world\"\n DEFAULT_INIT_TIMEOUT = 5000\n DEFAULT_ORIENTATION = \"coordsys\" as JoggerOrientation\n\n mode: JoggerMode = \"off\"\n joggingSocket: AutoReconnectingWebsocket | null = null\n trajectorySocket: AutoReconnectingWebsocket | null = null\n timeout: number = this.DEFAULT_INIT_TIMEOUT\n tcp: string | undefined\n // coordinateSystem?: string\n orientation: JoggerOrientation\n onError?: (err: unknown) => void\n onBlocked?: () => void\n\n /**\n * Initialize the jogging connection using jogging endpoint or trajectory endpoint depending on the selected mode.\n *\n * @param nova - The Nova client instance\n * @param motionGroupId - The ID of the motion group to connect to\n * @param options - Configuration options for the jogger connection\n * @param options.mode - The jogging mode to initialize:\n * - \"jogging\": Continuous jogging mode with persistent websocket for real-time velocity commands\n * - \"trajectory\": Incremental jogging mode for fixed-distance motions via trajectory planning\n * - \"off\": No jogging enabled, all websockets closed (default)\n * @param options.timeout - Timeout in milliseconds for websocket initialization (default: 5000ms)\n * @param options.tcp - TCP frame to use for motions (default: from motion group)\n * //param options.coordinateSystem - Coordinate system for jogging commands (default: \"world\"). Please note: Currently not implemented\n * @param options.orientation - If set to \"tool\", jogging TcpVelocityRequest will use `use_tool_coordinate_system` option (default: \"coordsys\")\n * @param options.onError - Error handler for websocket errors\n * @returns Promise resolving to initialized JoggerConnection instance\n */\n static async open(\n nova: NovaClient,\n motionGroupId: string,\n options: JoggerConnectionOptions = {},\n ) {\n // Get matching motion stream\n const motionStream = await MotionStreamConnection.open(nova, motionGroupId)\n\n // Initialize jogger with options\n const jogger = new JoggerConnection(motionStream, options)\n\n // Initialize the jogging websocket, if necessary (mode is \"jogging\")\n await jogger.setJoggingMode(jogger.mode)\n\n // Return the initialized jogger\n return jogger\n }\n\n constructor(\n readonly motionStream: MotionStreamConnection,\n readonly options: JoggerConnectionOptions | undefined = {},\n ) {\n this.tcp =\n options?.tcp ||\n motionStream.motionGroup.tcp ||\n this.getDefaultTcp(motionStream)\n // this.coordinateSystem = options?.coordinateSystem || this.DEFAULT_COORDINATE_SYSTEM\n this.orientation = options?.orientation || this.DEFAULT_ORIENTATION\n this.timeout = options?.timeout || this.DEFAULT_INIT_TIMEOUT\n this.mode = options?.mode || this.DEFAULT_MODE\n this.onError = options?.onError\n }\n\n getDefaultTcp(motionStream: MotionStreamConnection) {\n const firstJointType = motionStream.description.dh_parameters?.[0]?.type\n if (\n motionStream.joints.length < 6 &&\n (firstJointType === JointTypeEnum.RevoluteJoint ||\n firstJointType === JointTypeEnum.PrismaticJoint)\n ) {\n return this.NO_TCP\n }\n return this.DEFAULT_TCP\n }\n\n // Set a new tcp or other options. If current mode is jogging, will reinitialize the jogging websocket\n async setOptions(options: Partial<JoggerConnectionOptions>) {\n if (options.tcp) {\n this.tcp = options.tcp\n }\n\n if (options.orientation) {\n this.orientation = options.orientation\n }\n\n // if (options.coordinateSystem) {\n // this.coordinateSystem = options.coordinateSystem\n // }\n\n if (options.timeout) {\n this.timeout = options.timeout\n }\n\n if (options.mode) {\n this.mode = options.mode\n }\n\n if (options.onError) {\n this.onError = options.onError\n }\n\n this.setJoggingMode(this.mode, false)\n }\n\n get motionGroupId() {\n return this.motionStream.motionGroupId\n }\n\n get nova() {\n return this.motionStream.nova\n }\n\n get numJoints() {\n return this.motionStream.joints.length\n }\n\n // get activeJoggingMode() {\n // return this.mode\n // }\n\n // get activeWebsocket() {\n // return this.mode === \"jogging\" ? this.joggingSocket : this.trajectorySocket;\n // }\n\n // Sends stop movement command to robot\n async stop() {\n if (this.joggingSocket) {\n const velocity = new Array(this.numJoints).fill(0)\n this.joggingSocket.sendJson({\n message_type: \"JointVelocityRequest\",\n velocity,\n })\n }\n\n if (this.trajectorySocket) {\n this.trajectorySocket.sendJson({\n message_type: \"PauseMovementRequest\",\n })\n }\n }\n\n // Dispose the jogger, closing all open websockets\n async dispose() {\n // Collect all initialized sockets\n const sockets = [this.joggingSocket, this.trajectorySocket].filter(\n (s) => s !== null,\n ) as AutoReconnectingWebsocket[]\n\n // Call them to dispose\n sockets.forEach((s) => {\n s.dispose()\n })\n\n // Remove references\n this.joggingSocket = null\n this.trajectorySocket = null\n\n // Return promise that resolves when all sockets are closed\n return Promise.all(sockets.map((s) => s.closed()))\n }\n\n // Activate jogger in one of the supported modes\n // Will iniitialize or close websockets as necessary\n // If mode is unchanged, does nothing (unless skipReinitializeIfSameMode is false)\n async setJoggingMode(mode: JoggerMode, skipReinitializeIfSameMode = true) {\n // If not changing mode, do nothing\n if (this.mode === mode && skipReinitializeIfSameMode) {\n return\n }\n\n // Close any previous websocket connection\n this.dispose()\n\n // Set the new mode\n this.mode = mode\n\n // Mode is \"jogging\" - open jogging websocket\n if (this.mode === \"jogging\") {\n return this.initializeJoggingWebsocket()\n }\n\n // Mode is \"trajectory\" or \"off\" - nothing more to do\n return\n }\n\n // Initializes continuous jogging websocket, called by setJoggingMode(\"jogging\")\n async initializeJoggingWebsocket() {\n // Wait for initialization with timeout\n return new Promise<void>((resolve, reject) => {\n const connectionFailedTimeout = setTimeout(() => {\n reject(\n new Error(\n `Jogging initialization timeout after ${this.timeout} seconds`,\n ),\n )\n }, this.timeout)\n\n this.joggingSocket = this.nova.openReconnectingWebsocket(\n this.ENDPOINT_JOGGING,\n )\n this.joggingSocket.addEventListener(\"message\", (ev: MessageEvent) => {\n const data = tryParseJson(ev.data)\n\n if (data?.result?.kind === \"INITIALIZE_RECEIVED\") {\n clearTimeout(connectionFailedTimeout)\n resolve()\n return\n }\n\n if (data?.result?.kind === \"MOTION_ERROR\") {\n clearTimeout(connectionFailedTimeout)\n if (\n this.onBlocked &&\n data?.result?.message.includes(API_ERROR_CONNECTION_BLOCKED)\n ) {\n this.joggingSocket?.dispose()\n this.onBlocked()\n return\n } else if (this.onError) {\n this.onError(ev.data)\n } else {\n reject(new Error(ev.data))\n }\n }\n })\n\n this.joggingSocket.sendJson({\n message_type: \"InitializeJoggingRequest\",\n motion_group: this.motionGroupId,\n ...(this.tcp ? { tcp: this.tcp } : {}),\n })\n })\n }\n\n /**\n * Jogging: Start rotation of a single robot joint at the specified velocity\n */\n async rotateJoints({\n joint,\n direction,\n velocityValue,\n velocityUnit,\n }: {\n /** Index of the joint to rotate */\n joint: number\n /** Direction of rotation (\"+\" or \"-\") */\n direction: \"+\" | \"-\"\n /** Speed of the rotation, unit is currently unused, but i wanted it there to raise awareness that not everything here is rad/s*/\n velocityValue: number\n velocityUnit: \"mm/s\" | \"rad/s\"\n }) {\n if (!this.joggingSocket || this.mode !== \"jogging\") {\n throw new Error(\n \"Joint jogging websocket not connected; create one by setting jogging mode to 'jogging'\",\n )\n }\n\n const velocity = new Array(this.numJoints).fill(0)\n\n velocity[joint] = direction === \"-\" ? -velocityValue : velocityValue\n\n this.joggingSocket.sendJson({\n message_type: \"JointVelocityRequest\",\n velocity,\n })\n }\n\n /**\n * Jogging: Start the TCP moving along a specified axis at a given velocity\n */\n async translateTCP({\n axis,\n direction,\n velocityMmPerSec,\n }: {\n axis: \"x\" | \"y\" | \"z\"\n direction: \"-\" | \"+\"\n velocityMmPerSec: number\n }) {\n if (!this.joggingSocket || this.mode !== \"jogging\") {\n throw new Error(\n \"Continuous jogging websocket not connected; create one by setting jogging mode to 'jogging'\",\n )\n }\n const rotation = [0, 0, 0]\n const translation = [0, 0, 0]\n translation[XYZ_TO_VECTOR[axis]] =\n direction === \"-\" ? -velocityMmPerSec : velocityMmPerSec\n\n this.joggingSocket.sendJson({\n message_type: \"TcpVelocityRequest\",\n translation,\n rotation,\n use_tool_coordinate_system: this.orientation === \"tool\",\n })\n }\n\n /**\n * Jogging: Start the TCP rotating around a specified axis at a given velocity\n */\n async rotateTCP({\n axis,\n direction,\n velocityRadsPerSec,\n }: {\n axis: \"x\" | \"y\" | \"z\"\n direction: \"-\" | \"+\"\n velocityRadsPerSec: number\n }) {\n if (!this.joggingSocket || this.mode !== \"jogging\") {\n throw new Error(\n \"Continuous jogging websocket not connected; create one by setting jogging mode to 'jogging'\",\n )\n }\n const rotation = [0, 0, 0]\n const translation = [0, 0, 0]\n rotation[XYZ_TO_VECTOR[axis]] =\n direction === \"-\" ? -velocityRadsPerSec : velocityRadsPerSec\n\n this.joggingSocket.sendJson({\n message_type: \"TcpVelocityRequest\",\n translation,\n rotation,\n })\n }\n\n /**\n * Trajectory jogging:\n *\n * Move the robot by a fixed distance in a single cartesian\n * axis, either rotating or translating relative to the TCP.\n * Promise resolves only after the motion has completed.\n */\n async runIncrementalCartesianMotion({\n currentTcpPose,\n currentJoints,\n // coordSystemId,\n velocityInRelevantUnits,\n axis,\n direction,\n motion,\n }: {\n currentTcpPose: Pose\n currentJoints: Vector3Simple\n coordSystemId: string\n velocityInRelevantUnits: number\n axis: \"x\" | \"y\" | \"z\"\n direction: \"-\" | \"+\"\n motion:\n | {\n type: \"rotate\"\n distanceRads: number\n }\n | {\n type: \"translate\"\n distanceMm: number\n }\n }) {\n const commands: MotionCommand[] = []\n\n if (this.mode !== \"trajectory\") {\n throw new Error(\n \"Set jogging mode to 'trajectory' to run incremental cartesian motions\",\n )\n }\n\n if (motion.type === \"translate\") {\n if (!currentTcpPose.position) {\n throw new Error(\n \"Current pose has no position, cannot perform translation\",\n )\n }\n\n const targetTcpPosition = [...currentTcpPose.position]\n targetTcpPosition[XYZ_TO_VECTOR[axis]] +=\n motion.distanceMm * (direction === \"-\" ? -1 : 1)\n\n commands.push({\n limits_override: {\n tcp_velocity_limit: velocityInRelevantUnits,\n },\n path: {\n path_definition_name: \"PathLine\",\n target_pose: {\n position: targetTcpPosition,\n orientation: currentTcpPose.orientation,\n },\n },\n })\n } else if (motion.type === \"rotate\") {\n // Concatenate rotations expressed by rotation vectors\n // Equations taken from https://physics.stackexchange.com/a/287819\n\n if (!currentTcpPose.orientation) {\n throw new Error(\n \"Current pose has no orientation, cannot perform rotation\",\n )\n }\n\n // Compute axis and angle of current rotation vector\n const currentRotationVector = new Vector3(\n currentTcpPose.orientation[0],\n currentTcpPose.orientation[1],\n currentTcpPose.orientation[2],\n )\n\n const currentRotationRad = currentRotationVector.length()\n const currentRotationDirection = currentRotationVector.clone().normalize()\n\n // Compute axis and angle of difference rotation vector\n const differenceRotationRad =\n motion.distanceRads * (direction === \"-\" ? -1 : 1)\n\n const differenceRotationDirection = new Vector3(0.0, 0.0, 0.0)\n differenceRotationDirection[axis] = 1.0\n\n // Some abbreviations to make the following equations more readable\n const f1 =\n Math.cos(0.5 * differenceRotationRad) *\n Math.cos(0.5 * currentRotationRad)\n const f2 =\n Math.sin(0.5 * differenceRotationRad) *\n Math.sin(0.5 * currentRotationRad)\n const f3 =\n Math.sin(0.5 * differenceRotationRad) *\n Math.cos(0.5 * currentRotationRad)\n const f4 =\n Math.cos(0.5 * differenceRotationRad) *\n Math.sin(0.5 * currentRotationRad)\n\n const dotProduct = differenceRotationDirection.dot(\n currentRotationDirection,\n )\n\n const crossProduct = differenceRotationDirection\n .clone()\n .cross(currentRotationDirection)\n\n // Compute angle of concatenated rotation\n const newRotationRad = 2.0 * Math.acos(f1 - f2 * dotProduct)\n\n // Compute rotation vector of concatenated rotation\n const f5 = newRotationRad / Math.sin(0.5 * newRotationRad)\n\n const targetTcpOrientation = new Vector3()\n .addScaledVector(crossProduct, f2)\n .addScaledVector(differenceRotationDirection, f3)\n .addScaledVector(currentRotationDirection, f4)\n .multiplyScalar(f5)\n\n commands.push({\n limits_override: {\n tcp_orientation_velocity_limit: velocityInRelevantUnits,\n },\n path: {\n path_definition_name: \"PathLine\",\n target_pose: {\n position: currentTcpPose.position,\n orientation: [...targetTcpOrientation],\n },\n },\n })\n }\n\n // Plan the motion https://portal.wandelbots.io/docs/api/v2/ui/#/operations/planTrajectory\n const description = this.motionStream.description\n if (description.cycle_time === undefined) {\n console.warn(\n \"Current motion group has no cycle time, cannot plan jogging motion\",\n )\n return\n }\n\n const motion_group_setup = {\n motion_group_model: description.motion_group_model,\n cycle_time: description.cycle_time,\n mounting: description.mounting,\n\n // tcp_offset: description.tcp_offset, TODO: implement tcp_offset handling\n // FIXME use proper mode's limits if set\n global: description.operation_limits.auto_limits,\n }\n\n const motionPlanRes = await this.nova.api.trajectoryPlanning.planTrajectory(\n {\n motion_group_setup,\n start_joint_position: currentJoints,\n motion_commands: commands,\n },\n )\n\n const trajectoryData = motionPlanRes.response\n if (!trajectoryData) {\n throw new Error(\n `Failed to plan jogging increment motion ${JSON.stringify(motionPlanRes)}`,\n )\n }\n\n if (this.trajectorySocket) {\n console.warn(\"Trajectory jogging websocket already open; will close\")\n this.trajectorySocket.dispose()\n }\n\n // Execute the planned motion https://portal.wandelbots.io/docs/api/v2/ui/#/operations/executeTrajectory\n this.trajectorySocket = this.nova.openReconnectingWebsocket(\n this.ENDPOINT_TRAJECTORY,\n )\n\n const messageInitializeMovementResponse = (\n result: InitializeMovementResponse | undefined,\n ) => {\n // Handle errorous response\n if (!result || result.add_trajectory_error || result.message) {\n if (this.onError) {\n this.onError(result)\n } else {\n throw new Error(\n result?.add_trajectory_error?.message ||\n result?.message ||\n \"Failed to execute trajectory, unknown error\",\n )\n }\n }\n\n // Handle socket gone\n if (!this.trajectorySocket) {\n throw new Error(\n `Failed to execute trajectory, websocket not available anymore`,\n )\n }\n\n // Trajectory locked, now start movement\n this.trajectorySocket.sendJson({\n message_type: \"StartMovementRequest\",\n direction: \"DIRECTION_FORWARD\",\n })\n }\n\n const waitForMovementToStartAndFinish = async () => {\n // Wait for robot to start moving (standstill becomes false)\n await when(() => !this.motionStream.rapidlyChangingMotionState.standstill)\n\n // Then wait for robot to stop moving (standstill becomes true)\n await when(() => this.motionStream.rapidlyChangingMotionState.standstill)\n\n // Close connection and free robot\n this.trajectorySocket?.dispose()\n this.trajectorySocket = null\n }\n\n const waitForMovementToFinish = async () => {\n // Wait for robot to stop moving (standstill becomes true)\n await when(() => this.motionStream.rapidlyChangingMotionState.standstill)\n\n // Close connection and free robot\n this.trajectorySocket?.dispose()\n this.trajectorySocket = null\n }\n\n const messageStartMovementResponse = async (\n data: StartMovementResponse,\n ) => {\n if (data?.message) {\n if (this.onError) {\n this.onError(data)\n return\n } else {\n throw new Error(\n data.message || \"Failed to execute trajectory, unknown error\",\n )\n }\n }\n\n // Movement started we now wait to verify the robot is moving\n // by observing changes to motion state\n if (this.motionStream.rapidlyChangingMotionState.standstill) {\n await waitForMovementToStartAndFinish()\n } else {\n await waitForMovementToFinish()\n }\n }\n\n this.trajectorySocket.addEventListener(\"message\", (ev: MessageEvent) => {\n const data = tryParseJson(ev.data)\n\n if (!data?.result?.kind) {\n throw new Error(\n `Failed to execute trajectory: Received invalid message ${ev.data}`,\n )\n }\n\n if (\n this.onBlocked &&\n data.result.message?.includes(API_ERROR_CONNECTION_BLOCKED)\n ) {\n this.onBlocked()\n return\n }\n\n if (data.result.kind === \"INITIALIZE_RECEIVED\") {\n messageInitializeMovementResponse(data.result)\n } else if (data.result.kind === \"START_RECEIVED\") {\n messageStartMovementResponse(data)\n } else if (data.result.kind === \"PAUSE_RECEIVED\") {\n // do nothing\n } else if (data.result.kind === \"MOTION_ERROR\" && data.result.message) {\n if (this.onError) {\n this.onError(data)\n return\n } else {\n throw new Error(data.result.message)\n }\n } else {\n throw new Error(\n `Failed to execute trajectory, cannot handle message type \"${data.result.kind}\"`,\n )\n }\n })\n\n // Send initialization/movement request\n this.trajectorySocket.sendJson({\n message_type: \"InitializeMovementRequest\",\n trajectory: {\n message_type: \"TrajectoryData\",\n motion_group: this.motionGroupId,\n data: trajectoryData,\n tcp: this.tcp,\n },\n })\n }\n}\n\nexport default JoggerConnection\n"],"names":["API_ERROR_CONNECTION_BLOCKED","JoggerConnection","motionStream","options","nova","motionGroupId","MotionStreamConnection","jogger","firstJointType","_b","_a","JointTypeEnum","velocity","sockets","s","mode","skipReinitializeIfSameMode","resolve","reject","connectionFailedTimeout","ev","data","tryParseJson","_c","_d","joint","direction","velocityValue","velocityUnit","axis","velocityMmPerSec","rotation","translation","XYZ_TO_VECTOR","velocityRadsPerSec","currentTcpPose","currentJoints","velocityInRelevantUnits","motion","commands","targetTcpPosition","currentRotationVector","Vector3","currentRotationRad","currentRotationDirection","differenceRotationRad","differenceRotationDirection","f1","f2","f3","f4","dotProduct","crossProduct","newRotationRad","f5","targetTcpOrientation","description","motion_group_setup","motionPlanRes","trajectoryData","messageInitializeMovementResponse","result","waitForMovementToStartAndFinish","when","waitForMovementToFinish","messageStartMovementResponse"],"mappings":"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"}
|