urdf-loader 0.10.3 → 0.10.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "urdf-loader",
3
- "version": "0.10.3",
3
+ "version": "0.10.4",
4
4
  "description": "URDF Loader for THREE.js and webcomponent viewer",
5
5
  "main": "src/URDFLoader.js",
6
6
  "type": "module",
package/src/URDFLoader.js CHANGED
@@ -473,7 +473,7 @@ class URDFLoader {
473
473
  .split(/\s/g)
474
474
  .map(v => parseFloat(v));
475
475
 
476
- material.color.setRGB(rgba[0], rgba[1], rgba[2]);
476
+ material.color.setRGB(rgba[0], rgba[1], rgba[2]).convertSRGBToLinear();
477
477
  material.opacity = rgba[3];
478
478
  material.transparent = rgba[3] < 1;
479
479
  material.depthWrite = !material.transparent;
@@ -488,6 +488,7 @@ class URDFLoader {
488
488
  const loader = new THREE.TextureLoader(manager);
489
489
  const filePath = resolvePath(filename);
490
490
  material.map = loader.load(filePath);
491
+ material.map.encoding = THREE.sRGBEncoding;
491
492
 
492
493
  }
493
494
 
package/umd/URDFLoader.js CHANGED
@@ -894,7 +894,7 @@
894
894
  .split(/\s/g)
895
895
  .map(v => parseFloat(v));
896
896
 
897
- material.color.setRGB(rgba[0], rgba[1], rgba[2]);
897
+ material.color.setRGB(rgba[0], rgba[1], rgba[2]).convertSRGBToLinear();
898
898
  material.opacity = rgba[3];
899
899
  material.transparent = rgba[3] < 1;
900
900
  material.depthWrite = !material.transparent;
@@ -909,6 +909,7 @@
909
909
  const loader = new THREE__namespace.TextureLoader(manager);
910
910
  const filePath = resolvePath(filename);
911
911
  material.map = loader.load(filePath);
912
+ material.map.encoding = THREE__namespace.sRGBEncoding;
912
913
 
913
914
  }
914
915
 
