334 lines
6.8 KiB
JSON
334 lines
6.8 KiB
JSON
{
|
|
"_comment": "Robot definition file for Blender/Robot/URDF-style kinematic rendering",
|
|
|
|
"coordinateSystem": {
|
|
"_comment": "Global coordinate system definition",
|
|
|
|
"system": "right-handed",
|
|
|
|
"axes": {
|
|
"x": "right",
|
|
"y": "backward",
|
|
"z": "up"
|
|
},
|
|
|
|
"_important": [
|
|
"This coordinate system is intentionally identical to Blender.",
|
|
"All positions are expressed in millimeters.",
|
|
"All rotations are expressed in degrees.",
|
|
"Positive rotations follow the right-hand rule."
|
|
]
|
|
},
|
|
|
|
"units": {
|
|
"length": "mm",
|
|
"rotation": "degree"
|
|
},
|
|
|
|
"renderingInfo": {
|
|
"_comment": "Pure rendering settings. Does NOT affect robot kinematics.",
|
|
|
|
"cameraPosition": [-400, -700, 300],
|
|
|
|
"cameraTarget": [0, 0, 150],
|
|
|
|
"_cameraTargetInfo": [
|
|
"cameraTarget defines the world-space point the camera looks at.",
|
|
"Values may also reference state variables like 'x'."
|
|
],
|
|
|
|
"cameraUpVector": [0, 0, 1],
|
|
|
|
"lightPosition": [-500, -500, 500],
|
|
|
|
"lightTarget": [0, 0, 0],
|
|
|
|
"lightUpVector": [0, 0, 1],
|
|
|
|
"metric": "mm",
|
|
|
|
"materials": {
|
|
"wood": {
|
|
"baseColor": [0.72, 0.52, 0.33],
|
|
"roughness": 0.85,
|
|
"metallic": 0.0
|
|
},
|
|
|
|
"plaWhite": {
|
|
"baseColor": [0.95, 0.95, 0.95],
|
|
"roughness": 0.45,
|
|
"metallic": 0.0
|
|
},
|
|
|
|
"steel": {
|
|
"baseColor": [0.72, 0.72, 0.75],
|
|
"roughness": 0.25,
|
|
"metallic": 1.0
|
|
},
|
|
|
|
"powderCoatBlue": {
|
|
"baseColor": [0.15, 0.25, 0.70],
|
|
"roughness": 0.55,
|
|
"metallic": 0.0
|
|
},
|
|
|
|
"defaultPlastic": {
|
|
"baseColor": [0.95, 0.95, 0.95],
|
|
"roughness": 0.40,
|
|
"metallic": 0.0
|
|
}
|
|
}
|
|
},
|
|
|
|
"defaultPosition": {
|
|
"_comment": "Robot zero/home position",
|
|
|
|
"_important": [
|
|
"These values define the robot's neutral pose.",
|
|
"All joints are evaluated relative to this pose."
|
|
],
|
|
|
|
"x": 0,
|
|
"y": 0,
|
|
"z": 0,
|
|
|
|
"a": 0,
|
|
"b": 0,
|
|
"c": 0,
|
|
|
|
"e": 0
|
|
},
|
|
|
|
"recognized": {
|
|
"_comment": "Pose reconstructed from machine vision / markers",
|
|
|
|
"x": null,
|
|
"y": null,
|
|
"z": null,
|
|
|
|
"a": null,
|
|
"b": null,
|
|
"c": null,
|
|
|
|
"e": null
|
|
},
|
|
|
|
"movements": {
|
|
"_comment": "Current commanded movement state (e.g. from GCode)",
|
|
|
|
"x": null,
|
|
"y": null,
|
|
"z": null,
|
|
|
|
"a": null,
|
|
"b": null,
|
|
"c": null,
|
|
|
|
"e": null
|
|
},
|
|
|
|
"_statePriority": [
|
|
"movements overrides recognized",
|
|
"recognized overrides defaultPosition",
|
|
"defaultPosition overrides zero"
|
|
],
|
|
|
|
"links": {
|
|
"Board": {
|
|
"_comment": "Static world/base object",
|
|
|
|
"parent": null,
|
|
|
|
"_mountPositionMeaning": [
|
|
"Position of THIS LINK coordinate system",
|
|
"relative to the PARENT LINK coordinate system"
|
|
],
|
|
|
|
"mountPosition": [0, 0, 0],
|
|
|
|
"_mountRotationMeaning": [
|
|
"Mechanical installation rotation",
|
|
"Defines how the LINK coordinate system",
|
|
"is rotated relative to its parent link",
|
|
"This is NOT the joint movement."
|
|
],
|
|
|
|
"mountRotation": [0, 0, 0],
|
|
|
|
"_modelMeaning": [
|
|
"One link may consist of multiple STL surfaces.",
|
|
"Each STL is positioned relative to the LINK coordinate system."
|
|
],
|
|
|
|
"model": [
|
|
{
|
|
"_comment": "Visual geometry only",
|
|
|
|
"stlFile": "surfaces/Board.stl",
|
|
|
|
"_originOfModelMeaning": [
|
|
"Position of STL inside the LINK coordinate system",
|
|
"Purely visual adjustment",
|
|
"Used to compensate CAD export offsets"
|
|
],
|
|
|
|
"originOfModel": [0, 0, 0],
|
|
|
|
"_rotationOfModelMeaning": [
|
|
"Rotation of STL inside LINK coordinate system",
|
|
"Purely visual adjustment",
|
|
"Used to compensate CAD export orientation"
|
|
],
|
|
|
|
"rotationOfModelDegree": [0, 0, 90],
|
|
|
|
"material": "wood"
|
|
}
|
|
]
|
|
},
|
|
|
|
"Base": {
|
|
"_comment": "Linear axis mounted on Board",
|
|
|
|
"parent": "Board",
|
|
|
|
"mountPosition": [0, 0, 25],
|
|
|
|
"mountRotation": [0, 0, 0],
|
|
|
|
"_jointToParentMeaning": [
|
|
"Defines the kinematic transformation",
|
|
"between parent link and this link"
|
|
],
|
|
|
|
"jointToParent": {
|
|
"name": "Slider",
|
|
|
|
"_jointTypeMeaning": [
|
|
"fixed = no movement",
|
|
"linear = translational movement",
|
|
"revolute = rotational movement"
|
|
],
|
|
|
|
"type": "linear",
|
|
|
|
"_axisMeaning": [
|
|
"Joint movement axis in LOCAL joint coordinates",
|
|
"[1,0,0] = local X axis",
|
|
"[0,1,0] = local Y axis",
|
|
"[0,0,1] = local Z axis"
|
|
],
|
|
|
|
"axis": [1, 0, 0],
|
|
|
|
"_originMeaning": [
|
|
"Position of joint coordinate system",
|
|
"inside the parent link coordinate system"
|
|
],
|
|
|
|
"origin": [0, 0, 0],
|
|
|
|
"_rotationMeaning": [
|
|
"Orientation of joint coordinate system",
|
|
"inside the parent link coordinate system"
|
|
],
|
|
|
|
"rotation": [0, 0, 0],
|
|
|
|
"_variableMeaning": [
|
|
"Maps robot state variable",
|
|
"to this joint"
|
|
],
|
|
|
|
"variable": "x"
|
|
},
|
|
|
|
"model": [
|
|
{
|
|
"stlFile": "surfaces/Base.stl",
|
|
|
|
"originOfModel": [0, 0, 0],
|
|
|
|
"rotationOfModelDegree": [0, 0, 0],
|
|
|
|
"material": "plaWhite"
|
|
}
|
|
]
|
|
},
|
|
|
|
"Arm1": {
|
|
"_comment": "Rotational arm",
|
|
|
|
"parent": "Base",
|
|
|
|
"mountPosition": [150, 0, 150],
|
|
|
|
"mountRotation": [0, 0, 0],
|
|
|
|
"jointToParent": {
|
|
"name": "Joint1",
|
|
|
|
"type": "revolute",
|
|
|
|
"_important": [
|
|
"Positive rotation follows right-hand rule."
|
|
],
|
|
|
|
"axis": [1, 0, 0],
|
|
|
|
"origin": [0, 0, 0],
|
|
|
|
"rotation": [0, 0, 0],
|
|
|
|
"variable": "a"
|
|
},
|
|
|
|
"model": [
|
|
{
|
|
"stlFile": "surfaces/Holm.stl",
|
|
|
|
"originOfModel": [0, 0, 0],
|
|
|
|
"rotationOfModelDegree": [0, 0, 0],
|
|
|
|
"material": "powderCoatBlue"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
|
|
"_kinematicStructure": {
|
|
"_comment": "Conceptual hierarchy",
|
|
|
|
"hierarchy": [
|
|
"ParentLink",
|
|
"-> JointOrigin",
|
|
"-> JointMotion",
|
|
"-> ChildLink",
|
|
"-> VisualMeshes"
|
|
],
|
|
|
|
"_important": [
|
|
"All children automatically inherit parent movement.",
|
|
"This creates full forward kinematics automatically.",
|
|
"No manual propagation of child transformations is required."
|
|
]
|
|
},
|
|
|
|
"_futureExtensions": {
|
|
"_comment": "Planned future capabilities",
|
|
|
|
"possibleFeatures": [
|
|
"marker definitions",
|
|
"inverse kinematics",
|
|
"collision geometry",
|
|
"joint limits",
|
|
"joint damping",
|
|
"mass/inertia",
|
|
"vision calibration",
|
|
"urdf export",
|
|
"gcode import",
|
|
"trajectory playback"
|
|
]
|
|
}
|
|
} |