urdf-loader 0.12.2 → 0.12.4
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/package.json +1 -1
- package/src/URDFLoader.d.ts +1 -0
- package/src/URDFLoader.js +2 -9
- package/umd/URDFLoader.js +2 -9
- package/umd/URDFLoader.js.map +1 -1
package/package.json
CHANGED
package/src/URDFLoader.d.ts
CHANGED
package/src/URDFLoader.js
CHANGED
|
@@ -112,13 +112,7 @@ class URDFLoader {
|
|
|
112
112
|
})
|
|
113
113
|
.then(data => {
|
|
114
114
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
this.workingPath = workingPath;
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
const model = this.parse(data);
|
|
115
|
+
const model = this.parse(data, this.workingPath || workingPath);
|
|
122
116
|
onComplete(model);
|
|
123
117
|
manager.itemEnd(urdfPath);
|
|
124
118
|
|
|
@@ -141,13 +135,12 @@ class URDFLoader {
|
|
|
141
135
|
|
|
142
136
|
}
|
|
143
137
|
|
|
144
|
-
parse(content) {
|
|
138
|
+
parse(content, workingPath = this.workingPath) {
|
|
145
139
|
|
|
146
140
|
const packages = this.packages;
|
|
147
141
|
const loadMeshCb = this.loadMeshCb;
|
|
148
142
|
const parseVisual = this.parseVisual;
|
|
149
143
|
const parseCollision = this.parseCollision;
|
|
150
|
-
const workingPath = this.workingPath;
|
|
151
144
|
const manager = this.manager;
|
|
152
145
|
const linkMap = {};
|
|
153
146
|
const jointMap = {};
|
package/umd/URDFLoader.js
CHANGED
|
@@ -598,13 +598,7 @@
|
|
|
598
598
|
})
|
|
599
599
|
.then(data => {
|
|
600
600
|
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
this.workingPath = workingPath;
|
|
604
|
-
|
|
605
|
-
}
|
|
606
|
-
|
|
607
|
-
const model = this.parse(data);
|
|
601
|
+
const model = this.parse(data, this.workingPath || workingPath);
|
|
608
602
|
onComplete(model);
|
|
609
603
|
manager.itemEnd(urdfPath);
|
|
610
604
|
|
|
@@ -627,13 +621,12 @@
|
|
|
627
621
|
|
|
628
622
|
}
|
|
629
623
|
|
|
630
|
-
parse(content) {
|
|
624
|
+
parse(content, workingPath = this.workingPath) {
|
|
631
625
|
|
|
632
626
|
const packages = this.packages;
|
|
633
627
|
const loadMeshCb = this.loadMeshCb;
|
|
634
628
|
const parseVisual = this.parseVisual;
|
|
635
629
|
const parseCollision = this.parseCollision;
|
|
636
|
-
const workingPath = this.workingPath;
|
|
637
630
|
const manager = this.manager;
|
|
638
631
|
const linkMap = {};
|
|
639
632
|
const jointMap = {};
|
package/umd/URDFLoader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"URDFLoader.js","sources":["../src/URDFClasses.js","../src/URDFLoader.js"],"sourcesContent":["import { Euler, Object3D, Vector3, Quaternion, Matrix4 } from 'three';\n\nconst _tempAxis = new Vector3();\nconst _tempEuler = new Euler();\nconst _tempTransform = new Matrix4();\nconst _tempOrigTransform = new Matrix4();\nconst _tempQuat = new Quaternion();\nconst _tempScale = new Vector3(1.0, 1.0, 1.0);\nconst _tempPosition = new Vector3();\n\nclass URDFBase extends Object3D {\n\n constructor(...args) {\n\n super(...args);\n this.urdfNode = null;\n this.urdfName = '';\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.urdfNode = source.urdfNode;\n this.urdfName = source.urdfName;\n\n return this;\n\n }\n\n}\n\nclass URDFCollider extends URDFBase {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFCollider = true;\n this.type = 'URDFCollider';\n\n }\n\n}\n\nclass URDFVisual extends URDFBase {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFVisual = true;\n this.type = 'URDFVisual';\n\n }\n\n}\n\nclass URDFLink extends URDFBase {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFLink = true;\n this.type = 'URDFLink';\n\n }\n\n}\n\nclass URDFJoint extends URDFBase {\n\n get jointType() {\n\n return this._jointType;\n\n }\n\n set jointType(v) {\n\n if (this.jointType === v) return;\n this._jointType = v;\n this.matrixWorldNeedsUpdate = true;\n switch (v) {\n\n case 'fixed':\n this.jointValue = [];\n break;\n\n case 'continuous':\n case 'revolute':\n case 'prismatic':\n this.jointValue = new Array(1).fill(0);\n break;\n\n case 'planar':\n // Planar joints are, 3dof: position XY and rotation Z.\n this.jointValue = new Array(3).fill(0);\n this.axis = new Vector3(0, 0, 1);\n break;\n\n case 'floating':\n this.jointValue = new Array(6).fill(0);\n break;\n\n }\n\n }\n\n get angle() {\n\n return this.jointValue[0];\n\n }\n\n constructor(...args) {\n\n super(...args);\n\n this.isURDFJoint = true;\n this.type = 'URDFJoint';\n\n this.jointValue = null;\n this.jointType = 'fixed';\n this.axis = new Vector3(1, 0, 0);\n this.limit = { lower: 0, upper: 0 };\n this.ignoreLimits = false;\n\n this.origPosition = null;\n this.origQuaternion = null;\n\n this.mimicJoints = [];\n\n }\n\n /* Overrides */\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.jointType = source.jointType;\n this.axis = source.axis.clone();\n this.limit.lower = source.limit.lower;\n this.limit.upper = source.limit.upper;\n this.ignoreLimits = false;\n\n this.jointValue = [...source.jointValue];\n\n this.origPosition = source.origPosition ? source.origPosition.clone() : null;\n this.origQuaternion = source.origQuaternion ? source.origQuaternion.clone() : null;\n\n this.mimicJoints = [...source.mimicJoints];\n\n return this;\n\n }\n\n /* Public Functions */\n /**\n * @param {...number|null} values The joint value components to set, optionally null for no-op\n * @returns {boolean} Whether the invocation of this function resulted in an actual change to the joint value\n */\n setJointValue(...values) {\n\n // Parse all incoming values into numbers except null, which we treat as a no-op for that value component.\n values = values.map(v => v === null ? null : parseFloat(v));\n\n if (!this.origPosition || !this.origQuaternion) {\n\n this.origPosition = this.position.clone();\n this.origQuaternion = this.quaternion.clone();\n\n }\n\n let didUpdate = false;\n\n this.mimicJoints.forEach(joint => {\n\n didUpdate = joint.updateFromMimickedJoint(...values) || didUpdate;\n\n });\n\n switch (this.jointType) {\n\n case 'fixed': {\n\n return didUpdate;\n\n }\n case 'continuous':\n case 'revolute': {\n\n let angle = values[0];\n if (angle == null) return didUpdate;\n if (angle === this.jointValue[0]) return didUpdate;\n\n if (!this.ignoreLimits && this.jointType === 'revolute') {\n\n angle = Math.min(this.limit.upper, angle);\n angle = Math.max(this.limit.lower, angle);\n\n }\n\n this.quaternion\n .setFromAxisAngle(this.axis, angle)\n .premultiply(this.origQuaternion);\n\n if (this.jointValue[0] !== angle) {\n\n this.jointValue[0] = angle;\n this.matrixWorldNeedsUpdate = true;\n return true;\n\n } else {\n\n return didUpdate;\n\n }\n\n }\n\n case 'prismatic': {\n\n let pos = values[0];\n if (pos == null) return didUpdate;\n if (pos === this.jointValue[0]) return didUpdate;\n\n if (!this.ignoreLimits) {\n\n pos = Math.min(this.limit.upper, pos);\n pos = Math.max(this.limit.lower, pos);\n\n }\n\n this.position.copy(this.origPosition);\n _tempAxis.copy(this.axis).applyEuler(this.rotation);\n this.position.addScaledVector(_tempAxis, pos);\n\n if (this.jointValue[0] !== pos) {\n\n this.jointValue[0] = pos;\n this.matrixWorldNeedsUpdate = true;\n return true;\n\n } else {\n\n return didUpdate;\n\n }\n\n }\n\n case 'floating': {\n\n // no-op if all values are identical to existing value or are null\n if (this.jointValue.every((value, index) => values[index] === value || values[index] === null)) return didUpdate;\n // Floating joints have six degrees of freedom: X, Y, Z, R, P, Y.\n this.jointValue[0] = values[0] !== null ? values[0] : this.jointValue[0];\n this.jointValue[1] = values[1] !== null ? values[1] : this.jointValue[1];\n this.jointValue[2] = values[2] !== null ? values[2] : this.jointValue[2];\n this.jointValue[3] = values[3] !== null ? values[3] : this.jointValue[3];\n this.jointValue[4] = values[4] !== null ? values[4] : this.jointValue[4];\n this.jointValue[5] = values[5] !== null ? values[5] : this.jointValue[5];\n\n // Compose transform of joint origin and transform due to joint values\n _tempOrigTransform.compose(this.origPosition, this.origQuaternion, _tempScale);\n _tempQuat.setFromEuler(\n _tempEuler.set(\n this.jointValue[3],\n this.jointValue[4],\n this.jointValue[5],\n 'XYZ',\n ),\n );\n _tempPosition.set(this.jointValue[0], this.jointValue[1], this.jointValue[2]);\n _tempTransform.compose(_tempPosition, _tempQuat, _tempScale);\n\n // Calcualte new transform\n _tempOrigTransform.premultiply(_tempTransform);\n this.position.setFromMatrixPosition(_tempOrigTransform);\n this.rotation.setFromRotationMatrix(_tempOrigTransform);\n\n this.matrixWorldNeedsUpdate = true;\n return true;\n }\n\n case 'planar': {\n\n // no-op if all values are identical to existing value or are null\n if (this.jointValue.every((value, index) => values[index] === value || values[index] === null)) return didUpdate;\n\n this.jointValue[0] = values[0] !== null ? values[0] : this.jointValue[0];\n this.jointValue[1] = values[1] !== null ? values[1] : this.jointValue[1];\n this.jointValue[2] = values[2] !== null ? values[2] : this.jointValue[2];\n\n // Compose transform of joint origin and transform due to joint values\n _tempOrigTransform.compose(this.origPosition, this.origQuaternion, _tempScale);\n _tempQuat.setFromAxisAngle(this.axis, this.jointValue[2]);\n _tempPosition.set(this.jointValue[0], this.jointValue[1], 0.0);\n _tempTransform.compose(_tempPosition, _tempQuat, _tempScale);\n\n // Calculate new transform\n _tempOrigTransform.premultiply(_tempTransform);\n this.position.setFromMatrixPosition(_tempOrigTransform);\n this.rotation.setFromRotationMatrix(_tempOrigTransform);\n\n this.matrixWorldNeedsUpdate = true;\n return true;\n }\n\n }\n\n return didUpdate;\n\n }\n\n}\n\nclass URDFMimicJoint extends URDFJoint {\n\n constructor(...args) {\n\n super(...args);\n this.type = 'URDFMimicJoint';\n this.mimicJoint = null;\n this.offset = 0;\n this.multiplier = 1;\n\n }\n\n updateFromMimickedJoint(...values) {\n\n const modifiedValues = values.map(x => x * this.multiplier + this.offset);\n return super.setJointValue(...modifiedValues);\n\n }\n\n /* Overrides */\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.mimicJoint = source.mimicJoint;\n this.offset = source.offset;\n this.multiplier = source.multiplier;\n\n return this;\n\n }\n\n}\n\nclass URDFRobot extends URDFLink {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFRobot = true;\n this.urdfNode = null;\n\n this.urdfRobotNode = null;\n this.robotName = null;\n\n this.links = null;\n this.joints = null;\n this.colliders = null;\n this.visual = null;\n this.frames = null;\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.urdfRobotNode = source.urdfRobotNode;\n this.robotName = source.robotName;\n\n this.links = {};\n this.joints = {};\n this.colliders = {};\n this.visual = {};\n\n this.traverse(c => {\n\n if (c.isURDFJoint && c.urdfName in source.joints) {\n\n this.joints[c.urdfName] = c;\n\n }\n\n if (c.isURDFLink && c.urdfName in source.links) {\n\n this.links[c.urdfName] = c;\n\n }\n\n if (c.isURDFCollider && c.urdfName in source.colliders) {\n\n this.colliders[c.urdfName] = c;\n\n }\n\n if (c.isURDFVisual && c.urdfName in source.visual) {\n\n this.visual[c.urdfName] = c;\n\n }\n\n });\n\n // Repair mimic joint references once we've re-accumulated all our joint data\n for (const joint in this.joints) {\n this.joints[joint].mimicJoints = this.joints[joint].mimicJoints.map((mimicJoint) => this.joints[mimicJoint.name]);\n }\n\n this.frames = {\n ...this.colliders,\n ...this.visual,\n ...this.links,\n ...this.joints,\n };\n\n return this;\n\n }\n\n getFrame(name) {\n\n return this.frames[name];\n\n }\n\n setJointValue(jointName, ...angle) {\n\n const joint = this.joints[jointName];\n if (joint) {\n\n return joint.setJointValue(...angle);\n\n }\n\n return false;\n }\n\n setJointValues(values) {\n\n let didChange = false;\n for (const name in values) {\n\n const value = values[name];\n if (Array.isArray(value)) {\n\n didChange = this.setJointValue(name, ...value) || didChange;\n\n } else {\n\n didChange = this.setJointValue(name, value) || didChange;\n\n }\n\n }\n\n return didChange;\n\n }\n\n}\n\nexport { URDFRobot, URDFLink, URDFJoint, URDFMimicJoint, URDFVisual, URDFCollider };\n","import * as THREE from 'three';\nimport { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js';\nimport { ColladaLoader } from 'three/examples/jsm/loaders/ColladaLoader.js';\nimport { URDFRobot, URDFJoint, URDFLink, URDFCollider, URDFVisual, URDFMimicJoint } from './URDFClasses.js';\n\n/*\nReference coordinate frames for THREE.js and ROS.\nBoth coordinate systems are right handed so the URDF is instantiated without\nframe transforms. The resulting model can be rotated to rectify the proper up,\nright, and forward directions\n\nTHREE.js\n Y\n |\n |\n .-----X\n /\nZ\n\nROS URDf\n Z\n | X\n | /\n Y-----.\n\n*/\n\nconst tempQuaternion = new THREE.Quaternion();\nconst tempEuler = new THREE.Euler();\n\n// take a vector \"x y z\" and process it into\n// an array [x, y, z]\nfunction processTuple(val) {\n\n if (!val) return [0, 0, 0];\n return val.trim().split(/\\s+/g).map(num => parseFloat(num));\n\n}\n\n// applies a rotation a threejs object in URDF order\nfunction applyRotation(obj, rpy, additive = false) {\n\n // if additive is true the rotation is applied in\n // addition to the existing rotation\n if (!additive) obj.rotation.set(0, 0, 0);\n\n tempEuler.set(rpy[0], rpy[1], rpy[2], 'ZYX');\n tempQuaternion.setFromEuler(tempEuler);\n tempQuaternion.multiply(obj.quaternion);\n obj.quaternion.copy(tempQuaternion);\n\n}\n\n/* URDFLoader Class */\n// Loads and reads a URDF file into a THREEjs Object3D format\nexport default\nclass URDFLoader {\n\n constructor(manager) {\n\n this.manager = manager || THREE.DefaultLoadingManager;\n this.loadMeshCb = this.defaultMeshLoader.bind(this);\n this.parseVisual = true;\n this.parseCollision = false;\n this.packages = '';\n this.workingPath = '';\n this.fetchOptions = {};\n\n }\n\n /* Public API */\n loadAsync(urdf) {\n\n return new Promise((resolve, reject) => {\n\n this.load(urdf, resolve, null, reject);\n\n });\n\n }\n\n // urdf: The path to the URDF within the package OR absolute\n // onComplete: Callback that is passed the model once loaded\n load(urdf, onComplete, onProgress, onError) {\n\n // Check if a full URI is specified before\n // prepending the package info\n const manager = this.manager;\n const workingPath = THREE.LoaderUtils.extractUrlBase(urdf);\n const urdfPath = this.manager.resolveURL(urdf);\n\n manager.itemStart(urdfPath);\n\n fetch(urdfPath, this.fetchOptions)\n .then(res => {\n\n if (res.ok) {\n\n if (onProgress) {\n\n onProgress(null);\n\n }\n return res.text();\n\n } else {\n\n throw new Error(`URDFLoader: Failed to load url '${ urdfPath }' with error code ${ res.status } : ${ res.statusText }.`);\n\n }\n\n })\n .then(data => {\n\n if (this.workingPath === '') {\n\n this.workingPath = workingPath;\n\n }\n\n const model = this.parse(data);\n onComplete(model);\n manager.itemEnd(urdfPath);\n\n })\n .catch(e => {\n\n if (onError) {\n\n onError(e);\n\n } else {\n\n console.error('URDFLoader: Error loading file.', e);\n\n }\n manager.itemError(urdfPath);\n manager.itemEnd(urdfPath);\n\n });\n\n }\n\n parse(content) {\n\n const packages = this.packages;\n const loadMeshCb = this.loadMeshCb;\n const parseVisual = this.parseVisual;\n const parseCollision = this.parseCollision;\n const workingPath = this.workingPath;\n const manager = this.manager;\n const linkMap = {};\n const jointMap = {};\n const materialMap = {};\n\n // Resolves the path of mesh files\n function resolvePath(path) {\n\n if (!/^package:\\/\\//.test(path)) {\n\n return workingPath ? workingPath + path : path;\n\n }\n\n // Remove \"package://\" keyword and split meshPath at the first slash\n const [targetPkg, relPath] = path.replace(/^package:\\/\\//, '').split(/\\/(.+)/);\n\n if (typeof packages === 'string') {\n\n // \"pkg\" is one single package\n if (packages.endsWith(targetPkg)) {\n\n // \"pkg\" is the target package\n return packages + '/' + relPath;\n\n } else {\n\n // Assume \"pkg\" is the target package's parent directory\n return packages + '/' + targetPkg + '/' + relPath;\n\n }\n\n } else if (packages instanceof Function) {\n\n return packages(targetPkg) + '/' + relPath;\n\n } else if (typeof packages === 'object') {\n\n // \"pkg\" is a map of packages\n if (targetPkg in packages) {\n\n return packages[targetPkg] + '/' + relPath;\n\n } else {\n\n console.error(`URDFLoader : ${ targetPkg } not found in provided package list.`);\n return null;\n\n }\n\n }\n\n }\n\n // Process the URDF text format\n function processUrdf(data) {\n\n let children;\n if (data instanceof Document) {\n\n children = [ ...data.children ];\n\n } else if (data instanceof Element) {\n\n children = [ data ];\n\n } else {\n\n const parser = new DOMParser();\n const urdf = parser.parseFromString(data, 'text/xml');\n children = [ ...urdf.children ];\n\n }\n\n const robotNode = children.filter(c => c.nodeName === 'robot').pop();\n return processRobot(robotNode);\n\n }\n\n // Process the <robot> node\n function processRobot(robot) {\n\n const robotNodes = [ ...robot.children ];\n const links = robotNodes.filter(c => c.nodeName.toLowerCase() === 'link');\n const joints = robotNodes.filter(c => c.nodeName.toLowerCase() === 'joint');\n const materials = robotNodes.filter(c => c.nodeName.toLowerCase() === 'material');\n const obj = new URDFRobot();\n\n obj.robotName = robot.getAttribute('name');\n obj.urdfRobotNode = robot;\n\n // Create the <material> map\n materials.forEach(m => {\n\n const name = m.getAttribute('name');\n materialMap[name] = processMaterial(m);\n\n });\n\n // Create the <link> map\n const visualMap = {};\n const colliderMap = {};\n links.forEach(l => {\n\n const name = l.getAttribute('name');\n const isRoot = robot.querySelector(`child[link=\"${ name }\"]`) === null;\n linkMap[name] = processLink(l, visualMap, colliderMap, isRoot ? obj : null);\n\n });\n\n // Create the <joint> map\n joints.forEach(j => {\n\n const name = j.getAttribute('name');\n jointMap[name] = processJoint(j);\n\n });\n\n obj.joints = jointMap;\n obj.links = linkMap;\n obj.colliders = colliderMap;\n obj.visual = visualMap;\n\n // Link up mimic joints\n const jointList = Object.values(jointMap);\n jointList.forEach(j => {\n\n if (j instanceof URDFMimicJoint) {\n\n jointMap[j.mimicJoint].mimicJoints.push(j);\n\n }\n\n });\n\n // Detect infinite loops of mimic joints\n jointList.forEach(j => {\n\n const uniqueJoints = new Set();\n const iterFunction = joint => {\n\n if (uniqueJoints.has(joint)) {\n\n throw new Error('URDFLoader: Detected an infinite loop of mimic joints.');\n\n }\n\n uniqueJoints.add(joint);\n joint.mimicJoints.forEach(j => {\n\n iterFunction(j);\n\n });\n\n };\n\n iterFunction(j);\n });\n\n obj.frames = {\n ...colliderMap,\n ...visualMap,\n ...linkMap,\n ...jointMap,\n };\n\n return obj;\n\n }\n\n // Process joint nodes and parent them\n function processJoint(joint) {\n\n const children = [ ...joint.children ];\n const jointType = joint.getAttribute('type');\n\n let obj;\n\n const mimicTag = children.find(n => n.nodeName.toLowerCase() === 'mimic');\n if (mimicTag) {\n\n obj = new URDFMimicJoint();\n obj.mimicJoint = mimicTag.getAttribute('joint');\n obj.multiplier = parseFloat(mimicTag.getAttribute('multiplier') || 1.0);\n obj.offset = parseFloat(mimicTag.getAttribute('offset') || 0.0);\n\n } else {\n\n obj = new URDFJoint();\n\n }\n\n obj.urdfNode = joint;\n obj.name = joint.getAttribute('name');\n obj.urdfName = obj.name;\n obj.jointType = jointType;\n\n let parent = null;\n let child = null;\n let xyz = [0, 0, 0];\n let rpy = [0, 0, 0];\n\n // Extract the attributes\n children.forEach(n => {\n\n const type = n.nodeName.toLowerCase();\n if (type === 'origin') {\n\n xyz = processTuple(n.getAttribute('xyz'));\n rpy = processTuple(n.getAttribute('rpy'));\n\n } else if (type === 'child') {\n\n child = linkMap[n.getAttribute('link')];\n\n } else if (type === 'parent') {\n\n parent = linkMap[n.getAttribute('link')];\n\n } else if (type === 'limit') {\n\n obj.limit.lower = parseFloat(n.getAttribute('lower') || obj.limit.lower);\n obj.limit.upper = parseFloat(n.getAttribute('upper') || obj.limit.upper);\n\n }\n });\n\n // Join the links\n parent.add(obj);\n obj.add(child);\n applyRotation(obj, rpy);\n obj.position.set(xyz[0], xyz[1], xyz[2]);\n\n // Set up the rotate function\n const axisNode = children.filter(n => n.nodeName.toLowerCase() === 'axis')[0];\n\n if (axisNode) {\n\n const axisXYZ = axisNode.getAttribute('xyz').split(/\\s+/g).map(num => parseFloat(num));\n obj.axis = new THREE.Vector3(axisXYZ[0], axisXYZ[1], axisXYZ[2]);\n obj.axis.normalize();\n\n }\n\n return obj;\n\n }\n\n // Process the <link> nodes\n function processLink(link, visualMap, colliderMap, target = null) {\n\n if (target === null) {\n\n target = new URDFLink();\n\n }\n\n const children = [ ...link.children ];\n target.name = link.getAttribute('name');\n target.urdfName = target.name;\n target.urdfNode = link;\n\n if (parseVisual) {\n\n const visualNodes = children.filter(n => n.nodeName.toLowerCase() === 'visual');\n visualNodes.forEach(vn => {\n\n const v = processLinkElement(vn, materialMap);\n target.add(v);\n\n if (vn.hasAttribute('name')) {\n\n const name = vn.getAttribute('name');\n v.name = name;\n v.urdfName = name;\n visualMap[name] = v;\n\n }\n\n });\n\n }\n\n if (parseCollision) {\n\n const collisionNodes = children.filter(n => n.nodeName.toLowerCase() === 'collision');\n collisionNodes.forEach(cn => {\n\n const c = processLinkElement(cn);\n target.add(c);\n\n if (cn.hasAttribute('name')) {\n\n const name = cn.getAttribute('name');\n c.name = name;\n c.urdfName = name;\n colliderMap[name] = c;\n\n }\n\n });\n\n }\n\n return target;\n\n }\n\n function processMaterial(node) {\n\n const matNodes = [ ...node.children ];\n const material = new THREE.MeshPhongMaterial();\n\n material.name = node.getAttribute('name') || '';\n matNodes.forEach(n => {\n\n const type = n.nodeName.toLowerCase();\n if (type === 'color') {\n\n const rgba =\n n\n .getAttribute('rgba')\n .split(/\\s/g)\n .map(v => parseFloat(v));\n\n material.color.setRGB(rgba[0], rgba[1], rgba[2]);\n material.opacity = rgba[3];\n material.transparent = rgba[3] < 1;\n material.depthWrite = !material.transparent;\n\n } else if (type === 'texture') {\n\n // The URDF spec does not require that the <texture/> tag include\n // a filename attribute so skip loading the texture if not provided.\n const filename = n.getAttribute('filename');\n if (filename) {\n\n const loader = new THREE.TextureLoader(manager);\n const filePath = resolvePath(filename);\n material.map = loader.load(filePath);\n material.map.colorSpace = THREE.SRGBColorSpace;\n\n }\n\n }\n });\n\n return material;\n\n }\n\n // Process the visual and collision nodes into meshes\n function processLinkElement(vn, materialMap = {}) {\n\n const isCollisionNode = vn.nodeName.toLowerCase() === 'collision';\n const children = [ ...vn.children ];\n let material = null;\n\n // get the material first\n const materialNode = children.filter(n => n.nodeName.toLowerCase() === 'material')[0];\n if (materialNode) {\n\n const name = materialNode.getAttribute('name');\n if (name && name in materialMap) {\n\n material = materialMap[name];\n\n } else {\n\n material = processMaterial(materialNode);\n\n }\n\n } else {\n\n material = new THREE.MeshPhongMaterial();\n\n }\n\n const group = isCollisionNode ? new URDFCollider() : new URDFVisual();\n group.urdfNode = vn;\n\n children.forEach(n => {\n\n const type = n.nodeName.toLowerCase();\n if (type === 'geometry') {\n\n const geoType = n.children[0].nodeName.toLowerCase();\n if (geoType === 'mesh') {\n\n const filename = n.children[0].getAttribute('filename');\n const filePath = resolvePath(filename);\n\n // file path is null if a package directory is not provided.\n if (filePath !== null) {\n\n const scaleAttr = n.children[0].getAttribute('scale');\n if (scaleAttr) {\n\n const scale = processTuple(scaleAttr);\n group.scale.set(scale[0], scale[1], scale[2]);\n\n }\n\n loadMeshCb(filePath, manager, (obj, err) => {\n\n if (err) {\n\n console.error('URDFLoader: Error loading mesh.', err);\n\n } else if (obj) {\n\n if (obj instanceof THREE.Mesh) {\n\n obj.material = material;\n\n }\n\n // We don't expect non identity rotations or positions. In the case of\n // COLLADA files the model might come in with a custom scale for unit\n // conversion.\n obj.position.set(0, 0, 0);\n obj.quaternion.identity();\n group.add(obj);\n\n }\n\n });\n\n }\n\n } else if (geoType === 'box') {\n\n const primitiveModel = new THREE.Mesh();\n primitiveModel.geometry = new THREE.BoxGeometry(1, 1, 1);\n primitiveModel.material = material;\n\n const size = processTuple(n.children[0].getAttribute('size'));\n primitiveModel.scale.set(size[0], size[1], size[2]);\n\n group.add(primitiveModel);\n\n } else if (geoType === 'sphere') {\n\n const primitiveModel = new THREE.Mesh();\n primitiveModel.geometry = new THREE.SphereGeometry(1, 30, 30);\n primitiveModel.material = material;\n\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\n primitiveModel.scale.set(radius, radius, radius);\n\n group.add(primitiveModel);\n\n } else if (geoType === 'cylinder') {\n\n const primitiveModel = new THREE.Mesh();\n primitiveModel.geometry = new THREE.CylinderGeometry(1, 1, 1, 30);\n primitiveModel.material = material;\n\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\n const length = parseFloat(n.children[0].getAttribute('length')) || 0;\n primitiveModel.scale.set(radius, length, radius);\n primitiveModel.rotation.set(Math.PI / 2, 0, 0);\n\n group.add(primitiveModel);\n\n }\n\n } else if (type === 'origin') {\n\n const xyz = processTuple(n.getAttribute('xyz'));\n const rpy = processTuple(n.getAttribute('rpy'));\n\n group.position.set(xyz[0], xyz[1], xyz[2]);\n group.rotation.set(0, 0, 0);\n applyRotation(group, rpy);\n\n }\n\n });\n\n return group;\n\n }\n\n return processUrdf(content);\n\n }\n\n // Default mesh loading function\n defaultMeshLoader(path, manager, done) {\n\n if (/\\.stl$/i.test(path)) {\n\n const loader = new STLLoader(manager);\n loader.load(path, geom => {\n const mesh = new THREE.Mesh(geom, new THREE.MeshPhongMaterial());\n done(mesh);\n });\n\n } else if (/\\.dae$/i.test(path)) {\n\n const loader = new ColladaLoader(manager);\n loader.load(path, dae => done(dae.scene));\n\n } else {\n\n console.warn(`URDFLoader: Could not load model at ${ path }.\\nNo loader available`);\n\n }\n\n }\n\n};\n"],"names":["Vector3","Euler","Matrix4","Quaternion","Object3D","THREE","STLLoader","ColladaLoader"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"URDFLoader.js","sources":["../src/URDFClasses.js","../src/URDFLoader.js"],"sourcesContent":["import { Euler, Object3D, Vector3, Quaternion, Matrix4 } from 'three';\n\nconst _tempAxis = new Vector3();\nconst _tempEuler = new Euler();\nconst _tempTransform = new Matrix4();\nconst _tempOrigTransform = new Matrix4();\nconst _tempQuat = new Quaternion();\nconst _tempScale = new Vector3(1.0, 1.0, 1.0);\nconst _tempPosition = new Vector3();\n\nclass URDFBase extends Object3D {\n\n constructor(...args) {\n\n super(...args);\n this.urdfNode = null;\n this.urdfName = '';\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.urdfNode = source.urdfNode;\n this.urdfName = source.urdfName;\n\n return this;\n\n }\n\n}\n\nclass URDFCollider extends URDFBase {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFCollider = true;\n this.type = 'URDFCollider';\n\n }\n\n}\n\nclass URDFVisual extends URDFBase {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFVisual = true;\n this.type = 'URDFVisual';\n\n }\n\n}\n\nclass URDFLink extends URDFBase {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFLink = true;\n this.type = 'URDFLink';\n\n }\n\n}\n\nclass URDFJoint extends URDFBase {\n\n get jointType() {\n\n return this._jointType;\n\n }\n\n set jointType(v) {\n\n if (this.jointType === v) return;\n this._jointType = v;\n this.matrixWorldNeedsUpdate = true;\n switch (v) {\n\n case 'fixed':\n this.jointValue = [];\n break;\n\n case 'continuous':\n case 'revolute':\n case 'prismatic':\n this.jointValue = new Array(1).fill(0);\n break;\n\n case 'planar':\n // Planar joints are, 3dof: position XY and rotation Z.\n this.jointValue = new Array(3).fill(0);\n this.axis = new Vector3(0, 0, 1);\n break;\n\n case 'floating':\n this.jointValue = new Array(6).fill(0);\n break;\n\n }\n\n }\n\n get angle() {\n\n return this.jointValue[0];\n\n }\n\n constructor(...args) {\n\n super(...args);\n\n this.isURDFJoint = true;\n this.type = 'URDFJoint';\n\n this.jointValue = null;\n this.jointType = 'fixed';\n this.axis = new Vector3(1, 0, 0);\n this.limit = { lower: 0, upper: 0 };\n this.ignoreLimits = false;\n\n this.origPosition = null;\n this.origQuaternion = null;\n\n this.mimicJoints = [];\n\n }\n\n /* Overrides */\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.jointType = source.jointType;\n this.axis = source.axis.clone();\n this.limit.lower = source.limit.lower;\n this.limit.upper = source.limit.upper;\n this.ignoreLimits = false;\n\n this.jointValue = [...source.jointValue];\n\n this.origPosition = source.origPosition ? source.origPosition.clone() : null;\n this.origQuaternion = source.origQuaternion ? source.origQuaternion.clone() : null;\n\n this.mimicJoints = [...source.mimicJoints];\n\n return this;\n\n }\n\n /* Public Functions */\n /**\n * @param {...number|null} values The joint value components to set, optionally null for no-op\n * @returns {boolean} Whether the invocation of this function resulted in an actual change to the joint value\n */\n setJointValue(...values) {\n\n // Parse all incoming values into numbers except null, which we treat as a no-op for that value component.\n values = values.map(v => v === null ? null : parseFloat(v));\n\n if (!this.origPosition || !this.origQuaternion) {\n\n this.origPosition = this.position.clone();\n this.origQuaternion = this.quaternion.clone();\n\n }\n\n let didUpdate = false;\n\n this.mimicJoints.forEach(joint => {\n\n didUpdate = joint.updateFromMimickedJoint(...values) || didUpdate;\n\n });\n\n switch (this.jointType) {\n\n case 'fixed': {\n\n return didUpdate;\n\n }\n case 'continuous':\n case 'revolute': {\n\n let angle = values[0];\n if (angle == null) return didUpdate;\n if (angle === this.jointValue[0]) return didUpdate;\n\n if (!this.ignoreLimits && this.jointType === 'revolute') {\n\n angle = Math.min(this.limit.upper, angle);\n angle = Math.max(this.limit.lower, angle);\n\n }\n\n this.quaternion\n .setFromAxisAngle(this.axis, angle)\n .premultiply(this.origQuaternion);\n\n if (this.jointValue[0] !== angle) {\n\n this.jointValue[0] = angle;\n this.matrixWorldNeedsUpdate = true;\n return true;\n\n } else {\n\n return didUpdate;\n\n }\n\n }\n\n case 'prismatic': {\n\n let pos = values[0];\n if (pos == null) return didUpdate;\n if (pos === this.jointValue[0]) return didUpdate;\n\n if (!this.ignoreLimits) {\n\n pos = Math.min(this.limit.upper, pos);\n pos = Math.max(this.limit.lower, pos);\n\n }\n\n this.position.copy(this.origPosition);\n _tempAxis.copy(this.axis).applyEuler(this.rotation);\n this.position.addScaledVector(_tempAxis, pos);\n\n if (this.jointValue[0] !== pos) {\n\n this.jointValue[0] = pos;\n this.matrixWorldNeedsUpdate = true;\n return true;\n\n } else {\n\n return didUpdate;\n\n }\n\n }\n\n case 'floating': {\n\n // no-op if all values are identical to existing value or are null\n if (this.jointValue.every((value, index) => values[index] === value || values[index] === null)) return didUpdate;\n // Floating joints have six degrees of freedom: X, Y, Z, R, P, Y.\n this.jointValue[0] = values[0] !== null ? values[0] : this.jointValue[0];\n this.jointValue[1] = values[1] !== null ? values[1] : this.jointValue[1];\n this.jointValue[2] = values[2] !== null ? values[2] : this.jointValue[2];\n this.jointValue[3] = values[3] !== null ? values[3] : this.jointValue[3];\n this.jointValue[4] = values[4] !== null ? values[4] : this.jointValue[4];\n this.jointValue[5] = values[5] !== null ? values[5] : this.jointValue[5];\n\n // Compose transform of joint origin and transform due to joint values\n _tempOrigTransform.compose(this.origPosition, this.origQuaternion, _tempScale);\n _tempQuat.setFromEuler(\n _tempEuler.set(\n this.jointValue[3],\n this.jointValue[4],\n this.jointValue[5],\n 'XYZ',\n ),\n );\n _tempPosition.set(this.jointValue[0], this.jointValue[1], this.jointValue[2]);\n _tempTransform.compose(_tempPosition, _tempQuat, _tempScale);\n\n // Calcualte new transform\n _tempOrigTransform.premultiply(_tempTransform);\n this.position.setFromMatrixPosition(_tempOrigTransform);\n this.rotation.setFromRotationMatrix(_tempOrigTransform);\n\n this.matrixWorldNeedsUpdate = true;\n return true;\n }\n\n case 'planar': {\n\n // no-op if all values are identical to existing value or are null\n if (this.jointValue.every((value, index) => values[index] === value || values[index] === null)) return didUpdate;\n\n this.jointValue[0] = values[0] !== null ? values[0] : this.jointValue[0];\n this.jointValue[1] = values[1] !== null ? values[1] : this.jointValue[1];\n this.jointValue[2] = values[2] !== null ? values[2] : this.jointValue[2];\n\n // Compose transform of joint origin and transform due to joint values\n _tempOrigTransform.compose(this.origPosition, this.origQuaternion, _tempScale);\n _tempQuat.setFromAxisAngle(this.axis, this.jointValue[2]);\n _tempPosition.set(this.jointValue[0], this.jointValue[1], 0.0);\n _tempTransform.compose(_tempPosition, _tempQuat, _tempScale);\n\n // Calculate new transform\n _tempOrigTransform.premultiply(_tempTransform);\n this.position.setFromMatrixPosition(_tempOrigTransform);\n this.rotation.setFromRotationMatrix(_tempOrigTransform);\n\n this.matrixWorldNeedsUpdate = true;\n return true;\n }\n\n }\n\n return didUpdate;\n\n }\n\n}\n\nclass URDFMimicJoint extends URDFJoint {\n\n constructor(...args) {\n\n super(...args);\n this.type = 'URDFMimicJoint';\n this.mimicJoint = null;\n this.offset = 0;\n this.multiplier = 1;\n\n }\n\n updateFromMimickedJoint(...values) {\n\n const modifiedValues = values.map(x => x * this.multiplier + this.offset);\n return super.setJointValue(...modifiedValues);\n\n }\n\n /* Overrides */\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.mimicJoint = source.mimicJoint;\n this.offset = source.offset;\n this.multiplier = source.multiplier;\n\n return this;\n\n }\n\n}\n\nclass URDFRobot extends URDFLink {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFRobot = true;\n this.urdfNode = null;\n\n this.urdfRobotNode = null;\n this.robotName = null;\n\n this.links = null;\n this.joints = null;\n this.colliders = null;\n this.visual = null;\n this.frames = null;\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.urdfRobotNode = source.urdfRobotNode;\n this.robotName = source.robotName;\n\n this.links = {};\n this.joints = {};\n this.colliders = {};\n this.visual = {};\n\n this.traverse(c => {\n\n if (c.isURDFJoint && c.urdfName in source.joints) {\n\n this.joints[c.urdfName] = c;\n\n }\n\n if (c.isURDFLink && c.urdfName in source.links) {\n\n this.links[c.urdfName] = c;\n\n }\n\n if (c.isURDFCollider && c.urdfName in source.colliders) {\n\n this.colliders[c.urdfName] = c;\n\n }\n\n if (c.isURDFVisual && c.urdfName in source.visual) {\n\n this.visual[c.urdfName] = c;\n\n }\n\n });\n\n // Repair mimic joint references once we've re-accumulated all our joint data\n for (const joint in this.joints) {\n this.joints[joint].mimicJoints = this.joints[joint].mimicJoints.map((mimicJoint) => this.joints[mimicJoint.name]);\n }\n\n this.frames = {\n ...this.colliders,\n ...this.visual,\n ...this.links,\n ...this.joints,\n };\n\n return this;\n\n }\n\n getFrame(name) {\n\n return this.frames[name];\n\n }\n\n setJointValue(jointName, ...angle) {\n\n const joint = this.joints[jointName];\n if (joint) {\n\n return joint.setJointValue(...angle);\n\n }\n\n return false;\n }\n\n setJointValues(values) {\n\n let didChange = false;\n for (const name in values) {\n\n const value = values[name];\n if (Array.isArray(value)) {\n\n didChange = this.setJointValue(name, ...value) || didChange;\n\n } else {\n\n didChange = this.setJointValue(name, value) || didChange;\n\n }\n\n }\n\n return didChange;\n\n }\n\n}\n\nexport { URDFRobot, URDFLink, URDFJoint, URDFMimicJoint, URDFVisual, URDFCollider };\n","import * as THREE from 'three';\nimport { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js';\nimport { ColladaLoader } from 'three/examples/jsm/loaders/ColladaLoader.js';\nimport { URDFRobot, URDFJoint, URDFLink, URDFCollider, URDFVisual, URDFMimicJoint } from './URDFClasses.js';\n\n/*\nReference coordinate frames for THREE.js and ROS.\nBoth coordinate systems are right handed so the URDF is instantiated without\nframe transforms. The resulting model can be rotated to rectify the proper up,\nright, and forward directions\n\nTHREE.js\n Y\n |\n |\n .-----X\n /\nZ\n\nROS URDf\n Z\n | X\n | /\n Y-----.\n\n*/\n\nconst tempQuaternion = new THREE.Quaternion();\nconst tempEuler = new THREE.Euler();\n\n// take a vector \"x y z\" and process it into\n// an array [x, y, z]\nfunction processTuple(val) {\n\n if (!val) return [0, 0, 0];\n return val.trim().split(/\\s+/g).map(num => parseFloat(num));\n\n}\n\n// applies a rotation a threejs object in URDF order\nfunction applyRotation(obj, rpy, additive = false) {\n\n // if additive is true the rotation is applied in\n // addition to the existing rotation\n if (!additive) obj.rotation.set(0, 0, 0);\n\n tempEuler.set(rpy[0], rpy[1], rpy[2], 'ZYX');\n tempQuaternion.setFromEuler(tempEuler);\n tempQuaternion.multiply(obj.quaternion);\n obj.quaternion.copy(tempQuaternion);\n\n}\n\n/* URDFLoader Class */\n// Loads and reads a URDF file into a THREEjs Object3D format\nexport default\nclass URDFLoader {\n\n constructor(manager) {\n\n this.manager = manager || THREE.DefaultLoadingManager;\n this.loadMeshCb = this.defaultMeshLoader.bind(this);\n this.parseVisual = true;\n this.parseCollision = false;\n this.packages = '';\n this.workingPath = '';\n this.fetchOptions = {};\n\n }\n\n /* Public API */\n loadAsync(urdf) {\n\n return new Promise((resolve, reject) => {\n\n this.load(urdf, resolve, null, reject);\n\n });\n\n }\n\n // urdf: The path to the URDF within the package OR absolute\n // onComplete: Callback that is passed the model once loaded\n load(urdf, onComplete, onProgress, onError) {\n\n // Check if a full URI is specified before\n // prepending the package info\n const manager = this.manager;\n const workingPath = THREE.LoaderUtils.extractUrlBase(urdf);\n const urdfPath = this.manager.resolveURL(urdf);\n\n manager.itemStart(urdfPath);\n\n fetch(urdfPath, this.fetchOptions)\n .then(res => {\n\n if (res.ok) {\n\n if (onProgress) {\n\n onProgress(null);\n\n }\n return res.text();\n\n } else {\n\n throw new Error(`URDFLoader: Failed to load url '${ urdfPath }' with error code ${ res.status } : ${ res.statusText }.`);\n\n }\n\n })\n .then(data => {\n\n const model = this.parse(data, this.workingPath || workingPath);\n onComplete(model);\n manager.itemEnd(urdfPath);\n\n })\n .catch(e => {\n\n if (onError) {\n\n onError(e);\n\n } else {\n\n console.error('URDFLoader: Error loading file.', e);\n\n }\n manager.itemError(urdfPath);\n manager.itemEnd(urdfPath);\n\n });\n\n }\n\n parse(content, workingPath = this.workingPath) {\n\n const packages = this.packages;\n const loadMeshCb = this.loadMeshCb;\n const parseVisual = this.parseVisual;\n const parseCollision = this.parseCollision;\n const manager = this.manager;\n const linkMap = {};\n const jointMap = {};\n const materialMap = {};\n\n // Resolves the path of mesh files\n function resolvePath(path) {\n\n if (!/^package:\\/\\//.test(path)) {\n\n return workingPath ? workingPath + path : path;\n\n }\n\n // Remove \"package://\" keyword and split meshPath at the first slash\n const [targetPkg, relPath] = path.replace(/^package:\\/\\//, '').split(/\\/(.+)/);\n\n if (typeof packages === 'string') {\n\n // \"pkg\" is one single package\n if (packages.endsWith(targetPkg)) {\n\n // \"pkg\" is the target package\n return packages + '/' + relPath;\n\n } else {\n\n // Assume \"pkg\" is the target package's parent directory\n return packages + '/' + targetPkg + '/' + relPath;\n\n }\n\n } else if (packages instanceof Function) {\n\n return packages(targetPkg) + '/' + relPath;\n\n } else if (typeof packages === 'object') {\n\n // \"pkg\" is a map of packages\n if (targetPkg in packages) {\n\n return packages[targetPkg] + '/' + relPath;\n\n } else {\n\n console.error(`URDFLoader : ${ targetPkg } not found in provided package list.`);\n return null;\n\n }\n\n }\n\n }\n\n // Process the URDF text format\n function processUrdf(data) {\n\n let children;\n if (data instanceof Document) {\n\n children = [ ...data.children ];\n\n } else if (data instanceof Element) {\n\n children = [ data ];\n\n } else {\n\n const parser = new DOMParser();\n const urdf = parser.parseFromString(data, 'text/xml');\n children = [ ...urdf.children ];\n\n }\n\n const robotNode = children.filter(c => c.nodeName === 'robot').pop();\n return processRobot(robotNode);\n\n }\n\n // Process the <robot> node\n function processRobot(robot) {\n\n const robotNodes = [ ...robot.children ];\n const links = robotNodes.filter(c => c.nodeName.toLowerCase() === 'link');\n const joints = robotNodes.filter(c => c.nodeName.toLowerCase() === 'joint');\n const materials = robotNodes.filter(c => c.nodeName.toLowerCase() === 'material');\n const obj = new URDFRobot();\n\n obj.robotName = robot.getAttribute('name');\n obj.urdfRobotNode = robot;\n\n // Create the <material> map\n materials.forEach(m => {\n\n const name = m.getAttribute('name');\n materialMap[name] = processMaterial(m);\n\n });\n\n // Create the <link> map\n const visualMap = {};\n const colliderMap = {};\n links.forEach(l => {\n\n const name = l.getAttribute('name');\n const isRoot = robot.querySelector(`child[link=\"${ name }\"]`) === null;\n linkMap[name] = processLink(l, visualMap, colliderMap, isRoot ? obj : null);\n\n });\n\n // Create the <joint> map\n joints.forEach(j => {\n\n const name = j.getAttribute('name');\n jointMap[name] = processJoint(j);\n\n });\n\n obj.joints = jointMap;\n obj.links = linkMap;\n obj.colliders = colliderMap;\n obj.visual = visualMap;\n\n // Link up mimic joints\n const jointList = Object.values(jointMap);\n jointList.forEach(j => {\n\n if (j instanceof URDFMimicJoint) {\n\n jointMap[j.mimicJoint].mimicJoints.push(j);\n\n }\n\n });\n\n // Detect infinite loops of mimic joints\n jointList.forEach(j => {\n\n const uniqueJoints = new Set();\n const iterFunction = joint => {\n\n if (uniqueJoints.has(joint)) {\n\n throw new Error('URDFLoader: Detected an infinite loop of mimic joints.');\n\n }\n\n uniqueJoints.add(joint);\n joint.mimicJoints.forEach(j => {\n\n iterFunction(j);\n\n });\n\n };\n\n iterFunction(j);\n });\n\n obj.frames = {\n ...colliderMap,\n ...visualMap,\n ...linkMap,\n ...jointMap,\n };\n\n return obj;\n\n }\n\n // Process joint nodes and parent them\n function processJoint(joint) {\n\n const children = [ ...joint.children ];\n const jointType = joint.getAttribute('type');\n\n let obj;\n\n const mimicTag = children.find(n => n.nodeName.toLowerCase() === 'mimic');\n if (mimicTag) {\n\n obj = new URDFMimicJoint();\n obj.mimicJoint = mimicTag.getAttribute('joint');\n obj.multiplier = parseFloat(mimicTag.getAttribute('multiplier') || 1.0);\n obj.offset = parseFloat(mimicTag.getAttribute('offset') || 0.0);\n\n } else {\n\n obj = new URDFJoint();\n\n }\n\n obj.urdfNode = joint;\n obj.name = joint.getAttribute('name');\n obj.urdfName = obj.name;\n obj.jointType = jointType;\n\n let parent = null;\n let child = null;\n let xyz = [0, 0, 0];\n let rpy = [0, 0, 0];\n\n // Extract the attributes\n children.forEach(n => {\n\n const type = n.nodeName.toLowerCase();\n if (type === 'origin') {\n\n xyz = processTuple(n.getAttribute('xyz'));\n rpy = processTuple(n.getAttribute('rpy'));\n\n } else if (type === 'child') {\n\n child = linkMap[n.getAttribute('link')];\n\n } else if (type === 'parent') {\n\n parent = linkMap[n.getAttribute('link')];\n\n } else if (type === 'limit') {\n\n obj.limit.lower = parseFloat(n.getAttribute('lower') || obj.limit.lower);\n obj.limit.upper = parseFloat(n.getAttribute('upper') || obj.limit.upper);\n\n }\n });\n\n // Join the links\n parent.add(obj);\n obj.add(child);\n applyRotation(obj, rpy);\n obj.position.set(xyz[0], xyz[1], xyz[2]);\n\n // Set up the rotate function\n const axisNode = children.filter(n => n.nodeName.toLowerCase() === 'axis')[0];\n\n if (axisNode) {\n\n const axisXYZ = axisNode.getAttribute('xyz').split(/\\s+/g).map(num => parseFloat(num));\n obj.axis = new THREE.Vector3(axisXYZ[0], axisXYZ[1], axisXYZ[2]);\n obj.axis.normalize();\n\n }\n\n return obj;\n\n }\n\n // Process the <link> nodes\n function processLink(link, visualMap, colliderMap, target = null) {\n\n if (target === null) {\n\n target = new URDFLink();\n\n }\n\n const children = [ ...link.children ];\n target.name = link.getAttribute('name');\n target.urdfName = target.name;\n target.urdfNode = link;\n\n if (parseVisual) {\n\n const visualNodes = children.filter(n => n.nodeName.toLowerCase() === 'visual');\n visualNodes.forEach(vn => {\n\n const v = processLinkElement(vn, materialMap);\n target.add(v);\n\n if (vn.hasAttribute('name')) {\n\n const name = vn.getAttribute('name');\n v.name = name;\n v.urdfName = name;\n visualMap[name] = v;\n\n }\n\n });\n\n }\n\n if (parseCollision) {\n\n const collisionNodes = children.filter(n => n.nodeName.toLowerCase() === 'collision');\n collisionNodes.forEach(cn => {\n\n const c = processLinkElement(cn);\n target.add(c);\n\n if (cn.hasAttribute('name')) {\n\n const name = cn.getAttribute('name');\n c.name = name;\n c.urdfName = name;\n colliderMap[name] = c;\n\n }\n\n });\n\n }\n\n return target;\n\n }\n\n function processMaterial(node) {\n\n const matNodes = [ ...node.children ];\n const material = new THREE.MeshPhongMaterial();\n\n material.name = node.getAttribute('name') || '';\n matNodes.forEach(n => {\n\n const type = n.nodeName.toLowerCase();\n if (type === 'color') {\n\n const rgba =\n n\n .getAttribute('rgba')\n .split(/\\s/g)\n .map(v => parseFloat(v));\n\n material.color.setRGB(rgba[0], rgba[1], rgba[2]);\n material.opacity = rgba[3];\n material.transparent = rgba[3] < 1;\n material.depthWrite = !material.transparent;\n\n } else if (type === 'texture') {\n\n // The URDF spec does not require that the <texture/> tag include\n // a filename attribute so skip loading the texture if not provided.\n const filename = n.getAttribute('filename');\n if (filename) {\n\n const loader = new THREE.TextureLoader(manager);\n const filePath = resolvePath(filename);\n material.map = loader.load(filePath);\n material.map.colorSpace = THREE.SRGBColorSpace;\n\n }\n\n }\n });\n\n return material;\n\n }\n\n // Process the visual and collision nodes into meshes\n function processLinkElement(vn, materialMap = {}) {\n\n const isCollisionNode = vn.nodeName.toLowerCase() === 'collision';\n const children = [ ...vn.children ];\n let material = null;\n\n // get the material first\n const materialNode = children.filter(n => n.nodeName.toLowerCase() === 'material')[0];\n if (materialNode) {\n\n const name = materialNode.getAttribute('name');\n if (name && name in materialMap) {\n\n material = materialMap[name];\n\n } else {\n\n material = processMaterial(materialNode);\n\n }\n\n } else {\n\n material = new THREE.MeshPhongMaterial();\n\n }\n\n const group = isCollisionNode ? new URDFCollider() : new URDFVisual();\n group.urdfNode = vn;\n\n children.forEach(n => {\n\n const type = n.nodeName.toLowerCase();\n if (type === 'geometry') {\n\n const geoType = n.children[0].nodeName.toLowerCase();\n if (geoType === 'mesh') {\n\n const filename = n.children[0].getAttribute('filename');\n const filePath = resolvePath(filename);\n\n // file path is null if a package directory is not provided.\n if (filePath !== null) {\n\n const scaleAttr = n.children[0].getAttribute('scale');\n if (scaleAttr) {\n\n const scale = processTuple(scaleAttr);\n group.scale.set(scale[0], scale[1], scale[2]);\n\n }\n\n loadMeshCb(filePath, manager, (obj, err) => {\n\n if (err) {\n\n console.error('URDFLoader: Error loading mesh.', err);\n\n } else if (obj) {\n\n if (obj instanceof THREE.Mesh) {\n\n obj.material = material;\n\n }\n\n // We don't expect non identity rotations or positions. In the case of\n // COLLADA files the model might come in with a custom scale for unit\n // conversion.\n obj.position.set(0, 0, 0);\n obj.quaternion.identity();\n group.add(obj);\n\n }\n\n });\n\n }\n\n } else if (geoType === 'box') {\n\n const primitiveModel = new THREE.Mesh();\n primitiveModel.geometry = new THREE.BoxGeometry(1, 1, 1);\n primitiveModel.material = material;\n\n const size = processTuple(n.children[0].getAttribute('size'));\n primitiveModel.scale.set(size[0], size[1], size[2]);\n\n group.add(primitiveModel);\n\n } else if (geoType === 'sphere') {\n\n const primitiveModel = new THREE.Mesh();\n primitiveModel.geometry = new THREE.SphereGeometry(1, 30, 30);\n primitiveModel.material = material;\n\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\n primitiveModel.scale.set(radius, radius, radius);\n\n group.add(primitiveModel);\n\n } else if (geoType === 'cylinder') {\n\n const primitiveModel = new THREE.Mesh();\n primitiveModel.geometry = new THREE.CylinderGeometry(1, 1, 1, 30);\n primitiveModel.material = material;\n\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\n const length = parseFloat(n.children[0].getAttribute('length')) || 0;\n primitiveModel.scale.set(radius, length, radius);\n primitiveModel.rotation.set(Math.PI / 2, 0, 0);\n\n group.add(primitiveModel);\n\n }\n\n } else if (type === 'origin') {\n\n const xyz = processTuple(n.getAttribute('xyz'));\n const rpy = processTuple(n.getAttribute('rpy'));\n\n group.position.set(xyz[0], xyz[1], xyz[2]);\n group.rotation.set(0, 0, 0);\n applyRotation(group, rpy);\n\n }\n\n });\n\n return group;\n\n }\n\n return processUrdf(content);\n\n }\n\n // Default mesh loading function\n defaultMeshLoader(path, manager, done) {\n\n if (/\\.stl$/i.test(path)) {\n\n const loader = new STLLoader(manager);\n loader.load(path, geom => {\n const mesh = new THREE.Mesh(geom, new THREE.MeshPhongMaterial());\n done(mesh);\n });\n\n } else if (/\\.dae$/i.test(path)) {\n\n const loader = new ColladaLoader(manager);\n loader.load(path, dae => done(dae.scene));\n\n } else {\n\n console.warn(`URDFLoader: Could not load model at ${ path }.\\nNo loader available`);\n\n }\n\n }\n\n};\n"],"names":["Vector3","Euler","Matrix4","Quaternion","Object3D","THREE","STLLoader","ColladaLoader"],"mappings":"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"}
|