@@ -1 +1 @@
1
- {"version":3,"file":"URDFLoader.js","sources":["../src/URDFClasses.js","../src/URDFLoader.js"],"sourcesContent":["import { Object3D, Vector3 } from 'three';\r\n\r\nclass URDFBase extends Object3D {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.urdfNode = null;\r\n this.urdfName = '';\r\n\r\n }\r\n\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n\r\n this.urdfNode = source.urdfNode;\r\n this.urdfName = source.urdfName;\r\n\r\n return this;\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFCollider extends URDFBase {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFCollider = true;\r\n this.type = 'URDFCollider';\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFVisual extends URDFBase {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFVisual = true;\r\n this.type = 'URDFVisual';\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFLink extends URDFBase {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFLink = true;\r\n this.type = 'URDFLink';\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFJoint extends URDFBase {\r\n\r\n get jointType() {\r\n\r\n return this._jointType;\r\n\r\n }\r\n\r\n set jointType(v) {\r\n\r\n if (this.jointType === v) return;\r\n this._jointType = v;\r\n this.matrixWorldNeedsUpdate = true;\r\n switch (v) {\r\n\r\n case 'fixed':\r\n this.jointValue = [];\r\n break;\r\n\r\n case 'continuous':\r\n case 'revolute':\r\n case 'prismatic':\r\n this.jointValue = new Array(1).fill(0);\r\n break;\r\n\r\n case 'planar':\r\n this.jointValue = new Array(2).fill(0);\r\n break;\r\n\r\n case 'floating':\r\n this.jointValue = new Array(6).fill(0);\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n get angle() {\r\n\r\n return this.jointValue[0];\r\n\r\n }\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n\r\n this.isURDFJoint = true;\r\n this.type = 'URDFJoint';\r\n\r\n this.jointValue = null;\r\n this.jointType = 'fixed';\r\n this.axis = new Vector3(1, 0, 0);\r\n this.limit = { lower: 0, upper: 0 };\r\n this.ignoreLimits = false;\r\n\r\n this.origPosition = null;\r\n this.origQuaternion = null;\r\n\r\n this.mimicJoints = [];\r\n\r\n }\r\n\r\n /* Overrides */\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n\r\n this.jointType = source.jointType;\r\n this.axis = source.axis.clone();\r\n this.limit.lower = source.limit.lower;\r\n this.limit.upper = source.limit.upper;\r\n this.ignoreLimits = false;\r\n\r\n this.jointValue = [...source.jointValue];\r\n\r\n this.origPosition = source.origPosition ? source.origPosition.clone() : null;\r\n this.origQuaternion = source.origQuaternion ? source.origQuaternion.clone() : null;\r\n\r\n this.mimicJoints = [...source.mimicJoints];\r\n\r\n return this;\r\n\r\n }\r\n\r\n /* Public Functions */\r\n setJointValue(...values) {\r\n\r\n values = values.map(v => parseFloat(v));\r\n\r\n if (!this.origPosition || !this.origQuaternion) {\r\n\r\n this.origPosition = this.position.clone();\r\n this.origQuaternion = this.quaternion.clone();\r\n\r\n }\r\n\r\n let didUpdate = false;\r\n\r\n this.mimicJoints.forEach(joint => {\r\n\r\n didUpdate = joint.updateFromMimickedJoint(...values) || didUpdate;\r\n\r\n });\r\n\r\n switch (this.jointType) {\r\n\r\n case 'fixed': {\r\n\r\n return didUpdate;\r\n\r\n }\r\n case 'continuous':\r\n case 'revolute': {\r\n\r\n let angle = values[0];\r\n if (angle == null) return didUpdate;\r\n if (angle === this.jointValue[0]) return didUpdate;\r\n\r\n if (!this.ignoreLimits && this.jointType === 'revolute') {\r\n\r\n angle = Math.min(this.limit.upper, angle);\r\n angle = Math.max(this.limit.lower, angle);\r\n\r\n }\r\n\r\n this.quaternion\r\n .setFromAxisAngle(this.axis, angle)\r\n .premultiply(this.origQuaternion);\r\n\r\n if (this.jointValue[0] !== angle) {\r\n\r\n this.jointValue[0] = angle;\r\n this.matrixWorldNeedsUpdate = true;\r\n return true;\r\n\r\n } else {\r\n\r\n return didUpdate;\r\n\r\n }\r\n\r\n }\r\n\r\n case 'prismatic': {\r\n\r\n let pos = values[0];\r\n if (pos == null) return didUpdate;\r\n if (pos === this.jointValue[0]) return didUpdate;\r\n\r\n if (!this.ignoreLimits) {\r\n\r\n pos = Math.min(this.limit.upper, pos);\r\n pos = Math.max(this.limit.lower, pos);\r\n\r\n }\r\n\r\n this.position.copy(this.origPosition);\r\n this.position.addScaledVector(this.axis, pos);\r\n\r\n if (this.jointValue[0] !== pos) {\r\n\r\n this.jointValue[0] = pos;\r\n this.matrixWorldNeedsUpdate = true;\r\n return true;\r\n\r\n } else {\r\n\r\n return didUpdate;\r\n\r\n }\r\n\r\n }\r\n\r\n case 'floating':\r\n case 'planar':\r\n // TODO: Support these joint types\r\n console.warn(`'${ this.jointType }' joint not yet supported`);\r\n\r\n }\r\n\r\n return didUpdate;\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFMimicJoint extends URDFJoint {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.type = 'URDFMimicJoint';\r\n this.mimicJoint = null;\r\n this.offset = 0;\r\n this.multiplier = 1;\r\n\r\n }\r\n\r\n updateFromMimickedJoint(...values) {\r\n\r\n const modifiedValues = values.map(x => x * this.multiplier + this.offset);\r\n return super.setJointValue(...modifiedValues);\r\n\r\n }\r\n\r\n /* Overrides */\r\n setJointValue(...values) {\r\n\r\n console.warn(`URDFMimicJoint: Setting the joint value of mimic joint \"${ this.urdfName }\" will cause it to be out of sync.`);\r\n return super.setJointValue(...values);\r\n }\r\n\r\n /* Overrides */\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n\r\n this.mimicJoint = source.mimicJoint;\r\n this.offset = source.offset;\r\n this.multiplier = source.multiplier;\r\n\r\n return this;\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFRobot extends URDFLink {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFRobot = true;\r\n this.urdfNode = null;\r\n\r\n this.urdfRobotNode = null;\r\n this.robotName = null;\r\n\r\n this.links = null;\r\n this.joints = null;\r\n this.colliders = null;\r\n this.visual = null;\r\n this.frames = null;\r\n\r\n }\r\n\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n\r\n this.urdfRobotNode = source.urdfRobotNode;\r\n this.robotName = source.robotName;\r\n\r\n this.links = {};\r\n this.joints = {};\r\n this.colliders = {};\r\n this.visual = {};\r\n\r\n this.traverse(c => {\r\n\r\n if (c.isURDFJoint && c.urdfName in source.joints) {\r\n\r\n this.joints[c.urdfName] = c;\r\n\r\n }\r\n\r\n if (c.isURDFLink && c.urdfName in source.links) {\r\n\r\n this.links[c.urdfName] = c;\r\n\r\n }\r\n\r\n if (c.isURDFCollider && c.urdfName in source.colliders) {\r\n\r\n this.colliders[c.urdfName] = c;\r\n\r\n }\r\n\r\n if (c.isURDFVisual && c.urdfName in source.visual) {\r\n\r\n this.visual[c.urdfName] = c;\r\n\r\n }\r\n\r\n });\r\n\r\n this.frames = {\r\n ...this.colliders,\r\n ...this.visual,\r\n ...this.links,\r\n ...this.joints,\r\n };\r\n\r\n return this;\r\n\r\n }\r\n\r\n getFrame(name) {\r\n\r\n return this.frames[name];\r\n\r\n }\r\n\r\n setJointValue(jointName, ...angle) {\r\n\r\n const joint = this.joints[jointName];\r\n if (joint) {\r\n\r\n return joint.setJointValue(...angle);\r\n\r\n }\r\n\r\n return false;\r\n }\r\n\r\n setJointValues(values) {\r\n\r\n let didChange = false;\r\n for (const name in values) {\r\n\r\n const value = values[name];\r\n if (Array.isArray(value)) {\r\n\r\n didChange = this.setJointValue(name, ...value) || didChange;\r\n\r\n } else {\r\n\r\n didChange = this.setJointValue(name, value) || didChange;\r\n\r\n }\r\n\r\n }\r\n\r\n return didChange;\r\n\r\n }\r\n\r\n}\r\n\r\nexport { URDFRobot, URDFLink, URDFJoint, URDFMimicJoint, URDFVisual, URDFCollider };\r\n","import * as THREE from 'three';\r\nimport { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js';\r\nimport { ColladaLoader } from 'three/examples/jsm/loaders/ColladaLoader.js';\r\nimport { URDFRobot, URDFJoint, URDFLink, URDFCollider, URDFVisual, URDFMimicJoint } from './URDFClasses.js';\r\n\r\n/*\r\nReference coordinate frames for THREE.js and ROS.\r\nBoth coordinate systems are right handed so the URDF is instantiated without\r\nframe transforms. The resulting model can be rotated to rectify the proper up,\r\nright, and forward directions\r\n\r\nTHREE.js\r\n Y\r\n |\r\n |\r\n .-----X\r\n /\r\nZ\r\n\r\nROS URDf\r\n Z\r\n | X\r\n | /\r\n Y-----.\r\n\r\n*/\r\n\r\nconst tempQuaternion = new THREE.Quaternion();\r\nconst tempEuler = new THREE.Euler();\r\n\r\n// take a vector \"x y z\" and process it into\r\n// an array [x, y, z]\r\nfunction processTuple(val) {\r\n\r\n if (!val) return [0, 0, 0];\r\n return val.trim().split(/\\s+/g).map(num => parseFloat(num));\r\n\r\n}\r\n\r\n// applies a rotation a threejs object in URDF order\r\nfunction applyRotation(obj, rpy, additive = false) {\r\n\r\n // if additive is true the rotation is applied in\r\n // addition to the existing rotation\r\n if (!additive) obj.rotation.set(0, 0, 0);\r\n\r\n tempEuler.set(rpy[0], rpy[1], rpy[2], 'ZYX');\r\n tempQuaternion.setFromEuler(tempEuler);\r\n tempQuaternion.multiply(obj.quaternion);\r\n obj.quaternion.copy(tempQuaternion);\r\n\r\n}\r\n\r\n/* URDFLoader Class */\r\n// Loads and reads a URDF file into a THREEjs Object3D format\r\nexport default\r\nclass URDFLoader {\r\n\r\n constructor(manager) {\r\n\r\n this.manager = manager || THREE.DefaultLoadingManager;\r\n this.loadMeshCb = this.defaultMeshLoader.bind(this);\r\n this.parseVisual = true;\r\n this.parseCollision = false;\r\n this.packages = '';\r\n this.workingPath = '';\r\n this.fetchOptions = {};\r\n\r\n }\r\n\r\n /* Public API */\r\n loadAsync(urdf) {\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n this.load(urdf, resolve, null, reject);\r\n\r\n });\r\n\r\n }\r\n\r\n // urdf: The path to the URDF within the package OR absolute\r\n // onComplete: Callback that is passed the model once loaded\r\n load(urdf, onComplete, onProgress, onError) {\r\n\r\n // Check if a full URI is specified before\r\n // prepending the package info\r\n const manager = this.manager;\r\n const workingPath = THREE.LoaderUtils.extractUrlBase(urdf);\r\n const urdfPath = this.manager.resolveURL(urdf);\r\n\r\n manager.itemStart(urdfPath);\r\n\r\n fetch(urdfPath, this.fetchOptions)\r\n .then(res => {\r\n\r\n if (res.ok) {\r\n\r\n if (onProgress) {\r\n\r\n onProgress(null);\r\n\r\n }\r\n return res.text();\r\n\r\n } else {\r\n\r\n throw new Error(`URDFLoader: Failed to load url '${ urdfPath }' with error code ${ res.status } : ${ res.statusText }.`);\r\n\r\n }\r\n\r\n })\r\n .then(data => {\r\n\r\n if (this.workingPath === '') {\r\n\r\n this.workingPath = workingPath;\r\n\r\n }\r\n\r\n const model = this.parse(data);\r\n onComplete(model);\r\n manager.itemEnd(urdfPath);\r\n\r\n })\r\n .catch(e => {\r\n\r\n if (onError) {\r\n\r\n onError(e);\r\n\r\n } else {\r\n\r\n console.error('URDFLoader: Error loading file.', e);\r\n\r\n }\r\n manager.itemError(urdfPath);\r\n manager.itemEnd(urdfPath);\r\n\r\n });\r\n\r\n }\r\n\r\n parse(content) {\r\n\r\n const packages = this.packages;\r\n const loadMeshCb = this.loadMeshCb;\r\n const parseVisual = this.parseVisual;\r\n const parseCollision = this.parseCollision;\r\n const workingPath = this.workingPath;\r\n const manager = this.manager;\r\n const linkMap = {};\r\n const jointMap = {};\r\n const materialMap = {};\r\n\r\n // Resolves the path of mesh files\r\n function resolvePath(path) {\r\n\r\n if (!/^package:\\/\\//.test(path)) {\r\n\r\n return workingPath ? workingPath + path : path;\r\n\r\n }\r\n\r\n // Remove \"package://\" keyword and split meshPath at the first slash\r\n const [targetPkg, relPath] = path.replace(/^package:\\/\\//, '').split(/\\/(.+)/);\r\n\r\n if (typeof packages === 'string') {\r\n\r\n // \"pkg\" is one single package\r\n if (packages.endsWith(targetPkg)) {\r\n\r\n // \"pkg\" is the target package\r\n return packages + '/' + relPath;\r\n\r\n } else {\r\n\r\n // Assume \"pkg\" is the target package's parent directory\r\n return packages + '/' + targetPkg + '/' + relPath;\r\n\r\n }\r\n\r\n } else if (packages instanceof Function) {\r\n\r\n return packages(targetPkg) + '/' + relPath;\r\n\r\n } else if (typeof packages === 'object') {\r\n\r\n // \"pkg\" is a map of packages\r\n if (targetPkg in packages) {\r\n\r\n return packages[targetPkg] + '/' + relPath;\r\n\r\n } else {\r\n\r\n console.error(`URDFLoader : ${ targetPkg } not found in provided package list.`);\r\n return null;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n // Process the URDF text format\r\n function processUrdf(data) {\r\n\r\n let children;\r\n if (data instanceof Document) {\r\n\r\n children = [ ...data.children ];\r\n\r\n } else if (data instanceof Element) {\r\n\r\n children = [ data ];\r\n\r\n } else {\r\n\r\n const parser = new DOMParser();\r\n const urdf = parser.parseFromString(data, 'text/xml');\r\n children = [ ...urdf.children ];\r\n\r\n }\r\n\r\n const robotNode = children.filter(c => c.nodeName === 'robot').pop();\r\n return processRobot(robotNode);\r\n\r\n }\r\n\r\n // Process the <robot> node\r\n function processRobot(robot) {\r\n\r\n const robotNodes = [ ...robot.children ];\r\n const links = robotNodes.filter(c => c.nodeName.toLowerCase() === 'link');\r\n const joints = robotNodes.filter(c => c.nodeName.toLowerCase() === 'joint');\r\n const materials = robotNodes.filter(c => c.nodeName.toLowerCase() === 'material');\r\n const obj = new URDFRobot();\r\n\r\n obj.robotName = robot.getAttribute('name');\r\n obj.urdfRobotNode = robot;\r\n\r\n // Create the <material> map\r\n materials.forEach(m => {\r\n\r\n const name = m.getAttribute('name');\r\n materialMap[name] = processMaterial(m);\r\n\r\n });\r\n\r\n // Create the <link> map\r\n const visualMap = {};\r\n const colliderMap = {};\r\n links.forEach(l => {\r\n\r\n const name = l.getAttribute('name');\r\n const isRoot = robot.querySelector(`child[link=\"${ name }\"]`) === null;\r\n linkMap[name] = processLink(l, visualMap, colliderMap, isRoot ? obj : null);\r\n\r\n });\r\n\r\n // Create the <joint> map\r\n joints.forEach(j => {\r\n\r\n const name = j.getAttribute('name');\r\n jointMap[name] = processJoint(j);\r\n\r\n });\r\n\r\n obj.joints = jointMap;\r\n obj.links = linkMap;\r\n obj.colliders = colliderMap;\r\n obj.visual = visualMap;\r\n\r\n // Link up mimic joints\r\n const jointList = Object.values(jointMap);\r\n jointList.forEach(j => {\r\n\r\n if (j instanceof URDFMimicJoint) {\r\n\r\n jointMap[j.mimicJoint].mimicJoints.push(j);\r\n\r\n }\r\n\r\n });\r\n\r\n // Detect infinite loops of mimic joints\r\n jointList.forEach(j => {\r\n\r\n const uniqueJoints = new Set();\r\n const iterFunction = joint => {\r\n\r\n if (uniqueJoints.has(joint)) {\r\n\r\n throw new Error('URDFLoader: Detected an infinite loop of mimic joints.');\r\n\r\n }\r\n\r\n uniqueJoints.add(joint);\r\n joint.mimicJoints.forEach(j => {\r\n\r\n iterFunction(j);\r\n\r\n });\r\n\r\n };\r\n\r\n iterFunction(j);\r\n });\r\n\r\n obj.frames = {\r\n ...colliderMap,\r\n ...visualMap,\r\n ...linkMap,\r\n ...jointMap,\r\n };\r\n\r\n return obj;\r\n\r\n }\r\n\r\n // Process joint nodes and parent them\r\n function processJoint(joint) {\r\n\r\n const children = [ ...joint.children ];\r\n const jointType = joint.getAttribute('type');\r\n\r\n let obj;\r\n\r\n const mimicTag = children.find(n => n.nodeName.toLowerCase() === 'mimic');\r\n if (mimicTag) {\r\n\r\n obj = new URDFMimicJoint();\r\n obj.mimicJoint = mimicTag.getAttribute('joint');\r\n obj.multiplier = parseFloat(mimicTag.getAttribute('multiplier') || 1.0);\r\n obj.offset = parseFloat(mimicTag.getAttribute('offset') || 0.0);\r\n\r\n } else {\r\n\r\n obj = new URDFJoint();\r\n\r\n }\r\n\r\n obj.urdfNode = joint;\r\n obj.name = joint.getAttribute('name');\r\n obj.urdfName = obj.name;\r\n obj.jointType = jointType;\r\n\r\n let parent = null;\r\n let child = null;\r\n let xyz = [0, 0, 0];\r\n let rpy = [0, 0, 0];\r\n\r\n // Extract the attributes\r\n children.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'origin') {\r\n\r\n xyz = processTuple(n.getAttribute('xyz'));\r\n rpy = processTuple(n.getAttribute('rpy'));\r\n\r\n } else if (type === 'child') {\r\n\r\n child = linkMap[n.getAttribute('link')];\r\n\r\n } else if (type === 'parent') {\r\n\r\n parent = linkMap[n.getAttribute('link')];\r\n\r\n } else if (type === 'limit') {\r\n\r\n obj.limit.lower = parseFloat(n.getAttribute('lower') || obj.limit.lower);\r\n obj.limit.upper = parseFloat(n.getAttribute('upper') || obj.limit.upper);\r\n\r\n }\r\n });\r\n\r\n // Join the links\r\n parent.add(obj);\r\n obj.add(child);\r\n applyRotation(obj, rpy);\r\n obj.position.set(xyz[0], xyz[1], xyz[2]);\r\n\r\n // Set up the rotate function\r\n const axisNode = children.filter(n => n.nodeName.toLowerCase() === 'axis')[0];\r\n\r\n if (axisNode) {\r\n\r\n const axisXYZ = axisNode.getAttribute('xyz').split(/\\s+/g).map(num => parseFloat(num));\r\n obj.axis = new THREE.Vector3(axisXYZ[0], axisXYZ[1], axisXYZ[2]);\r\n obj.axis.normalize();\r\n\r\n }\r\n\r\n return obj;\r\n\r\n }\r\n\r\n // Process the <link> nodes\r\n function processLink(link, visualMap, colliderMap, target = null) {\r\n\r\n if (target === null) {\r\n\r\n target = new URDFLink();\r\n\r\n }\r\n\r\n const children = [ ...link.children ];\r\n target.name = link.getAttribute('name');\r\n target.urdfName = target.name;\r\n target.urdfNode = link;\r\n\r\n if (parseVisual) {\r\n\r\n const visualNodes = children.filter(n => n.nodeName.toLowerCase() === 'visual');\r\n visualNodes.forEach(vn => {\r\n\r\n const v = processLinkElement(vn, materialMap);\r\n target.add(v);\r\n\r\n if (vn.hasAttribute('name')) {\r\n\r\n const name = vn.getAttribute('name');\r\n v.name = name;\r\n v.urdfName = name;\r\n visualMap[name] = v;\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n if (parseCollision) {\r\n\r\n const collisionNodes = children.filter(n => n.nodeName.toLowerCase() === 'collision');\r\n collisionNodes.forEach(cn => {\r\n\r\n const c = processLinkElement(cn);\r\n target.add(c);\r\n\r\n if (cn.hasAttribute('name')) {\r\n\r\n const name = cn.getAttribute('name');\r\n c.name = name;\r\n c.urdfName = name;\r\n colliderMap[name] = c;\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n return target;\r\n\r\n }\r\n\r\n function processMaterial(node) {\r\n\r\n const matNodes = [ ...node.children ];\r\n const material = new THREE.MeshPhongMaterial();\r\n\r\n material.name = node.getAttribute('name') || '';\r\n matNodes.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'color') {\r\n\r\n const rgba =\r\n n\r\n .getAttribute('rgba')\r\n .split(/\\s/g)\r\n .map(v => parseFloat(v));\r\n\r\n material.color.setRGB(rgba[0], rgba[1], rgba[2]);\r\n material.opacity = rgba[3];\r\n material.transparent = rgba[3] < 1;\r\n material.depthWrite = !material.transparent;\r\n\r\n } else if (type === 'texture') {\r\n\r\n // The URDF spec does not require that the <texture/> tag include\r\n // a filename attribute so skip loading the texture if not provided.\r\n const filename = n.getAttribute('filename');\r\n if (filename) {\r\n\r\n const loader = new THREE.TextureLoader(manager);\r\n const filePath = resolvePath(filename);\r\n material.map = loader.load(filePath);\r\n\r\n }\r\n\r\n }\r\n });\r\n\r\n return material;\r\n\r\n }\r\n\r\n // Process the visual and collision nodes into meshes\r\n function processLinkElement(vn, materialMap = {}) {\r\n\r\n const isCollisionNode = vn.nodeName.toLowerCase() === 'collision';\r\n const children = [ ...vn.children ];\r\n let material = null;\r\n\r\n // get the material first\r\n const materialNode = children.filter(n => n.nodeName.toLowerCase() === 'material')[0];\r\n if (materialNode) {\r\n\r\n const name = materialNode.getAttribute('name');\r\n if (name && name in materialMap) {\r\n\r\n material = materialMap[name];\r\n\r\n } else {\r\n\r\n material = processMaterial(materialNode);\r\n\r\n }\r\n\r\n } else {\r\n\r\n material = new THREE.MeshPhongMaterial();\r\n\r\n }\r\n\r\n const group = isCollisionNode ? new URDFCollider() : new URDFVisual();\r\n group.urdfNode = vn;\r\n\r\n children.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'geometry') {\r\n\r\n const geoType = n.children[0].nodeName.toLowerCase();\r\n if (geoType === 'mesh') {\r\n\r\n const filename = n.children[0].getAttribute('filename');\r\n const filePath = resolvePath(filename);\r\n\r\n // file path is null if a package directory is not provided.\r\n if (filePath !== null) {\r\n\r\n const scaleAttr = n.children[0].getAttribute('scale');\r\n if (scaleAttr) {\r\n\r\n const scale = processTuple(scaleAttr);\r\n group.scale.set(scale[0], scale[1], scale[2]);\r\n\r\n }\r\n\r\n loadMeshCb(filePath, manager, (obj, err) => {\r\n\r\n if (err) {\r\n\r\n console.error('URDFLoader: Error loading mesh.', err);\r\n\r\n } else if (obj) {\r\n\r\n if (obj instanceof THREE.Mesh) {\r\n\r\n obj.material = material;\r\n\r\n }\r\n\r\n // We don't expect non identity rotations or positions. In the case of\r\n // COLLADA files the model might come in with a custom scale for unit\r\n // conversion.\r\n obj.position.set(0, 0, 0);\r\n obj.quaternion.identity();\r\n group.add(obj);\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n } else if (geoType === 'box') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.BoxBufferGeometry(1, 1, 1);\r\n primitiveModel.material = material;\r\n\r\n const size = processTuple(n.children[0].getAttribute('size'));\r\n primitiveModel.scale.set(size[0], size[1], size[2]);\r\n\r\n group.add(primitiveModel);\r\n\r\n } else if (geoType === 'sphere') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.SphereBufferGeometry(1, 30, 30);\r\n primitiveModel.material = material;\r\n\r\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\r\n primitiveModel.scale.set(radius, radius, radius);\r\n\r\n group.add(primitiveModel);\r\n\r\n } else if (geoType === 'cylinder') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.CylinderBufferGeometry(1, 1, 1, 30);\r\n primitiveModel.material = material;\r\n\r\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\r\n const length = parseFloat(n.children[0].getAttribute('length')) || 0;\r\n primitiveModel.scale.set(radius, length, radius);\r\n primitiveModel.rotation.set(Math.PI / 2, 0, 0);\r\n\r\n group.add(primitiveModel);\r\n\r\n }\r\n\r\n } else if (type === 'origin') {\r\n\r\n const xyz = processTuple(n.getAttribute('xyz'));\r\n const rpy = processTuple(n.getAttribute('rpy'));\r\n\r\n group.position.set(xyz[0], xyz[1], xyz[2]);\r\n group.rotation.set(0, 0, 0);\r\n applyRotation(group, rpy);\r\n\r\n }\r\n\r\n });\r\n\r\n return group;\r\n\r\n }\r\n\r\n return processUrdf(content);\r\n\r\n }\r\n\r\n // Default mesh loading function\r\n defaultMeshLoader(path, manager, done) {\r\n\r\n if (/\\.stl$/i.test(path)) {\r\n\r\n const loader = new STLLoader(manager);\r\n loader.load(path, geom => {\r\n const mesh = new THREE.Mesh(geom, new THREE.MeshPhongMaterial());\r\n done(mesh);\r\n });\r\n\r\n } else if (/\\.dae$/i.test(path)) {\r\n\r\n const loader = new ColladaLoader(manager);\r\n loader.load(path, dae => done(dae.scene));\r\n\r\n } else {\r\n\r\n console.warn(`URDFLoader: Could not load model at ${ path }.\\nNo loader available`);\r\n\r\n }\r\n\r\n }\r\n\r\n};\r\n"],"names":["Object3D","Vector3","THREE","STLLoader","ColladaLoader"],"mappings":"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"}
1
+ {"version":3,"file":"URDFLoader.js","sources":["../src/URDFClasses.js","../src/URDFLoader.js"],"sourcesContent":["import { Object3D, Vector3 } from 'three';\r\n\r\nclass URDFBase extends Object3D {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.urdfNode = null;\r\n this.urdfName = '';\r\n\r\n }\r\n\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n\r\n this.urdfNode = source.urdfNode;\r\n this.urdfName = source.urdfName;\r\n\r\n return this;\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFCollider extends URDFBase {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFCollider = true;\r\n this.type = 'URDFCollider';\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFVisual extends URDFBase {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFVisual = true;\r\n this.type = 'URDFVisual';\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFLink extends URDFBase {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFLink = true;\r\n this.type = 'URDFLink';\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFJoint extends URDFBase {\r\n\r\n get jointType() {\r\n\r\n return this._jointType;\r\n\r\n }\r\n\r\n set jointType(v) {\r\n\r\n if (this.jointType === v) return;\r\n this._jointType = v;\r\n this.matrixWorldNeedsUpdate = true;\r\n switch (v) {\r\n\r\n case 'fixed':\r\n this.jointValue = [];\r\n break;\r\n\r\n case 'continuous':\r\n case 'revolute':\r\n case 'prismatic':\r\n this.jointValue = new Array(1).fill(0);\r\n break;\r\n\r\n case 'planar':\r\n this.jointValue = new Array(2).fill(0);\r\n break;\r\n\r\n case 'floating':\r\n this.jointValue = new Array(6).fill(0);\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n get angle() {\r\n\r\n return this.jointValue[0];\r\n\r\n }\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n\r\n this.isURDFJoint = true;\r\n this.type = 'URDFJoint';\r\n\r\n this.jointValue = null;\r\n this.jointType = 'fixed';\r\n this.axis = new Vector3(1, 0, 0);\r\n this.limit = { lower: 0, upper: 0 };\r\n this.ignoreLimits = false;\r\n\r\n this.origPosition = null;\r\n this.origQuaternion = null;\r\n\r\n this.mimicJoints = [];\r\n\r\n }\r\n\r\n /* Overrides */\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n\r\n this.jointType = source.jointType;\r\n this.axis = source.axis.clone();\r\n this.limit.lower = source.limit.lower;\r\n this.limit.upper = source.limit.upper;\r\n this.ignoreLimits = false;\r\n\r\n this.jointValue = [...source.jointValue];\r\n\r\n this.origPosition = source.origPosition ? source.origPosition.clone() : null;\r\n this.origQuaternion = source.origQuaternion ? source.origQuaternion.clone() : null;\r\n\r\n this.mimicJoints = [...source.mimicJoints];\r\n\r\n return this;\r\n\r\n }\r\n\r\n /* Public Functions */\r\n setJointValue(...values) {\r\n\r\n values = values.map(v => parseFloat(v));\r\n\r\n if (!this.origPosition || !this.origQuaternion) {\r\n\r\n this.origPosition = this.position.clone();\r\n this.origQuaternion = this.quaternion.clone();\r\n\r\n }\r\n\r\n let didUpdate = false;\r\n\r\n this.mimicJoints.forEach(joint => {\r\n\r\n didUpdate = joint.updateFromMimickedJoint(...values) || didUpdate;\r\n\r\n });\r\n\r\n switch (this.jointType) {\r\n\r\n case 'fixed': {\r\n\r\n return didUpdate;\r\n\r\n }\r\n case 'continuous':\r\n case 'revolute': {\r\n\r\n let angle = values[0];\r\n if (angle == null) return didUpdate;\r\n if (angle === this.jointValue[0]) return didUpdate;\r\n\r\n if (!this.ignoreLimits && this.jointType === 'revolute') {\r\n\r\n angle = Math.min(this.limit.upper, angle);\r\n angle = Math.max(this.limit.lower, angle);\r\n\r\n }\r\n\r\n this.quaternion\r\n .setFromAxisAngle(this.axis, angle)\r\n .premultiply(this.origQuaternion);\r\n\r\n if (this.jointValue[0] !== angle) {\r\n\r\n this.jointValue[0] = angle;\r\n this.matrixWorldNeedsUpdate = true;\r\n return true;\r\n\r\n } else {\r\n\r\n return didUpdate;\r\n\r\n }\r\n\r\n }\r\n\r\n case 'prismatic': {\r\n\r\n let pos = values[0];\r\n if (pos == null) return didUpdate;\r\n if (pos === this.jointValue[0]) return didUpdate;\r\n\r\n if (!this.ignoreLimits) {\r\n\r\n pos = Math.min(this.limit.upper, pos);\r\n pos = Math.max(this.limit.lower, pos);\r\n\r\n }\r\n\r\n this.position.copy(this.origPosition);\r\n this.position.addScaledVector(this.axis, pos);\r\n\r\n if (this.jointValue[0] !== pos) {\r\n\r\n this.jointValue[0] = pos;\r\n this.matrixWorldNeedsUpdate = true;\r\n return true;\r\n\r\n } else {\r\n\r\n return didUpdate;\r\n\r\n }\r\n\r\n }\r\n\r\n case 'floating':\r\n case 'planar':\r\n // TODO: Support these joint types\r\n console.warn(`'${ this.jointType }' joint not yet supported`);\r\n\r\n }\r\n\r\n return didUpdate;\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFMimicJoint extends URDFJoint {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.type = 'URDFMimicJoint';\r\n this.mimicJoint = null;\r\n this.offset = 0;\r\n this.multiplier = 1;\r\n\r\n }\r\n\r\n updateFromMimickedJoint(...values) {\r\n\r\n const modifiedValues = values.map(x => x * this.multiplier + this.offset);\r\n return super.setJointValue(...modifiedValues);\r\n\r\n }\r\n\r\n /* Overrides */\r\n setJointValue(...values) {\r\n\r\n console.warn(`URDFMimicJoint: Setting the joint value of mimic joint \"${ this.urdfName }\" will cause it to be out of sync.`);\r\n return super.setJointValue(...values);\r\n }\r\n\r\n /* Overrides */\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n\r\n this.mimicJoint = source.mimicJoint;\r\n this.offset = source.offset;\r\n this.multiplier = source.multiplier;\r\n\r\n return this;\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFRobot extends URDFLink {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFRobot = true;\r\n this.urdfNode = null;\r\n\r\n this.urdfRobotNode = null;\r\n this.robotName = null;\r\n\r\n this.links = null;\r\n this.joints = null;\r\n this.colliders = null;\r\n this.visual = null;\r\n this.frames = null;\r\n\r\n }\r\n\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n\r\n this.urdfRobotNode = source.urdfRobotNode;\r\n this.robotName = source.robotName;\r\n\r\n this.links = {};\r\n this.joints = {};\r\n this.colliders = {};\r\n this.visual = {};\r\n\r\n this.traverse(c => {\r\n\r\n if (c.isURDFJoint && c.urdfName in source.joints) {\r\n\r\n this.joints[c.urdfName] = c;\r\n\r\n }\r\n\r\n if (c.isURDFLink && c.urdfName in source.links) {\r\n\r\n this.links[c.urdfName] = c;\r\n\r\n }\r\n\r\n if (c.isURDFCollider && c.urdfName in source.colliders) {\r\n\r\n this.colliders[c.urdfName] = c;\r\n\r\n }\r\n\r\n if (c.isURDFVisual && c.urdfName in source.visual) {\r\n\r\n this.visual[c.urdfName] = c;\r\n\r\n }\r\n\r\n });\r\n\r\n this.frames = {\r\n ...this.colliders,\r\n ...this.visual,\r\n ...this.links,\r\n ...this.joints,\r\n };\r\n\r\n return this;\r\n\r\n }\r\n\r\n getFrame(name) {\r\n\r\n return this.frames[name];\r\n\r\n }\r\n\r\n setJointValue(jointName, ...angle) {\r\n\r\n const joint = this.joints[jointName];\r\n if (joint) {\r\n\r\n return joint.setJointValue(...angle);\r\n\r\n }\r\n\r\n return false;\r\n }\r\n\r\n setJointValues(values) {\r\n\r\n let didChange = false;\r\n for (const name in values) {\r\n\r\n const value = values[name];\r\n if (Array.isArray(value)) {\r\n\r\n didChange = this.setJointValue(name, ...value) || didChange;\r\n\r\n } else {\r\n\r\n didChange = this.setJointValue(name, value) || didChange;\r\n\r\n }\r\n\r\n }\r\n\r\n return didChange;\r\n\r\n }\r\n\r\n}\r\n\r\nexport { URDFRobot, URDFLink, URDFJoint, URDFMimicJoint, URDFVisual, URDFCollider };\r\n","import * as THREE from 'three';\r\nimport { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js';\r\nimport { ColladaLoader } from 'three/examples/jsm/loaders/ColladaLoader.js';\r\nimport { URDFRobot, URDFJoint, URDFLink, URDFCollider, URDFVisual, URDFMimicJoint } from './URDFClasses.js';\r\n\r\n/*\r\nReference coordinate frames for THREE.js and ROS.\r\nBoth coordinate systems are right handed so the URDF is instantiated without\r\nframe transforms. The resulting model can be rotated to rectify the proper up,\r\nright, and forward directions\r\n\r\nTHREE.js\r\n Y\r\n |\r\n |\r\n .-----X\r\n /\r\nZ\r\n\r\nROS URDf\r\n Z\r\n | X\r\n | /\r\n Y-----.\r\n\r\n*/\r\n\r\nconst tempQuaternion = new THREE.Quaternion();\r\nconst tempEuler = new THREE.Euler();\r\n\r\n// take a vector \"x y z\" and process it into\r\n// an array [x, y, z]\r\nfunction processTuple(val) {\r\n\r\n if (!val) return [0, 0, 0];\r\n return val.trim().split(/\\s+/g).map(num => parseFloat(num));\r\n\r\n}\r\n\r\n// applies a rotation a threejs object in URDF order\r\nfunction applyRotation(obj, rpy, additive = false) {\r\n\r\n // if additive is true the rotation is applied in\r\n // addition to the existing rotation\r\n if (!additive) obj.rotation.set(0, 0, 0);\r\n\r\n tempEuler.set(rpy[0], rpy[1], rpy[2], 'ZYX');\r\n tempQuaternion.setFromEuler(tempEuler);\r\n tempQuaternion.multiply(obj.quaternion);\r\n obj.quaternion.copy(tempQuaternion);\r\n\r\n}\r\n\r\n/* URDFLoader Class */\r\n// Loads and reads a URDF file into a THREEjs Object3D format\r\nexport default\r\nclass URDFLoader {\r\n\r\n constructor(manager) {\r\n\r\n this.manager = manager || THREE.DefaultLoadingManager;\r\n this.loadMeshCb = this.defaultMeshLoader.bind(this);\r\n this.parseVisual = true;\r\n this.parseCollision = false;\r\n this.packages = '';\r\n this.workingPath = '';\r\n this.fetchOptions = {};\r\n\r\n }\r\n\r\n /* Public API */\r\n loadAsync(urdf) {\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n this.load(urdf, resolve, null, reject);\r\n\r\n });\r\n\r\n }\r\n\r\n // urdf: The path to the URDF within the package OR absolute\r\n // onComplete: Callback that is passed the model once loaded\r\n load(urdf, onComplete, onProgress, onError) {\r\n\r\n // Check if a full URI is specified before\r\n // prepending the package info\r\n const manager = this.manager;\r\n const workingPath = THREE.LoaderUtils.extractUrlBase(urdf);\r\n const urdfPath = this.manager.resolveURL(urdf);\r\n\r\n manager.itemStart(urdfPath);\r\n\r\n fetch(urdfPath, this.fetchOptions)\r\n .then(res => {\r\n\r\n if (res.ok) {\r\n\r\n if (onProgress) {\r\n\r\n onProgress(null);\r\n\r\n }\r\n return res.text();\r\n\r\n } else {\r\n\r\n throw new Error(`URDFLoader: Failed to load url '${ urdfPath }' with error code ${ res.status } : ${ res.statusText }.`);\r\n\r\n }\r\n\r\n })\r\n .then(data => {\r\n\r\n if (this.workingPath === '') {\r\n\r\n this.workingPath = workingPath;\r\n\r\n }\r\n\r\n const model = this.parse(data);\r\n onComplete(model);\r\n manager.itemEnd(urdfPath);\r\n\r\n })\r\n .catch(e => {\r\n\r\n if (onError) {\r\n\r\n onError(e);\r\n\r\n } else {\r\n\r\n console.error('URDFLoader: Error loading file.', e);\r\n\r\n }\r\n manager.itemError(urdfPath);\r\n manager.itemEnd(urdfPath);\r\n\r\n });\r\n\r\n }\r\n\r\n parse(content) {\r\n\r\n const packages = this.packages;\r\n const loadMeshCb = this.loadMeshCb;\r\n const parseVisual = this.parseVisual;\r\n const parseCollision = this.parseCollision;\r\n const workingPath = this.workingPath;\r\n const manager = this.manager;\r\n const linkMap = {};\r\n const jointMap = {};\r\n const materialMap = {};\r\n\r\n // Resolves the path of mesh files\r\n function resolvePath(path) {\r\n\r\n if (!/^package:\\/\\//.test(path)) {\r\n\r\n return workingPath ? workingPath + path : path;\r\n\r\n }\r\n\r\n // Remove \"package://\" keyword and split meshPath at the first slash\r\n const [targetPkg, relPath] = path.replace(/^package:\\/\\//, '').split(/\\/(.+)/);\r\n\r\n if (typeof packages === 'string') {\r\n\r\n // \"pkg\" is one single package\r\n if (packages.endsWith(targetPkg)) {\r\n\r\n // \"pkg\" is the target package\r\n return packages + '/' + relPath;\r\n\r\n } else {\r\n\r\n // Assume \"pkg\" is the target package's parent directory\r\n return packages + '/' + targetPkg + '/' + relPath;\r\n\r\n }\r\n\r\n } else if (packages instanceof Function) {\r\n\r\n return packages(targetPkg) + '/' + relPath;\r\n\r\n } else if (typeof packages === 'object') {\r\n\r\n // \"pkg\" is a map of packages\r\n if (targetPkg in packages) {\r\n\r\n return packages[targetPkg] + '/' + relPath;\r\n\r\n } else {\r\n\r\n console.error(`URDFLoader : ${ targetPkg } not found in provided package list.`);\r\n return null;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n // Process the URDF text format\r\n function processUrdf(data) {\r\n\r\n let children;\r\n if (data instanceof Document) {\r\n\r\n children = [ ...data.children ];\r\n\r\n } else if (data instanceof Element) {\r\n\r\n children = [ data ];\r\n\r\n } else {\r\n\r\n const parser = new DOMParser();\r\n const urdf = parser.parseFromString(data, 'text/xml');\r\n children = [ ...urdf.children ];\r\n\r\n }\r\n\r\n const robotNode = children.filter(c => c.nodeName === 'robot').pop();\r\n return processRobot(robotNode);\r\n\r\n }\r\n\r\n // Process the <robot> node\r\n function processRobot(robot) {\r\n\r\n const robotNodes = [ ...robot.children ];\r\n const links = robotNodes.filter(c => c.nodeName.toLowerCase() === 'link');\r\n const joints = robotNodes.filter(c => c.nodeName.toLowerCase() === 'joint');\r\n const materials = robotNodes.filter(c => c.nodeName.toLowerCase() === 'material');\r\n const obj = new URDFRobot();\r\n\r\n obj.robotName = robot.getAttribute('name');\r\n obj.urdfRobotNode = robot;\r\n\r\n // Create the <material> map\r\n materials.forEach(m => {\r\n\r\n const name = m.getAttribute('name');\r\n materialMap[name] = processMaterial(m);\r\n\r\n });\r\n\r\n // Create the <link> map\r\n const visualMap = {};\r\n const colliderMap = {};\r\n links.forEach(l => {\r\n\r\n const name = l.getAttribute('name');\r\n const isRoot = robot.querySelector(`child[link=\"${ name }\"]`) === null;\r\n linkMap[name] = processLink(l, visualMap, colliderMap, isRoot ? obj : null);\r\n\r\n });\r\n\r\n // Create the <joint> map\r\n joints.forEach(j => {\r\n\r\n const name = j.getAttribute('name');\r\n jointMap[name] = processJoint(j);\r\n\r\n });\r\n\r\n obj.joints = jointMap;\r\n obj.links = linkMap;\r\n obj.colliders = colliderMap;\r\n obj.visual = visualMap;\r\n\r\n // Link up mimic joints\r\n const jointList = Object.values(jointMap);\r\n jointList.forEach(j => {\r\n\r\n if (j instanceof URDFMimicJoint) {\r\n\r\n jointMap[j.mimicJoint].mimicJoints.push(j);\r\n\r\n }\r\n\r\n });\r\n\r\n // Detect infinite loops of mimic joints\r\n jointList.forEach(j => {\r\n\r\n const uniqueJoints = new Set();\r\n const iterFunction = joint => {\r\n\r\n if (uniqueJoints.has(joint)) {\r\n\r\n throw new Error('URDFLoader: Detected an infinite loop of mimic joints.');\r\n\r\n }\r\n\r\n uniqueJoints.add(joint);\r\n joint.mimicJoints.forEach(j => {\r\n\r\n iterFunction(j);\r\n\r\n });\r\n\r\n };\r\n\r\n iterFunction(j);\r\n });\r\n\r\n obj.frames = {\r\n ...colliderMap,\r\n ...visualMap,\r\n ...linkMap,\r\n ...jointMap,\r\n };\r\n\r\n return obj;\r\n\r\n }\r\n\r\n // Process joint nodes and parent them\r\n function processJoint(joint) {\r\n\r\n const children = [ ...joint.children ];\r\n const jointType = joint.getAttribute('type');\r\n\r\n let obj;\r\n\r\n const mimicTag = children.find(n => n.nodeName.toLowerCase() === 'mimic');\r\n if (mimicTag) {\r\n\r\n obj = new URDFMimicJoint();\r\n obj.mimicJoint = mimicTag.getAttribute('joint');\r\n obj.multiplier = parseFloat(mimicTag.getAttribute('multiplier') || 1.0);\r\n obj.offset = parseFloat(mimicTag.getAttribute('offset') || 0.0);\r\n\r\n } else {\r\n\r\n obj = new URDFJoint();\r\n\r\n }\r\n\r\n obj.urdfNode = joint;\r\n obj.name = joint.getAttribute('name');\r\n obj.urdfName = obj.name;\r\n obj.jointType = jointType;\r\n\r\n let parent = null;\r\n let child = null;\r\n let xyz = [0, 0, 0];\r\n let rpy = [0, 0, 0];\r\n\r\n // Extract the attributes\r\n children.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'origin') {\r\n\r\n xyz = processTuple(n.getAttribute('xyz'));\r\n rpy = processTuple(n.getAttribute('rpy'));\r\n\r\n } else if (type === 'child') {\r\n\r\n child = linkMap[n.getAttribute('link')];\r\n\r\n } else if (type === 'parent') {\r\n\r\n parent = linkMap[n.getAttribute('link')];\r\n\r\n } else if (type === 'limit') {\r\n\r\n obj.limit.lower = parseFloat(n.getAttribute('lower') || obj.limit.lower);\r\n obj.limit.upper = parseFloat(n.getAttribute('upper') || obj.limit.upper);\r\n\r\n }\r\n });\r\n\r\n // Join the links\r\n parent.add(obj);\r\n obj.add(child);\r\n applyRotation(obj, rpy);\r\n obj.position.set(xyz[0], xyz[1], xyz[2]);\r\n\r\n // Set up the rotate function\r\n const axisNode = children.filter(n => n.nodeName.toLowerCase() === 'axis')[0];\r\n\r\n if (axisNode) {\r\n\r\n const axisXYZ = axisNode.getAttribute('xyz').split(/\\s+/g).map(num => parseFloat(num));\r\n obj.axis = new THREE.Vector3(axisXYZ[0], axisXYZ[1], axisXYZ[2]);\r\n obj.axis.normalize();\r\n\r\n }\r\n\r\n return obj;\r\n\r\n }\r\n\r\n // Process the <link> nodes\r\n function processLink(link, visualMap, colliderMap, target = null) {\r\n\r\n if (target === null) {\r\n\r\n target = new URDFLink();\r\n\r\n }\r\n\r\n const children = [ ...link.children ];\r\n target.name = link.getAttribute('name');\r\n target.urdfName = target.name;\r\n target.urdfNode = link;\r\n\r\n if (parseVisual) {\r\n\r\n const visualNodes = children.filter(n => n.nodeName.toLowerCase() === 'visual');\r\n visualNodes.forEach(vn => {\r\n\r\n const v = processLinkElement(vn, materialMap);\r\n target.add(v);\r\n\r\n if (vn.hasAttribute('name')) {\r\n\r\n const name = vn.getAttribute('name');\r\n v.name = name;\r\n v.urdfName = name;\r\n visualMap[name] = v;\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n if (parseCollision) {\r\n\r\n const collisionNodes = children.filter(n => n.nodeName.toLowerCase() === 'collision');\r\n collisionNodes.forEach(cn => {\r\n\r\n const c = processLinkElement(cn);\r\n target.add(c);\r\n\r\n if (cn.hasAttribute('name')) {\r\n\r\n const name = cn.getAttribute('name');\r\n c.name = name;\r\n c.urdfName = name;\r\n colliderMap[name] = c;\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n return target;\r\n\r\n }\r\n\r\n function processMaterial(node) {\r\n\r\n const matNodes = [ ...node.children ];\r\n const material = new THREE.MeshPhongMaterial();\r\n\r\n material.name = node.getAttribute('name') || '';\r\n matNodes.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'color') {\r\n\r\n const rgba =\r\n n\r\n .getAttribute('rgba')\r\n .split(/\\s/g)\r\n .map(v => parseFloat(v));\r\n\r\n material.color.setRGB(rgba[0], rgba[1], rgba[2]).convertSRGBToLinear();\r\n material.opacity = rgba[3];\r\n material.transparent = rgba[3] < 1;\r\n material.depthWrite = !material.transparent;\r\n\r\n } else if (type === 'texture') {\r\n\r\n // The URDF spec does not require that the <texture/> tag include\r\n // a filename attribute so skip loading the texture if not provided.\r\n const filename = n.getAttribute('filename');\r\n if (filename) {\r\n\r\n const loader = new THREE.TextureLoader(manager);\r\n const filePath = resolvePath(filename);\r\n material.map = loader.load(filePath);\r\n material.map.encoding = THREE.sRGBEncoding;\r\n\r\n }\r\n\r\n }\r\n });\r\n\r\n return material;\r\n\r\n }\r\n\r\n // Process the visual and collision nodes into meshes\r\n function processLinkElement(vn, materialMap = {}) {\r\n\r\n const isCollisionNode = vn.nodeName.toLowerCase() === 'collision';\r\n const children = [ ...vn.children ];\r\n let material = null;\r\n\r\n // get the material first\r\n const materialNode = children.filter(n => n.nodeName.toLowerCase() === 'material')[0];\r\n if (materialNode) {\r\n\r\n const name = materialNode.getAttribute('name');\r\n if (name && name in materialMap) {\r\n\r\n material = materialMap[name];\r\n\r\n } else {\r\n\r\n material = processMaterial(materialNode);\r\n\r\n }\r\n\r\n } else {\r\n\r\n material = new THREE.MeshPhongMaterial();\r\n\r\n }\r\n\r\n const group = isCollisionNode ? new URDFCollider() : new URDFVisual();\r\n group.urdfNode = vn;\r\n\r\n children.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'geometry') {\r\n\r\n const geoType = n.children[0].nodeName.toLowerCase();\r\n if (geoType === 'mesh') {\r\n\r\n const filename = n.children[0].getAttribute('filename');\r\n const filePath = resolvePath(filename);\r\n\r\n // file path is null if a package directory is not provided.\r\n if (filePath !== null) {\r\n\r\n const scaleAttr = n.children[0].getAttribute('scale');\r\n if (scaleAttr) {\r\n\r\n const scale = processTuple(scaleAttr);\r\n group.scale.set(scale[0], scale[1], scale[2]);\r\n\r\n }\r\n\r\n loadMeshCb(filePath, manager, (obj, err) => {\r\n\r\n if (err) {\r\n\r\n console.error('URDFLoader: Error loading mesh.', err);\r\n\r\n } else if (obj) {\r\n\r\n if (obj instanceof THREE.Mesh) {\r\n\r\n obj.material = material;\r\n\r\n }\r\n\r\n // We don't expect non identity rotations or positions. In the case of\r\n // COLLADA files the model might come in with a custom scale for unit\r\n // conversion.\r\n obj.position.set(0, 0, 0);\r\n obj.quaternion.identity();\r\n group.add(obj);\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n } else if (geoType === 'box') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.BoxBufferGeometry(1, 1, 1);\r\n primitiveModel.material = material;\r\n\r\n const size = processTuple(n.children[0].getAttribute('size'));\r\n primitiveModel.scale.set(size[0], size[1], size[2]);\r\n\r\n group.add(primitiveModel);\r\n\r\n } else if (geoType === 'sphere') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.SphereBufferGeometry(1, 30, 30);\r\n primitiveModel.material = material;\r\n\r\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\r\n primitiveModel.scale.set(radius, radius, radius);\r\n\r\n group.add(primitiveModel);\r\n\r\n } else if (geoType === 'cylinder') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.CylinderBufferGeometry(1, 1, 1, 30);\r\n primitiveModel.material = material;\r\n\r\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\r\n const length = parseFloat(n.children[0].getAttribute('length')) || 0;\r\n primitiveModel.scale.set(radius, length, radius);\r\n primitiveModel.rotation.set(Math.PI / 2, 0, 0);\r\n\r\n group.add(primitiveModel);\r\n\r\n }\r\n\r\n } else if (type === 'origin') {\r\n\r\n const xyz = processTuple(n.getAttribute('xyz'));\r\n const rpy = processTuple(n.getAttribute('rpy'));\r\n\r\n group.position.set(xyz[0], xyz[1], xyz[2]);\r\n group.rotation.set(0, 0, 0);\r\n applyRotation(group, rpy);\r\n\r\n }\r\n\r\n });\r\n\r\n return group;\r\n\r\n }\r\n\r\n return processUrdf(content);\r\n\r\n }\r\n\r\n // Default mesh loading function\r\n defaultMeshLoader(path, manager, done) {\r\n\r\n if (/\\.stl$/i.test(path)) {\r\n\r\n const loader = new STLLoader(manager);\r\n loader.load(path, geom => {\r\n const mesh = new THREE.Mesh(geom, new THREE.MeshPhongMaterial());\r\n done(mesh);\r\n });\r\n\r\n } else if (/\\.dae$/i.test(path)) {\r\n\r\n const loader = new ColladaLoader(manager);\r\n loader.load(path, dae => done(dae.scene));\r\n\r\n } else {\r\n\r\n console.warn(`URDFLoader: Could not load model at ${ path }.\\nNo loader available`);\r\n\r\n }\r\n\r\n }\r\n\r\n};\r\n"],"names":["Object3D","Vector3","THREE","STLLoader","ColladaLoader"],"mappings":"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"}