@wandelbots/wandelbots-js-react-components 3.4.0-pr.feat-yaskawa-gp200s.437.1b5737e → 3.4.0-pr.feat-add-yaskawa-gp200s.438.c416a9e
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/README.md +10 -61
- package/dist/auth0-spa-js.production.esm-1QXzndwB.js +950 -0
- package/dist/auth0-spa-js.production.esm-1QXzndwB.js.map +1 -0
- package/dist/auth0-spa-js.production.esm-BLRAk7Yh.cjs +5 -0
- package/dist/auth0-spa-js.production.esm-BLRAk7Yh.cjs.map +1 -0
- package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts +1 -1
- package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts.map +1 -1
- package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts.map +1 -1
- package/dist/components/3d-viewport/collider/ColliderCollection.d.ts +1 -1
- package/dist/components/3d-viewport/collider/ColliderCollection.d.ts.map +1 -1
- package/dist/components/3d-viewport/collider/ColliderElement.d.ts +1 -1
- package/dist/components/3d-viewport/collider/ColliderElement.d.ts.map +1 -1
- package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts +1 -1
- package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts.map +1 -1
- package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.d.ts +1 -1
- package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.d.ts.map +1 -1
- package/dist/components/ProgramStateIndicator.d.ts +3 -3
- package/dist/components/ProgramStateIndicator.d.ts.map +1 -1
- package/dist/components/RobotCard.d.ts +3 -4
- package/dist/components/RobotCard.d.ts.map +1 -1
- package/dist/components/jogging/JoggingCartesianTab.d.ts.map +1 -1
- package/dist/components/jogging/JoggingOptions.d.ts.map +1 -1
- package/dist/components/jogging/JoggingPanel.d.ts +1 -1
- package/dist/components/jogging/JoggingPanel.d.ts.map +1 -1
- package/dist/components/jogging/JoggingStore.d.ts +5 -10
- package/dist/components/jogging/JoggingStore.d.ts.map +1 -1
- package/dist/components/jogging/PoseCartesianValues.d.ts +2 -2
- package/dist/components/jogging/PoseCartesianValues.d.ts.map +1 -1
- package/dist/components/jogging/PoseJointValues.d.ts +2 -1
- package/dist/components/jogging/PoseJointValues.d.ts.map +1 -1
- package/dist/components/robots/DHRobot.d.ts.map +1 -1
- package/dist/components/robots/Robot.d.ts +1 -1
- package/dist/components/robots/Robot.d.ts.map +1 -1
- package/dist/components/robots/RobotAnimator.d.ts +2 -2
- package/dist/components/robots/RobotAnimator.d.ts.map +1 -1
- package/dist/components/robots/SupportedRobot.d.ts +3 -3
- package/dist/components/robots/SupportedRobot.d.ts.map +1 -1
- package/dist/components/robots/manufacturerHomePositions.d.ts +1 -1
- package/dist/components/robots/manufacturerHomePositions.d.ts.map +1 -1
- package/dist/components/safetyBar/ControllerTypeIndicator.d.ts.map +1 -1
- package/dist/components/safetyBar/OperationModeIndicator.d.ts +2 -2
- package/dist/components/safetyBar/OperationModeIndicator.d.ts.map +1 -1
- package/dist/components/safetyBar/SafetyBar.d.ts +3 -3
- package/dist/components/safetyBar/SafetyBar.d.ts.map +1 -1
- package/dist/components/safetyBar/SafetyStateIndicator.d.ts +2 -2
- package/dist/components/safetyBar/SafetyStateIndicator.d.ts.map +1 -1
- package/dist/components/utils/errorHandling.d.ts.map +1 -1
- package/dist/index.cjs +155 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +39 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34927 -0
- package/dist/index.js.map +1 -0
- package/package.json +21 -49
- package/src/components/3d-viewport/CoordinateSystemTransform.tsx +1 -1
- package/src/components/3d-viewport/SafetyZonesRenderer.tsx +2 -1
- package/src/components/3d-viewport/collider/ColliderCollection.tsx +1 -1
- package/src/components/3d-viewport/collider/ColliderElement.tsx +1 -1
- package/src/components/3d-viewport/collider/CollisionSceneRenderer.tsx +1 -1
- package/src/components/3d-viewport/collider/colliderShapeToBufferGeometry.ts +1 -1
- package/src/components/AppHeader.md +1 -1
- package/src/components/ProgramStateIndicator.tsx +6 -3
- package/src/components/RobotCard.tsx +7 -4
- package/src/components/jogging/JoggingCartesianTab.tsx +11 -13
- package/src/components/jogging/JoggingJointLimitDetector.tsx +2 -2
- package/src/components/jogging/JoggingJointTab.tsx +4 -4
- package/src/components/jogging/JoggingOptions.tsx +5 -6
- package/src/components/jogging/JoggingPanel.tsx +3 -6
- package/src/components/jogging/JoggingStore.ts +39 -66
- package/src/components/jogging/PoseCartesianValues.tsx +4 -3
- package/src/components/jogging/PoseJointValues.tsx +4 -3
- package/src/components/robots/DHRobot.tsx +3 -2
- package/src/components/robots/Robot.tsx +1 -1
- package/src/components/robots/RobotAnimator.test.tsx +22 -7
- package/src/components/robots/RobotAnimator.tsx +13 -8
- package/src/components/robots/SupportedRobot.tsx +6 -3
- package/src/components/robots/manufacturerHomePositions.ts +1 -1
- package/src/components/safetyBar/ControllerTypeIndicator.tsx +2 -4
- package/src/components/safetyBar/OperationModeIndicator.tsx +5 -7
- package/src/components/safetyBar/SafetyBar.tsx +6 -3
- package/src/components/safetyBar/SafetyStateIndicator.tsx +7 -9
- package/src/components/utils/errorHandling.ts +0 -4
- package/src/i18n/locales/de/translations.json +0 -3
- package/src/i18n/locales/en/translations.json +0 -3
- package/src/index.ts +43 -4
- package/dist/3d.cjs.js +0 -2
- package/dist/3d.cjs.js.map +0 -1
- package/dist/3d.d.ts +0 -11
- package/dist/3d.d.ts.map +0 -1
- package/dist/3d.es.js +0 -16
- package/dist/3d.es.js.map +0 -1
- package/dist/LoadingCover-Dr9hDTku.js +0 -87
- package/dist/LoadingCover-Dr9hDTku.js.map +0 -1
- package/dist/LoadingCover-r2yhJZF9.cjs +0 -2
- package/dist/LoadingCover-r2yhJZF9.cjs.map +0 -1
- package/dist/WandelscriptEditor-Dj7TBCkF.cjs +0 -2
- package/dist/WandelscriptEditor-Dj7TBCkF.cjs.map +0 -1
- package/dist/WandelscriptEditor-DnJvITTA.js +0 -140
- package/dist/WandelscriptEditor-DnJvITTA.js.map +0 -1
- package/dist/auth0-spa-js.production.esm-9WdmjTxR.js +0 -1429
- package/dist/auth0-spa-js.production.esm-9WdmjTxR.js.map +0 -1
- package/dist/auth0-spa-js.production.esm-BcLLh1tx.cjs +0 -5
- package/dist/auth0-spa-js.production.esm-BcLLh1tx.cjs.map +0 -1
- package/dist/components/jogging/JoggingBlocked.d.ts +0 -7
- package/dist/components/jogging/JoggingBlocked.d.ts.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/core.cjs.js +0 -2
- package/dist/core.cjs.js.map +0 -1
- package/dist/core.d.ts +0 -33
- package/dist/core.d.ts.map +0 -1
- package/dist/core.es.js +0 -54
- package/dist/core.es.js.map +0 -1
- package/dist/index-CAib4NKw.js +0 -2261
- package/dist/index-CAib4NKw.js.map +0 -1
- package/dist/index-CqMZL0FV.cjs +0 -2
- package/dist/index-CqMZL0FV.cjs.map +0 -1
- package/dist/index-CxasuX80.js +0 -5212
- package/dist/index-CxasuX80.js.map +0 -1
- package/dist/index-DxwppshT.cjs +0 -29
- package/dist/index-DxwppshT.cjs.map +0 -1
- package/dist/index.cjs.js +0 -2
- package/dist/index.cjs.js.map +0 -1
- package/dist/index.es.js +0 -69
- package/dist/index.es.js.map +0 -1
- package/dist/lib/ConnectedMotionGroup.d.ts +0 -90
- package/dist/lib/ConnectedMotionGroup.d.ts.map +0 -1
- package/dist/lib/JoggerConnection.d.ts +0 -113
- package/dist/lib/JoggerConnection.d.ts.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.d.ts +0 -24
- package/dist/lib/MotionStreamConnection.d.ts.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.d.ts +0 -7
- package/dist/lib/motionStateUpdate.d.ts.map +0 -1
- package/dist/lib/motionStateUpdate.test.d.ts +0 -2
- package/dist/lib/motionStateUpdate.test.d.ts.map +0 -1
- package/dist/manufacturerHomePositions-Ca80ycLi.cjs +0 -2
- package/dist/manufacturerHomePositions-Ca80ycLi.cjs.map +0 -1
- package/dist/manufacturerHomePositions-CgaG5vaK.js +0 -976
- package/dist/manufacturerHomePositions-CgaG5vaK.js.map +0 -1
- package/dist/theming-BQcKj8Gp.cjs +0 -133
- package/dist/theming-BQcKj8Gp.cjs.map +0 -1
- package/dist/theming-Bafjg0Wg.js +0 -23460
- package/dist/theming-Bafjg0Wg.js.map +0 -1
- package/dist/wandelscript.cjs.js +0 -2
- package/dist/wandelscript.cjs.js.map +0 -1
- package/dist/wandelscript.d.ts +0 -2
- package/dist/wandelscript.d.ts.map +0 -1
- package/dist/wandelscript.es.js +0 -5
- package/dist/wandelscript.es.js.map +0 -1
- package/src/3d.ts +0 -15
- package/src/components/jogging/JoggingBlocked.tsx +0 -37
- package/src/components/utils/errorHandling.test.ts +0 -41
- package/src/core.ts +0 -33
- package/src/lib/ConnectedMotionGroup.ts +0 -444
- package/src/lib/JoggerConnection.test.ts +0 -120
- package/src/lib/JoggerConnection.ts +0 -674
- package/src/lib/MotionStreamConnection.test.ts +0 -23
- package/src/lib/MotionStreamConnection.ts +0 -189
- package/src/lib/motionStateUpdate.test.ts +0 -28
- package/src/lib/motionStateUpdate.ts +0 -117
- package/src/wandelscript.ts +0 -2
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
import { tryParseJson } from "@wandelbots/nova-js"
|
|
2
2
|
import type {
|
|
3
3
|
CoordinateSystem,
|
|
4
|
-
|
|
4
|
+
JoggerConnection,
|
|
5
|
+
MotionGroupSpecification,
|
|
5
6
|
RobotTcp,
|
|
6
|
-
} from "@wandelbots/nova-js/
|
|
7
|
+
} from "@wandelbots/nova-js/v1"
|
|
7
8
|
import { countBy } from "lodash-es"
|
|
8
9
|
import keyBy from "lodash-es/keyBy"
|
|
9
10
|
import uniqueId from "lodash-es/uniqueId"
|
|
10
11
|
import { autorun, makeAutoObservable, type IReactionDisposer } from "mobx"
|
|
11
|
-
import type {
|
|
12
|
-
JoggerConnection,
|
|
13
|
-
JoggerOrientation,
|
|
14
|
-
Vector3Simple,
|
|
15
|
-
} from "../../lib/JoggerConnection"
|
|
16
12
|
|
|
17
13
|
const discreteIncrementOptions = [
|
|
18
14
|
{ id: "0.1", mm: 0.1, degrees: 0.05 },
|
|
@@ -59,9 +55,6 @@ export class JoggingStore {
|
|
|
59
55
|
/** Locks to prevent UI interactions during certain operations */
|
|
60
56
|
locks = new Set<string>()
|
|
61
57
|
|
|
62
|
-
/** Block jogging UI interactions when connection is taken by another jogger */
|
|
63
|
-
blocked: boolean = false
|
|
64
|
-
|
|
65
58
|
/**
|
|
66
59
|
* Id of selected coordinate system from among those defined on the API side
|
|
67
60
|
*/
|
|
@@ -112,7 +105,7 @@ export class JoggingStore {
|
|
|
112
105
|
maxRotationVelocityDegPerSec: number = 60
|
|
113
106
|
|
|
114
107
|
/** Whether to show the coordinate system select dropdown in the UI */
|
|
115
|
-
showCoordSystemSelect: boolean =
|
|
108
|
+
showCoordSystemSelect: boolean = true
|
|
116
109
|
|
|
117
110
|
/** Whether to show the TCP select dropdown in the UI */
|
|
118
111
|
showTcpSelect: boolean = true
|
|
@@ -145,34 +138,34 @@ export class JoggingStore {
|
|
|
145
138
|
const { nova } = jogger
|
|
146
139
|
|
|
147
140
|
// Find out what TCPs this motion group has (we need it for jogging)
|
|
148
|
-
const [coordinatesystems,
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
141
|
+
const [motionGroupSpec, { coordinatesystems }, { tcps }] =
|
|
142
|
+
await Promise.all([
|
|
143
|
+
nova.api.motionGroupInfos.getMotionGroupSpecification(
|
|
144
|
+
jogger.motionGroupId,
|
|
145
|
+
),
|
|
146
|
+
|
|
147
|
+
// Fetch coord systems so user can select between them
|
|
148
|
+
nova.api.coordinateSystems.listCoordinateSystems("ROTATION_VECTOR"),
|
|
149
|
+
|
|
150
|
+
// Same for TCPs
|
|
151
|
+
nova.api.motionGroupInfos.listTcps(
|
|
152
|
+
jogger.motionGroupId,
|
|
153
|
+
"ROTATION_VECTOR",
|
|
154
|
+
),
|
|
155
|
+
])
|
|
156
|
+
|
|
157
|
+
return new JoggingStore(
|
|
158
|
+
jogger,
|
|
159
|
+
motionGroupSpec,
|
|
160
|
+
coordinatesystems || [],
|
|
161
|
+
tcps || [],
|
|
162
|
+
)
|
|
170
163
|
}
|
|
171
164
|
|
|
172
165
|
constructor(
|
|
173
166
|
readonly jogger: JoggerConnection,
|
|
167
|
+
readonly motionGroupSpec: MotionGroupSpecification,
|
|
174
168
|
readonly coordSystems: CoordinateSystem[],
|
|
175
|
-
readonly motionGroupDescription: MotionGroupDescription,
|
|
176
169
|
readonly tcps: RobotTcp[],
|
|
177
170
|
) {
|
|
178
171
|
// TODO workaround for default coord system on backend having a canonical id
|
|
@@ -186,21 +179,13 @@ export class JoggingStore {
|
|
|
186
179
|
this.selectedCoordSystemId = coordSystems[0]?.coordinate_system || "world"
|
|
187
180
|
this.selectedTcpId = tcps[0]?.id || ""
|
|
188
181
|
|
|
189
|
-
// Make all properties observable and actions auto-bound
|
|
190
182
|
makeAutoObservable(this, {}, { autoBind: true })
|
|
191
183
|
|
|
192
|
-
// Register blocked watching
|
|
193
|
-
this.jogger.onBlocked = () => {
|
|
194
|
-
this.block()
|
|
195
|
-
}
|
|
196
|
-
|
|
197
184
|
// Load user settings from local storage if available
|
|
198
185
|
this.loadFromLocalStorage()
|
|
199
186
|
|
|
200
187
|
// Automatically save user settings to local storage when save changes
|
|
201
188
|
this.disposers.push(autorun(() => this.saveToLocalStorage()))
|
|
202
|
-
|
|
203
|
-
// Assign joggingStore to window
|
|
204
189
|
;(window as any).joggingStore = this
|
|
205
190
|
}
|
|
206
191
|
|
|
@@ -216,31 +201,30 @@ export class JoggingStore {
|
|
|
216
201
|
}
|
|
217
202
|
|
|
218
203
|
async deactivate() {
|
|
219
|
-
|
|
220
|
-
|
|
204
|
+
const websocket = this.jogger.activeWebsocket
|
|
205
|
+
|
|
206
|
+
this.jogger.setJoggingMode("increment")
|
|
207
|
+
|
|
208
|
+
if (websocket) {
|
|
209
|
+
await websocket.closed()
|
|
221
210
|
}
|
|
222
211
|
}
|
|
223
212
|
|
|
224
213
|
/** Activate the jogger with current settings */
|
|
225
214
|
async activate() {
|
|
226
215
|
if (this.currentTab.id === "cartesian") {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
) {
|
|
231
|
-
this.jogger.setOptions({
|
|
232
|
-
tcp: this.selectedTcpId,
|
|
233
|
-
orientation: this.selectedOrientation as JoggerOrientation,
|
|
234
|
-
})
|
|
216
|
+
const cartesianJoggingOpts = {
|
|
217
|
+
tcpId: this.selectedTcpId,
|
|
218
|
+
coordSystemId: this.activeCoordSystemId,
|
|
235
219
|
}
|
|
236
220
|
|
|
237
221
|
if (this.activeDiscreteIncrement) {
|
|
238
|
-
this.jogger.setJoggingMode("
|
|
222
|
+
this.jogger.setJoggingMode("increment", cartesianJoggingOpts)
|
|
239
223
|
} else {
|
|
240
|
-
this.jogger.setJoggingMode("
|
|
224
|
+
this.jogger.setJoggingMode("cartesian", cartesianJoggingOpts)
|
|
241
225
|
}
|
|
242
226
|
} else {
|
|
243
|
-
this.jogger.setJoggingMode("
|
|
227
|
+
this.jogger.setJoggingMode("joint")
|
|
244
228
|
}
|
|
245
229
|
|
|
246
230
|
return this.jogger
|
|
@@ -449,17 +433,6 @@ export class JoggingStore {
|
|
|
449
433
|
this.locks.delete(id)
|
|
450
434
|
}
|
|
451
435
|
|
|
452
|
-
block() {
|
|
453
|
-
this.blocked = true
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
unblock() {
|
|
457
|
-
this.blocked = false
|
|
458
|
-
if (this.jogger.mode === "jogging") {
|
|
459
|
-
this.jogger.initializeJoggingWebsocket()
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
|
|
463
436
|
/** Lock the UI until the given async callback resolves */
|
|
464
437
|
async withMotionLock(fn: () => Promise<void>) {
|
|
465
438
|
const lockId = uniqueId()
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Button, Stack } from "@mui/material"
|
|
2
|
-
import { poseToWandelscriptString
|
|
2
|
+
import { poseToWandelscriptString } from "@wandelbots/nova-js"
|
|
3
|
+
import type { TcpPose } from "@wandelbots/nova-js/v1"
|
|
3
4
|
import { observer } from "mobx-react-lite"
|
|
4
5
|
import { useState } from "react"
|
|
5
6
|
import { externalizeComponent } from "../../externalizeComponent"
|
|
6
7
|
import { CopyableText } from "../CopyableText"
|
|
7
8
|
|
|
8
9
|
export type PoseCartesianValuesProps = {
|
|
9
|
-
tcpPose:
|
|
10
|
+
tcpPose: TcpPose
|
|
10
11
|
showCopyButton?: boolean
|
|
11
12
|
}
|
|
12
13
|
|
|
@@ -43,7 +44,7 @@ export const PoseCartesianValues = externalizeComponent(
|
|
|
43
44
|
onClick={handleCopy}
|
|
44
45
|
sx={{ flexShrink: 0 }}
|
|
45
46
|
>
|
|
46
|
-
{copyMessage ? copyMessage : "Copy"}
|
|
47
|
+
{ copyMessage ? copyMessage : "Copy"}
|
|
47
48
|
</Button>
|
|
48
49
|
)}
|
|
49
50
|
</Stack>
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { Button, Stack } from "@mui/material"
|
|
2
|
+
import type { Joints } from "@wandelbots/nova-api/v1"
|
|
2
3
|
import { observer } from "mobx-react-lite"
|
|
3
4
|
import { useState } from "react"
|
|
4
5
|
import { externalizeComponent } from "../../externalizeComponent"
|
|
5
6
|
import { CopyableText } from "../CopyableText"
|
|
6
7
|
|
|
7
8
|
export type PoseJointValuesProps = {
|
|
8
|
-
joints:
|
|
9
|
+
joints: Joints
|
|
9
10
|
showCopyButton?: boolean
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
export const PoseJointValues = externalizeComponent(
|
|
13
14
|
observer(({ joints, showCopyButton = false }: PoseJointValuesProps) => {
|
|
14
15
|
const [copyMessage, setCopyMessage] = useState<string | null>(null)
|
|
15
|
-
const poseString = `[${joints.map((j: number) => parseFloat(j.toFixed(4))).join(", ")}]`
|
|
16
|
+
const poseString = `[${joints.joints.map((j: number) => parseFloat(j.toFixed(4))).join(", ")}]`
|
|
16
17
|
|
|
17
18
|
const handleCopy = async () => {
|
|
18
19
|
try {
|
|
@@ -42,7 +43,7 @@ export const PoseJointValues = externalizeComponent(
|
|
|
42
43
|
onClick={handleCopy}
|
|
43
44
|
sx={{ flexShrink: 0 }}
|
|
44
45
|
>
|
|
45
|
-
{copyMessage ? copyMessage : "Copy"}
|
|
46
|
+
{ copyMessage ? copyMessage : "Copy"}
|
|
46
47
|
</Button>
|
|
47
48
|
)}
|
|
48
49
|
</Stack>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Line } from "@react-three/drei"
|
|
2
|
-
import type { DHParameter } from "@wandelbots/nova-
|
|
2
|
+
import type { DHParameter } from "@wandelbots/nova-api/v1"
|
|
3
3
|
import React, { useRef } from "react"
|
|
4
4
|
import type * as THREE from "three"
|
|
5
5
|
import { Matrix4, Quaternion, Vector3 } from "three"
|
|
@@ -113,7 +113,8 @@ export function DHRobot({
|
|
|
113
113
|
{dhParameters!.map((param, index) => {
|
|
114
114
|
const { a, b } = getLinePoints(
|
|
115
115
|
param,
|
|
116
|
-
rapidlyChangingMotionState.joint_position[index] ??
|
|
116
|
+
rapidlyChangingMotionState.state.joint_position.joints[index] ??
|
|
117
|
+
0,
|
|
117
118
|
)
|
|
118
119
|
const jointName = `dhrobot_J0${index}`
|
|
119
120
|
return (
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ThreeElements } from "@react-three/fiber"
|
|
2
2
|
|
|
3
|
+
import type { ConnectedMotionGroup } from "@wandelbots/nova-js/v1"
|
|
3
4
|
import type { Group } from "three"
|
|
4
|
-
import type { ConnectedMotionGroup } from "../../lib/ConnectedMotionGroup"
|
|
5
5
|
import { defaultGetModel } from "./robotModelLogic"
|
|
6
6
|
import { SupportedRobot } from "./SupportedRobot"
|
|
7
7
|
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
DHParameter,
|
|
3
|
+
MotionGroupStateResponse,
|
|
4
|
+
} from "@wandelbots/nova-api/v1"
|
|
2
5
|
import { describe, expect, it, vi } from "vitest"
|
|
3
6
|
import RobotAnimator from "./RobotAnimator"
|
|
4
7
|
|
|
@@ -23,8 +26,12 @@ describe("RobotAnimator", () => {
|
|
|
23
26
|
|
|
24
27
|
it("should handle props with different numbers of joints", () => {
|
|
25
28
|
// Test that the component accepts different numbers of DH parameters
|
|
26
|
-
const mockMotionState4Joints:
|
|
27
|
-
|
|
29
|
+
const mockMotionState4Joints: MotionGroupStateResponse = {
|
|
30
|
+
state: {
|
|
31
|
+
joint_position: {
|
|
32
|
+
joints: [0.1, 0.2, 0.3, 0.4],
|
|
33
|
+
},
|
|
34
|
+
},
|
|
28
35
|
} as any
|
|
29
36
|
|
|
30
37
|
const mockDHParameters4Joints: DHParameter[] = [
|
|
@@ -34,8 +41,12 @@ describe("RobotAnimator", () => {
|
|
|
34
41
|
{ theta: 0, reverse_rotation_direction: false },
|
|
35
42
|
]
|
|
36
43
|
|
|
37
|
-
const mockMotionState7Joints:
|
|
38
|
-
|
|
44
|
+
const mockMotionState7Joints: MotionGroupStateResponse = {
|
|
45
|
+
state: {
|
|
46
|
+
joint_position: {
|
|
47
|
+
joints: [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7],
|
|
48
|
+
},
|
|
49
|
+
},
|
|
39
50
|
} as any
|
|
40
51
|
|
|
41
52
|
const mockDHParameters7Joints: DHParameter[] = Array(7).fill({
|
|
@@ -52,7 +63,9 @@ describe("RobotAnimator", () => {
|
|
|
52
63
|
}
|
|
53
64
|
// Verify props are correctly typed
|
|
54
65
|
expect(props4.dhParameters).toHaveLength(4)
|
|
55
|
-
expect(
|
|
66
|
+
expect(
|
|
67
|
+
props4.rapidlyChangingMotionState.state.joint_position.joints,
|
|
68
|
+
).toHaveLength(4)
|
|
56
69
|
}).not.toThrow()
|
|
57
70
|
|
|
58
71
|
expect(() => {
|
|
@@ -62,7 +75,9 @@ describe("RobotAnimator", () => {
|
|
|
62
75
|
children: null,
|
|
63
76
|
}
|
|
64
77
|
expect(props7.dhParameters).toHaveLength(7)
|
|
65
|
-
expect(
|
|
78
|
+
expect(
|
|
79
|
+
props7.rapidlyChangingMotionState.state.joint_position.joints,
|
|
80
|
+
).toHaveLength(7)
|
|
66
81
|
}).not.toThrow()
|
|
67
82
|
})
|
|
68
83
|
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { useFrame, useThree } from "@react-three/fiber"
|
|
2
|
-
import type {
|
|
2
|
+
import type {
|
|
3
|
+
DHParameter,
|
|
4
|
+
MotionGroupStateResponse,
|
|
5
|
+
} from "@wandelbots/nova-api/v1"
|
|
3
6
|
import React, { useEffect, useRef } from "react"
|
|
4
7
|
import type { Group, Object3D } from "three"
|
|
5
8
|
import { useAutorun } from "../utils/hooks"
|
|
@@ -7,7 +10,7 @@ import { ValueInterpolator } from "../utils/interpolation"
|
|
|
7
10
|
import { collectJoints } from "./robotModelLogic"
|
|
8
11
|
|
|
9
12
|
type RobotAnimatorProps = {
|
|
10
|
-
rapidlyChangingMotionState:
|
|
13
|
+
rapidlyChangingMotionState: MotionGroupStateResponse
|
|
11
14
|
dhParameters: DHParameter[]
|
|
12
15
|
onRotationChanged?: (joints: Object3D[], jointValues: number[]) => void
|
|
13
16
|
children: React.ReactNode
|
|
@@ -26,9 +29,10 @@ export default function RobotAnimator({
|
|
|
26
29
|
|
|
27
30
|
// Initialize interpolator
|
|
28
31
|
useEffect(() => {
|
|
29
|
-
const initialJointValues =
|
|
30
|
-
(
|
|
31
|
-
|
|
32
|
+
const initialJointValues =
|
|
33
|
+
rapidlyChangingMotionState.state.joint_position.joints.filter(
|
|
34
|
+
(item) => item !== undefined,
|
|
35
|
+
)
|
|
32
36
|
|
|
33
37
|
interpolatorRef.current = new ValueInterpolator(initialJointValues, {
|
|
34
38
|
tension: 120, // Controls spring stiffness - higher values create faster, more responsive motion
|
|
@@ -87,9 +91,10 @@ export default function RobotAnimator({
|
|
|
87
91
|
}
|
|
88
92
|
|
|
89
93
|
useAutorun(() => {
|
|
90
|
-
const newJointValues =
|
|
91
|
-
(
|
|
92
|
-
|
|
94
|
+
const newJointValues =
|
|
95
|
+
rapidlyChangingMotionState.state.joint_position.joints.filter(
|
|
96
|
+
(item) => item !== undefined,
|
|
97
|
+
)
|
|
93
98
|
|
|
94
99
|
requestAnimationFrame(() => updateJoints(newJointValues))
|
|
95
100
|
})
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { ThreeElements } from "@react-three/fiber"
|
|
2
|
-
import type {
|
|
2
|
+
import type {
|
|
3
|
+
DHParameter,
|
|
4
|
+
MotionGroupStateResponse,
|
|
5
|
+
} from "@wandelbots/nova-api/v1"
|
|
3
6
|
import { Suspense, useCallback, useEffect, useState } from "react"
|
|
4
7
|
import { DHRobot } from "./DHRobot"
|
|
5
8
|
|
|
@@ -13,12 +16,12 @@ import { applyGhostStyle, removeGhostStyle } from "./ghostStyle"
|
|
|
13
16
|
import { defaultGetModel } from "./robotModelLogic"
|
|
14
17
|
|
|
15
18
|
export type DHRobotProps = {
|
|
16
|
-
rapidlyChangingMotionState:
|
|
19
|
+
rapidlyChangingMotionState: MotionGroupStateResponse
|
|
17
20
|
dhParameters: Array<DHParameter>
|
|
18
21
|
} & ThreeElements["group"]
|
|
19
22
|
|
|
20
23
|
export type SupportedRobotProps = {
|
|
21
|
-
rapidlyChangingMotionState:
|
|
24
|
+
rapidlyChangingMotionState: MotionGroupStateResponse
|
|
22
25
|
modelFromController: string
|
|
23
26
|
dhParameters: DHParameter[]
|
|
24
27
|
flangeRef?: React.Ref<THREE.Group>
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { useTheme, type PopoverOrigin } from "@mui/material"
|
|
2
2
|
import { observer } from "mobx-react-lite"
|
|
3
|
-
import { useId } from "react"
|
|
4
3
|
import { Trans, useTranslation } from "react-i18next"
|
|
5
4
|
import ControllerTypePhysicalIcon from "./icons/controller-type-physical.svg"
|
|
6
5
|
import ControllerTypeVirtualIcon from "./icons/controller-type-virtual.svg"
|
|
@@ -23,13 +22,12 @@ export const ControllerTypeIndicator = observer(
|
|
|
23
22
|
compact,
|
|
24
23
|
}: ControllerTypeIndicatorProps) => {
|
|
25
24
|
const theme = useTheme()
|
|
26
|
-
const componentId = useId()
|
|
27
25
|
const { t } = useTranslation()
|
|
28
26
|
|
|
29
27
|
if (isVirtual) {
|
|
30
28
|
return (
|
|
31
29
|
<IndicatorWithExplanation
|
|
32
|
-
id=
|
|
30
|
+
id="motion-group-virtual"
|
|
33
31
|
icon={ControllerTypeVirtualIcon}
|
|
34
32
|
color={theme.palette.tertiary.main}
|
|
35
33
|
name={t("SafetyBar.ControllerType.Virtual.lb")}
|
|
@@ -54,7 +52,7 @@ export const ControllerTypeIndicator = observer(
|
|
|
54
52
|
|
|
55
53
|
return (
|
|
56
54
|
<IndicatorWithExplanation
|
|
57
|
-
id=
|
|
55
|
+
id="motion-group-physical"
|
|
58
56
|
icon={ControllerTypePhysicalIcon}
|
|
59
57
|
color={theme.palette.primary.main}
|
|
60
58
|
name={t("SafetyBar.ControllerType.Physical.lb")}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { useTheme, type PopoverOrigin } from "@mui/material"
|
|
2
|
-
import type {
|
|
2
|
+
import type { RobotControllerStateOperationModeEnum } from "@wandelbots/nova-js/v1"
|
|
3
3
|
import { observer } from "mobx-react-lite"
|
|
4
|
-
import { useId } from "react"
|
|
5
4
|
import { Trans, useTranslation } from "react-i18next"
|
|
6
5
|
import OperationModeAutomaticIcon from "./icons/operation-mode-automatic.svg"
|
|
7
6
|
import OperationModeErrorIcon from "./icons/operation-mode-error.svg"
|
|
@@ -9,7 +8,7 @@ import OperationModeManualIcon from "./icons/operation-mode-manual.svg"
|
|
|
9
8
|
import { IndicatorWithExplanation } from "./IndicatorWithExplanation"
|
|
10
9
|
|
|
11
10
|
interface OperationModeIndicatorProps {
|
|
12
|
-
operationMode:
|
|
11
|
+
operationMode: RobotControllerStateOperationModeEnum
|
|
13
12
|
anchorOrigin?: PopoverOrigin
|
|
14
13
|
transformOrigin?: PopoverOrigin
|
|
15
14
|
compact: boolean
|
|
@@ -24,13 +23,12 @@ export const OperationModeIndicator = observer(
|
|
|
24
23
|
}: OperationModeIndicatorProps) => {
|
|
25
24
|
const { t } = useTranslation()
|
|
26
25
|
const theme = useTheme()
|
|
27
|
-
const componentId = useId()
|
|
28
26
|
|
|
29
27
|
switch (operationMode) {
|
|
30
28
|
case "OPERATION_MODE_AUTO":
|
|
31
29
|
return (
|
|
32
30
|
<IndicatorWithExplanation
|
|
33
|
-
id=
|
|
31
|
+
id="operation-mode-auto"
|
|
34
32
|
icon={OperationModeAutomaticIcon}
|
|
35
33
|
title={t("SafetyBar.OperationMode.ti")}
|
|
36
34
|
name={t("SafetyBar.OperationMode.Automatic.ti")}
|
|
@@ -51,7 +49,7 @@ export const OperationModeIndicator = observer(
|
|
|
51
49
|
case "OPERATION_MODE_MANUAL_T2": {
|
|
52
50
|
return (
|
|
53
51
|
<IndicatorWithExplanation
|
|
54
|
-
id=
|
|
52
|
+
id="operation-mode-manual"
|
|
55
53
|
icon={OperationModeManualIcon}
|
|
56
54
|
color={theme.palette.warning.main}
|
|
57
55
|
title={t("SafetyBar.OperationMode.ti")}
|
|
@@ -73,7 +71,7 @@ export const OperationModeIndicator = observer(
|
|
|
73
71
|
default:
|
|
74
72
|
return (
|
|
75
73
|
<IndicatorWithExplanation
|
|
76
|
-
id=
|
|
74
|
+
id="operation-mode-error"
|
|
77
75
|
icon={OperationModeErrorIcon}
|
|
78
76
|
color={theme.palette.warning.main}
|
|
79
77
|
title={t("SafetyBar.OperationMode.ti")}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { Divider, Stack, type PopoverOrigin } from "@mui/material"
|
|
2
|
-
import type {
|
|
2
|
+
import type {
|
|
3
|
+
RobotControllerStateOperationModeEnum,
|
|
4
|
+
RobotControllerStateSafetyStateEnum,
|
|
5
|
+
} from "@wandelbots/nova-js/v1"
|
|
3
6
|
import { observer } from "mobx-react-lite"
|
|
4
7
|
import { externalizeComponent } from "../../externalizeComponent"
|
|
5
8
|
import { ControllerTypeIndicator } from "./ControllerTypeIndicator"
|
|
@@ -9,8 +12,8 @@ import { SafetyStateIndicator } from "./SafetyStateIndicator"
|
|
|
9
12
|
export interface SafetyBarProps {
|
|
10
13
|
isVirtual: boolean
|
|
11
14
|
motionGroupId: string
|
|
12
|
-
operationMode:
|
|
13
|
-
safetyState:
|
|
15
|
+
operationMode: RobotControllerStateOperationModeEnum
|
|
16
|
+
safetyState: RobotControllerStateSafetyStateEnum
|
|
14
17
|
anchorOrigin?: PopoverOrigin
|
|
15
18
|
transformOrigin?: PopoverOrigin
|
|
16
19
|
compact?: boolean
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { useTheme, type PopoverOrigin } from "@mui/material"
|
|
2
|
-
import type {
|
|
2
|
+
import type { RobotControllerStateSafetyStateEnum } from "@wandelbots/nova-js/v1"
|
|
3
3
|
import { observer } from "mobx-react-lite"
|
|
4
|
-
import { useId } from "react"
|
|
5
4
|
import { Trans, useTranslation } from "react-i18next"
|
|
6
5
|
import { assertUnreachable } from "../utils/errorHandling"
|
|
7
6
|
import SafetyStateErrorIcon from "./icons/safety-state-error.svg"
|
|
@@ -12,7 +11,7 @@ import SafetyStateStopIcon from "./icons/safety-state-stop.svg"
|
|
|
12
11
|
import { IndicatorWithExplanation } from "./IndicatorWithExplanation"
|
|
13
12
|
|
|
14
13
|
interface SafetyStateIndicatorProps {
|
|
15
|
-
safetyState:
|
|
14
|
+
safetyState: RobotControllerStateSafetyStateEnum
|
|
16
15
|
anchorOrigin?: PopoverOrigin
|
|
17
16
|
transformOrigin?: PopoverOrigin
|
|
18
17
|
compact: boolean
|
|
@@ -27,14 +26,13 @@ export const SafetyStateIndicator = observer(
|
|
|
27
26
|
}: SafetyStateIndicatorProps) => {
|
|
28
27
|
const { t } = useTranslation()
|
|
29
28
|
const theme = useTheme()
|
|
30
|
-
const componentId = useId()
|
|
31
29
|
|
|
32
30
|
switch (safetyState) {
|
|
33
31
|
// Normal state, robot can move
|
|
34
32
|
case "SAFETY_STATE_NORMAL":
|
|
35
33
|
return (
|
|
36
34
|
<IndicatorWithExplanation
|
|
37
|
-
id=
|
|
35
|
+
id="safety-state-normal"
|
|
38
36
|
title={t("SafetyBar.SafetyState.ti")}
|
|
39
37
|
name={t("SafetyBar.SafetyState.Normal.lb")}
|
|
40
38
|
label={compact ? null : t("SafetyBar.SafetyState.Normal.lb")}
|
|
@@ -56,7 +54,7 @@ export const SafetyStateIndicator = observer(
|
|
|
56
54
|
case "SAFETY_STATE_ROBOT_EMERGENCY_STOP":
|
|
57
55
|
return (
|
|
58
56
|
<IndicatorWithExplanation
|
|
59
|
-
id=
|
|
57
|
+
id="safety-state-estop"
|
|
60
58
|
title={t("SafetyBar.SafetyState.ti")}
|
|
61
59
|
name={t("SafetyBar.SafetyState.Estop.lb")}
|
|
62
60
|
label={compact ? null : t("SafetyBar.SafetyState.Estop.lb")}
|
|
@@ -83,7 +81,7 @@ export const SafetyStateIndicator = observer(
|
|
|
83
81
|
case "SAFETY_STATE_STOP":
|
|
84
82
|
return (
|
|
85
83
|
<IndicatorWithExplanation
|
|
86
|
-
id=
|
|
84
|
+
id="safety-state-stop"
|
|
87
85
|
icon={SafetyStateStopIcon}
|
|
88
86
|
title={t("SafetyBar.SafetyState.ti")}
|
|
89
87
|
name={t("SafetyBar.SafetyState.Stop.lb")}
|
|
@@ -110,7 +108,7 @@ export const SafetyStateIndicator = observer(
|
|
|
110
108
|
case "SAFETY_STATE_VIOLATION":
|
|
111
109
|
return (
|
|
112
110
|
<IndicatorWithExplanation
|
|
113
|
-
id=
|
|
111
|
+
id="safety-state-manual-action-required"
|
|
114
112
|
icon={SafetyStateManualActionRequiredIcon}
|
|
115
113
|
color={theme.palette.warning.main}
|
|
116
114
|
title={t("SafetyBar.SafetyState.ti")}
|
|
@@ -137,7 +135,7 @@ export const SafetyStateIndicator = observer(
|
|
|
137
135
|
case "SAFETY_STATE_FAULT":
|
|
138
136
|
return (
|
|
139
137
|
<IndicatorWithExplanation
|
|
140
|
-
id=
|
|
138
|
+
id="safety-state-error"
|
|
141
139
|
icon={SafetyStateErrorIcon}
|
|
142
140
|
color={theme.palette.error.main}
|
|
143
141
|
title={t("SafetyBar.SafetyState.ti")}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { AxiosError } from "axios"
|
|
2
2
|
import { tryStringifyJson } from "./converters"
|
|
3
3
|
|
|
4
|
-
// Please note: These helper functions also exist in nova.js
|
|
5
|
-
// (with slightly different formatting), and will be unified
|
|
6
|
-
// at some point in the future.
|
|
7
|
-
|
|
8
4
|
export function delay(ms: number) {
|
|
9
5
|
return new Promise((resolve) => setTimeout(resolve, ms))
|
|
10
6
|
}
|
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
"Jogging.Velocity.lb": "Geschwindigkeit",
|
|
5
5
|
"General.degree.variable": "{{amount}}°",
|
|
6
6
|
"General.mm.variable": "{{amount}} mm",
|
|
7
|
-
"Jogging.Blocked.ti": "Verbindung blockiert",
|
|
8
|
-
"Jogging.Blocked.lb": "Ein anderer Client kontrolliert das Jogging.",
|
|
9
|
-
"Jogging.Blocked.Reenable.bt": "Neu verbinden",
|
|
10
7
|
"Jogging.Cartesian.MotionType.lb": "Bewegungstyp",
|
|
11
8
|
"Jogging.Cartesian.Translation.bt": "Translation",
|
|
12
9
|
"Jogging.Cartesian.Rotation.bt": "Rotation",
|
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
"Jogging.Velocity.lb": "Velocity",
|
|
5
5
|
"General.degree.variable": "{{amount}}°",
|
|
6
6
|
"General.mm.variable": "{{amount}} mm",
|
|
7
|
-
"Jogging.Blocked.ti": "Connection blocked",
|
|
8
|
-
"Jogging.Blocked.lb": "Another client is currently controlling the jogging.",
|
|
9
|
-
"Jogging.Blocked.Reenable.bt": "Reconnect",
|
|
10
7
|
"Jogging.Cartesian.MotionType.lb": "Motion type",
|
|
11
8
|
"Jogging.Cartesian.Translation.bt": "Translation",
|
|
12
9
|
"Jogging.Cartesian.Rotation.bt": "Rotation",
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
export * from "./3d"
|
|
3
|
-
export * from "./
|
|
4
|
-
export * from "./
|
|
1
|
+
export { default as CollisionSceneRenderer } from "./components/3d-viewport/collider/CollisionSceneRenderer"
|
|
2
|
+
export * from "./components/3d-viewport/PresetEnvironment"
|
|
3
|
+
export * from "./components/3d-viewport/SafetyZonesRenderer"
|
|
4
|
+
export * from "./components/3d-viewport/TrajectoryRenderer"
|
|
5
|
+
export * from "./components/AppHeader"
|
|
6
|
+
export * from "./components/CycleTimer"
|
|
7
|
+
export * from "./components/Timer"
|
|
8
|
+
export * from "./components/DataGrid"
|
|
9
|
+
export * from "./components/jogging/JoggingCartesianAxisControl"
|
|
10
|
+
export * from "./components/jogging/JoggingJointRotationControl"
|
|
11
|
+
export * from "./components/jogging/JoggingPanel"
|
|
12
|
+
export { JoggingStore } from "./components/jogging/JoggingStore"
|
|
13
|
+
export * from "./components/jogging/PoseCartesianValues"
|
|
14
|
+
export * from "./components/jogging/PoseJointValues"
|
|
15
|
+
export * from "./components/LoadingCover"
|
|
16
|
+
export * from "./components/LogPanel"
|
|
17
|
+
export { LogStore } from "./components/LogStore"
|
|
18
|
+
export * from "./components/LogViewer"
|
|
19
|
+
export * from "./components/modal/NoMotionGroupModal"
|
|
20
|
+
export * from "./components/ProgramControl"
|
|
21
|
+
export * from "./components/ProgramStateIndicator"
|
|
22
|
+
export * from "./components/RobotCard"
|
|
23
|
+
export * from "./components/RobotListItem"
|
|
24
|
+
export * from "./components/robots/AxisConfig"
|
|
25
|
+
export {
|
|
26
|
+
MANUFACTURER_HOME_CONFIGS,
|
|
27
|
+
extractManufacturer,
|
|
28
|
+
getDefaultHomeConfig,
|
|
29
|
+
} from "./components/robots/manufacturerHomePositions"
|
|
30
|
+
export * from "./components/robots/Robot"
|
|
31
|
+
export { defaultGetModel } from "./components/robots/robotModelLogic"
|
|
32
|
+
export * from "./components/robots/SupportedRobot"
|
|
33
|
+
export * from "./components/RobotSetupReadinessIndicator"
|
|
34
|
+
export * from "./components/safetyBar/SafetyBar"
|
|
35
|
+
export * from "./components/SelectableFab"
|
|
36
|
+
export * from "./components/TabBar"
|
|
37
|
+
export * from "./components/utils/hooks"
|
|
38
|
+
export * from "./components/utils/interpolation"
|
|
39
|
+
export * from "./components/VelocitySlider"
|
|
40
|
+
export * from "./components/wandelscript-editor/WandelscriptEditor"
|
|
41
|
+
export * from "./i18n/config"
|
|
42
|
+
export * from "./themes/themeTypes"
|
|
43
|
+
export { createNovaMuiTheme } from "./themes/theming"
|
package/dist/3d.cjs.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./manufacturerHomePositions-Ca80ycLi.cjs");exports.CollisionSceneRenderer=e.CollisionSceneRenderer;exports.MANUFACTURER_HOME_CONFIGS=e.MANUFACTURER_HOME_CONFIGS;exports.PresetEnvironment=e.PresetEnvironment;exports.Robot=e.Robot;exports.RobotCard=e.RobotCard;exports.SafetyZonesRenderer=e.SafetyZonesRenderer;exports.SupportedRobot=e.SupportedRobot;exports.TrajectoryRenderer=e.TrajectoryRenderer;exports.defaultAxisConfig=e.defaultAxisConfig;exports.defaultGetModel=e.defaultGetModel;exports.extractManufacturer=e.extractManufacturer;exports.getDefaultHomeConfig=e.getDefaultHomeConfig;
|
|
2
|
-
//# sourceMappingURL=3d.cjs.js.map
|