fixed parenting of sample.urdf
parent
f7eef1b53f
commit
f77ff74f94
99
script.js
99
script.js
|
|
@ -80,6 +80,65 @@ function createRotationArc(axis, lower, upper, radius = 0.1, segments = 32) {
|
|||
return new THREE.Line(geometry, material);
|
||||
}
|
||||
|
||||
function createRotationSector(axis, lower, upper, radius = 0.1, segments = 64) {
|
||||
const shape = new THREE.Shape();
|
||||
shape.moveTo(0, 0);
|
||||
|
||||
for (let i = 0; i <= segments; i++) {
|
||||
const angle = lower + (upper - lower) * (i / segments);
|
||||
shape.lineTo(Math.cos(angle) * radius, Math.sin(angle) * radius);
|
||||
}
|
||||
|
||||
shape.lineTo(0, 0); // close the shape
|
||||
|
||||
const geometry = new THREE.ShapeGeometry(shape);
|
||||
const material = new THREE.MeshBasicMaterial({
|
||||
color: 0x888888, // light gray
|
||||
transparent: true,
|
||||
opacity: 0.3, // translucent
|
||||
side: THREE.DoubleSide, // show both sides of the fill
|
||||
depthTest: false, // ✅ always on top
|
||||
depthWrite: false
|
||||
});
|
||||
|
||||
|
||||
const mesh = new THREE.Mesh(geometry, material);
|
||||
|
||||
// Orient the sector to match the axis
|
||||
const basis = new THREE.Matrix4();
|
||||
const up = new THREE.Vector3(0, 0, 1);
|
||||
const quaternion = new THREE.Quaternion().setFromUnitVectors(up, axis.clone().normalize());
|
||||
basis.makeRotationFromQuaternion(quaternion);
|
||||
mesh.applyMatrix4(basis);
|
||||
|
||||
return mesh;
|
||||
}
|
||||
|
||||
function createAngleIndicator(axis, angle, radius = 0.1) {
|
||||
const dir = new THREE.Vector3(Math.cos(angle), Math.sin(angle), 0).multiplyScalar(radius);
|
||||
|
||||
const geometry = new THREE.BufferGeometry().setFromPoints([
|
||||
new THREE.Vector3(0, 0, 0),
|
||||
dir,
|
||||
]);
|
||||
|
||||
const material = new THREE.LineBasicMaterial({
|
||||
color: 0xffffff, // white
|
||||
linewidth: 2, // note: linewidth only works in some renderers
|
||||
depthTest: false, // ✅ always on top
|
||||
depthWrite: false
|
||||
});
|
||||
|
||||
const line = new THREE.Line(geometry, material);
|
||||
|
||||
// Rotate into axis plane
|
||||
const up = new THREE.Vector3(0, 0, 1);
|
||||
const quaternion = new THREE.Quaternion().setFromUnitVectors(up, axis.clone().normalize());
|
||||
line.applyQuaternion(quaternion);
|
||||
|
||||
return line;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Load URDF
|
||||
|
|
@ -136,6 +195,19 @@ loader.load('./urdf/sample.urdf', robot => {
|
|||
// ✅ Apply rotation
|
||||
draggedJoint.rotateOnAxis(worldAxis, actualDelta);
|
||||
jointAngles[jointName] = clampedAngle;
|
||||
|
||||
|
||||
// Remove old indicator
|
||||
if (draggedJoint.userData.gizmo?.indicator) {
|
||||
draggedJoint.parent.remove(draggedJoint.userData.gizmo.indicator);
|
||||
}
|
||||
|
||||
// Add updated indicator
|
||||
const newIndicator = createAngleIndicator(worldAxis, jointAngles[jointName]);
|
||||
newIndicator.position.copy(draggedJoint.position);
|
||||
draggedJoint.parent.add(newIndicator);
|
||||
draggedJoint.userData.gizmo.indicator = newIndicator;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -206,14 +278,22 @@ loader.load('./urdf/sample.urdf', robot => {
|
|||
}
|
||||
|
||||
worldAxis = urdfAxis.normalize();
|
||||
const limits = draggedJoint?.limit;
|
||||
console.log(limits);
|
||||
const limits = robot.joints[jointName]?.limit;
|
||||
const lower = limits?.lower ?? -Math.PI;
|
||||
const upper = limits?.upper ?? Math.PI;
|
||||
arc = createRotationArc(worldAxis, lower, upper);
|
||||
draggedJoint.parent.add(arc);
|
||||
arc.position.copy(draggedJoint.position);
|
||||
jointAngles[jointName] ??= 0;
|
||||
|
||||
const sector = createRotationSector(worldAxis, lower, upper);
|
||||
const indicator = createAngleIndicator(worldAxis, jointAngles[jointName] ?? 0);
|
||||
|
||||
sector.position.copy(draggedJoint.position);
|
||||
indicator.position.copy(draggedJoint.position);
|
||||
|
||||
draggedJoint.parent.add(sector);
|
||||
draggedJoint.parent.add(indicator);
|
||||
|
||||
// Store for cleanup
|
||||
draggedJoint.userData.gizmo = { sector, indicator };
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -228,7 +308,12 @@ loader.load('./urdf/sample.urdf', robot => {
|
|||
canvas.addEventListener('pointerup', () => {
|
||||
isDragging = false;
|
||||
controls.enabled = true;
|
||||
draggedJoint.parent.remove(arc);
|
||||
const gizmo = draggedJoint?.userData.gizmo;
|
||||
if (gizmo) {
|
||||
draggedJoint.parent.remove(gizmo.sector);
|
||||
draggedJoint.parent.remove(gizmo.indicator);
|
||||
}
|
||||
|
||||
|
||||
draggedJoint = null;
|
||||
worldAxis = null;
|
||||
|
|
|
|||
283
urdf/sample.urdf
283
urdf/sample.urdf
|
|
@ -4,6 +4,7 @@
|
|||
<parent link="base_footprint" />
|
||||
<child link="base_link" />
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/>
|
||||
</joint>
|
||||
<link name="base_link">
|
||||
<visual>
|
||||
|
|
@ -30,9 +31,10 @@
|
|||
<joint name="base_link_to_spine_1" type="revolute">
|
||||
<parent link="base_link"/>
|
||||
<child link="spine_1"/>
|
||||
<origin xyz="0 0 0.033737961440044734" rpy="0 0 0" />
|
||||
<axis xyz="-0.9996738127289346 -0.011364625593810783 0.02287167307189009"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/> </joint>
|
||||
<origin xyz="0 0 0.0337" rpy="0 0 0"/>
|
||||
<axis xyz="-0.9997 -0.0114 0.0229"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/>
|
||||
</joint>
|
||||
<link name="spine_1">
|
||||
<visual>
|
||||
<origin xyz="0 0 0.05" rpy="0 0 0" />
|
||||
|
|
@ -55,12 +57,13 @@
|
|||
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint name="base_link_to_upper_arm_right" type="revolute">
|
||||
<parent link="base_link" />
|
||||
<joint name="spine_1_to_upper_arm_right" type="revolute">
|
||||
<parent link="spine_1"/>
|
||||
<child link="upper_arm_right"/>
|
||||
<origin xyz="0.062354968072652533 0 0.13096467297466818" rpy="-3.141592653589793 -0.6586873842445309 -1.548624773543236e-16" />
|
||||
<axis xyz="-0.9996738127289344 -0.011364625593814749 0.022871673071897854"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/> </joint>
|
||||
<origin xyz="0.0624 0 0.0973" rpy="-3.1416 -0.6587 0"/>
|
||||
<axis xyz="-0.9997 -0.0114 0.0229"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/>
|
||||
</joint>
|
||||
<link name="upper_arm_right">
|
||||
<visual>
|
||||
<origin xyz="0 0 0.03" rpy="0 0 0" />
|
||||
|
|
@ -83,12 +86,13 @@
|
|||
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint name="base_link_to_lower_arm_right" type="revolute">
|
||||
<parent link="base_link" />
|
||||
<joint name="upper_arm_right_to_lower_arm_right" type="revolute">
|
||||
<parent link="upper_arm_right"/>
|
||||
<child link="lower_arm_right"/>
|
||||
<origin xyz="0.10009022777221713 0 0.08243944985877427" rpy="-3.141592653589793 -0.6586873842445309 -2.496506045944997e-16" />
|
||||
<axis xyz="-0.9996738127289344 -0.011364625593814749 0.022871673071897854"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/> </joint>
|
||||
<origin xyz="0.0 0 .065" rpy="0 0 0"/>
|
||||
<axis xyz="-0.9997 -0.0114 0.0229"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/>
|
||||
</joint>
|
||||
<link name="lower_arm_right">
|
||||
<visual>
|
||||
<origin xyz="0 0 0.025" rpy="0 0 0" />
|
||||
|
|
@ -111,12 +115,13 @@
|
|||
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint name="base_link_to_hand_right" type="revolute">
|
||||
<parent link="base_link" />
|
||||
<joint name="lower_arm_right_to_hand_right" type="revolute">
|
||||
<parent link="lower_arm_right"/>
|
||||
<child link="hand_right"/>
|
||||
<origin xyz="0.13276109632093022 0 0.03940068352661779" rpy="-3.141592653589793 -0.6586873842445309 -2.496506045944997e-16" />
|
||||
<axis xyz="-0.9996738127289344 -0.011364625593814749 0.022871673071897854"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/> </joint>
|
||||
<origin xyz="0 0 0.055" rpy="0 0 0"/>
|
||||
<axis xyz="0 1 0"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/>
|
||||
</joint>
|
||||
<link name="hand_right">
|
||||
<visual>
|
||||
<origin xyz="0 0 0.015" rpy="0 0 0" />
|
||||
|
|
@ -141,24 +146,29 @@
|
|||
</link>
|
||||
|
||||
<!-- Left Upper Arm -->
|
||||
<joint name="base_link_to_upper_arm_left" type="revolute">
|
||||
<parent link="base_link" />
|
||||
<joint name="spine_1_to_upper_arm_left" type="revolute">
|
||||
<parent link="spine_1"/>
|
||||
<child link="upper_arm_left"/>
|
||||
<origin xyz="-0.062354968072652533 0 0.13096467297466818" rpy="-3.141592653589793 0.6586873842445309 -1.548624773543236e-16" />
|
||||
<axis xyz="-0.9996738127289344 -0.011364625593814749 0.022871673071897854"/>
|
||||
<origin xyz="-0.0624 0 0.0973" rpy="3.1416 0.6587 0"/>
|
||||
<axis xyz="-1 0 0"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/>
|
||||
</joint>
|
||||
|
||||
<link name="upper_arm_left">
|
||||
<visual>
|
||||
<origin xyz="0 0 0.03" rpy="0 0 0"/>
|
||||
<geometry><box size="0.03 0.03 0.06" /></geometry>
|
||||
<geometry>
|
||||
<box size="0.03 0.03 0.06"/>
|
||||
</geometry>
|
||||
<material name="upper_arm_left-material">
|
||||
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1"/>
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0.03" rpy="0 0 0"/>
|
||||
<geometry><box size="0.03 0.03 0.06" /></geometry>
|
||||
<geometry>
|
||||
<box size="0.03 0.03 0.06"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<origin xyz="0 0 0.03" rpy="0 0 0"/>
|
||||
|
|
@ -167,25 +177,31 @@
|
|||
</inertial>
|
||||
</link>
|
||||
|
||||
|
||||
<!-- Left Lower Arm -->
|
||||
<joint name="base_link_to_lower_arm_left" type="revolute">
|
||||
<parent link="base_link" />
|
||||
<joint name="upper_arm_left_to_lower_arm_left" type="revolute">
|
||||
<parent link="upper_arm_left"/>
|
||||
<child link="lower_arm_left"/>
|
||||
<origin xyz="-0.10009022777221713 0 0.08243944985877427" rpy="-3.141592653589793 0.6586873842445309 -2.496506045944997e-16" />
|
||||
<axis xyz="-0.9996738127289344 -0.011364625593814749 0.022871673071897854"/>
|
||||
<origin xyz="0.0 0 0.065" rpy="0 0 0"/>
|
||||
<axis xyz="-1 0 0"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/>
|
||||
</joint>
|
||||
|
||||
<link name="lower_arm_left">
|
||||
<visual>
|
||||
<origin xyz="0 0 0.025" rpy="0 0 0"/>
|
||||
<geometry><box size="0.03 0.03 0.05" /></geometry>
|
||||
<geometry>
|
||||
<box size="0.03 0.03 0.05"/>
|
||||
</geometry>
|
||||
<material name="lower_arm_left-material">
|
||||
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1"/>
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0.025" rpy="0 0 0"/>
|
||||
<geometry><box size="0.03 0.03 0.05" /></geometry>
|
||||
<geometry>
|
||||
<box size="0.03 0.03 0.05"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<origin xyz="0 0 0.025" rpy="0 0 0"/>
|
||||
|
|
@ -194,205 +210,247 @@
|
|||
</inertial>
|
||||
</link>
|
||||
|
||||
|
||||
<!-- Left Hand -->
|
||||
<joint name="base_link_to_hand_left" type="revolute">
|
||||
<parent link="base_link" />
|
||||
<joint name="lower_arm_left_to_hand_left" type="revolute">
|
||||
<parent link="lower_arm_left"/>
|
||||
<child link="hand_left"/>
|
||||
<origin xyz="-0.13276109632093022 0 0.03940068352661779" rpy="-3.141592653589793 0.6586873842445309 -2.496506045944997e-16" />
|
||||
<axis xyz="-0.9996738127289344 -0.011364625593814749 0.022871673071897854"/>
|
||||
<origin xyz="0 0 0.055" rpy="0 0 0"/>
|
||||
<axis xyz="0 1 0"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/>
|
||||
</joint>
|
||||
|
||||
|
||||
<link name="hand_left">
|
||||
<visual>
|
||||
<origin xyz="0 0 0.015" rpy="0 0 0"/>
|
||||
<geometry><box size="0.03 0.03 0.03" /></geometry>
|
||||
<geometry>
|
||||
<box size="0.03 0.03 0.03"/>
|
||||
</geometry>
|
||||
<material name="hand_left-material">
|
||||
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1"/>
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0.015" rpy="0 0 0"/>
|
||||
<geometry><box size="0.03 0.03 0.03" /></geometry>
|
||||
<geometry>
|
||||
<box size="0.03 0.03 0.03"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<origin xyz="0 0 0.015" rpy="0 0 0"/>
|
||||
<mass value="1"/>
|
||||
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.0" iyz="0" izz="0.16666666666666666" />
|
||||
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666"/>
|
||||
</inertial>
|
||||
</link>
|
||||
|
||||
|
||||
|
||||
<joint name="base_link_to_upper_leg_right" type="revolute">
|
||||
<parent link="base_link" />
|
||||
<child link="upper_leg_right" />
|
||||
<origin xyz="0.027260906368426083 0 -0.0372788919866843" rpy="3.141592653589793 2.220446049250313e-16 3.141592653589793" />
|
||||
<axis xyz="-0.9996738127289344 -0.011364625593814749 0.022871673071897854"/>
|
||||
<origin xyz="0.035 0 -0.035" rpy="0 0 0" />
|
||||
<axis xyz="1 0 0"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/> </joint>
|
||||
|
||||
<link name="upper_leg_right">
|
||||
<visual>
|
||||
<origin xyz="0 0 0.03" rpy="0 0 0" />
|
||||
<origin xyz="0 0 -0.035" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="0.04 0.04 0.07"/>
|
||||
</geometry>
|
||||
<material name="upper_leg_right-material">
|
||||
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
|
||||
<color rgba="0.0021 0.0497 0.4851 1"/>
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0.03" rpy="0 0 0" />
|
||||
<origin xyz="0 0 -0.035" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="0.04 0.04 0.07"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<origin xyz="0 0 0.03" rpy="0 0 0" />
|
||||
<origin xyz="0 0 -0.035" rpy="0 0 0"/>
|
||||
<mass value="1"/>
|
||||
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
|
||||
<inertia ixx="0.1667" ixy="0" ixz="0" iyy="0.1667" iyz="0" izz="0.1667"/>
|
||||
</inertial>
|
||||
</link>
|
||||
<joint name="base_link_to_lower_leg_right" type="revolute">
|
||||
<parent link="base_link" />
|
||||
|
||||
|
||||
<joint name="upper_leg_right_to_lower_leg_right" type="revolute">
|
||||
<parent link="upper_leg_right"/>
|
||||
<child link="lower_leg_right"/>
|
||||
<origin xyz="0.027260906368426083 0 -0.11088915657500885" rpy="3.141592653589793 2.220446049250313e-16 3.141592653589793" />
|
||||
<axis xyz="-0.9996738127289344 -0.011364625593814749 0.022871673071897854"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/> </joint>
|
||||
<origin xyz="0 0 -0.075" rpy="0 0 0"/>
|
||||
<axis xyz="-0.9997 -0.0114 0.0229"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/>
|
||||
</joint>
|
||||
|
||||
|
||||
<link name="lower_leg_right">
|
||||
<visual>
|
||||
<origin xyz="0 0 0.03" rpy="0 0 0" />
|
||||
<origin xyz="0 0 -0.035" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="0.04 0.04 0.07"/>
|
||||
</geometry>
|
||||
<material name="lower_leg_right-material">
|
||||
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
|
||||
<color rgba="0.0021 0.0497 0.4851 1"/>
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0.03" rpy="0 0 0" />
|
||||
<origin xyz="0 0 -0.035" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="0.04 0.04 0.07"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<origin xyz="0 0 0.03" rpy="0 0 0" />
|
||||
<origin xyz="0 0 -0.035" rpy="0 0 0"/>
|
||||
<mass value="1"/>
|
||||
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
|
||||
<inertia ixx="0.1667" ixy="0" ixz="0" iyy="0.1667" iyz="0" izz="0.1667"/>
|
||||
</inertial>
|
||||
</link>
|
||||
<joint name="base_link_to_lower_leg_right1" type="revolute">
|
||||
<parent link="base_link" />
|
||||
<child link="lower_leg_right1" />
|
||||
<origin xyz="0.027260906368426083 -0.004866298635659946 -0.17845456205258786" rpy="3.141592653589793 2.220446049250313e-16 3.141592653589793" />
|
||||
<axis xyz="-0.9996738127289344 -0.011364625593814749 0.022871673071897854"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/> </joint>
|
||||
<link name="lower_leg_right1">
|
||||
|
||||
|
||||
<joint name="lower_leg_right_to_foot_right" type="revolute">
|
||||
<parent link="lower_leg_right"/>
|
||||
<child link="foot_right"/>
|
||||
<origin xyz="0 0 -0.075" rpy="0 0 0"/>
|
||||
<axis xyz="-1 0 0"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/>
|
||||
</joint>
|
||||
|
||||
<link name="foot_right">
|
||||
<visual>
|
||||
<origin xyz="0 0.025 0.01" rpy="0 0 0" />
|
||||
<origin xyz="0 0.02 -0.01" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="0.04 0.08 0.02"/>
|
||||
</geometry>
|
||||
<material name="lower_leg_right1-material">
|
||||
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
|
||||
<material name="foot_right-material">
|
||||
<color rgba="0.0021 0.0497 0.4851 1"/>
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0.025 0.01" rpy="0 0 0" />
|
||||
<origin xyz="0 0.02 -0.01" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="0.04 0.08 0.02"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<origin xyz="0 0.025 0.01" rpy="0 0 0" />
|
||||
<origin xyz="0 0.02 -0.01" rpy="0 0 0"/>
|
||||
<mass value="1"/>
|
||||
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
|
||||
<inertia ixx="0.1667" ixy="0" ixz="0" iyy="0.1667" iyz="0" izz="0.1667"/>
|
||||
</inertial>
|
||||
</link>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Left Upper Leg -->
|
||||
<joint name="base_link_to_upper_leg_left" type="revolute">
|
||||
<parent link="base_link"/>
|
||||
<child link="upper_leg_left"/>
|
||||
<origin xyz="-0.027260906368426083 0 -0.0372788919866843" rpy="3.141592653589793 2.220446049250313e-16 3.141592653589793" />
|
||||
<axis xyz="-0.9996738127289344 -0.011364625593814749 0.022871673071897854"/>
|
||||
<origin xyz="-0.035 0 -0.035" rpy="0 0 0"/>
|
||||
<axis xyz="1 0 0"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/>
|
||||
</joint>
|
||||
|
||||
<link name="upper_leg_left">
|
||||
<visual>
|
||||
<origin xyz="0 0 0.03" rpy="0 0 0" />
|
||||
<geometry><box size="0.04 0.04 0.07" /></geometry>
|
||||
<origin xyz="0 0 -0.035" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="0.04 0.04 0.07"/>
|
||||
</geometry>
|
||||
<material name="upper_leg_left-material">
|
||||
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
|
||||
<color rgba="0.0021 0.0497 0.4851 1"/>
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0.03" rpy="0 0 0" />
|
||||
<geometry><box size="0.04 0.04 0.07" /></geometry>
|
||||
<origin xyz="0 0 -0.035" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="0.04 0.04 0.07"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<origin xyz="0 0 0.03" rpy="0 0 0" />
|
||||
<origin xyz="0 0 -0.035" rpy="0 0 0"/>
|
||||
<mass value="1"/>
|
||||
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
|
||||
<inertia ixx="0.1667" ixy="0" ixz="0" iyy="0.1667" iyz="0" izz="0.1667"/>
|
||||
</inertial>
|
||||
</link>
|
||||
|
||||
|
||||
<!-- Left Lower Leg -->
|
||||
<joint name="base_link_to_lower_leg_left" type="revolute">
|
||||
<parent link="base_link" />
|
||||
<joint name="upper_leg_left_to_lower_leg_left" type="revolute">
|
||||
<parent link="upper_leg_left"/>
|
||||
<child link="lower_leg_left"/>
|
||||
<origin xyz="-0.027260906368426083 0 -0.11088915657500885" rpy="3.141592653589793 2.220446049250313e-16 3.141592653589793" />
|
||||
<axis xyz="-0.9996738127289344 -0.011364625593814749 0.022871673071897854"/>
|
||||
<origin xyz="0 0 -0.075" rpy="0 0 0"/>
|
||||
<axis xyz="-0.9997 -0.0114 0.0229"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/>
|
||||
</joint>
|
||||
|
||||
<link name="lower_leg_left">
|
||||
<visual>
|
||||
<origin xyz="0 0 0.03" rpy="0 0 0" />
|
||||
<geometry><box size="0.04 0.04 0.07" /></geometry>
|
||||
<origin xyz="0 0 -0.035" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="0.04 0.04 0.07"/>
|
||||
</geometry>
|
||||
<material name="lower_leg_left-material">
|
||||
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
|
||||
<color rgba="0.0021 0.0497 0.4851 1"/>
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0.03" rpy="0 0 0" />
|
||||
<geometry><box size="0.04 0.04 0.07" /></geometry>
|
||||
<origin xyz="0 0 -0.035" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="0.04 0.04 0.07"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<origin xyz="0 0 0.03" rpy="0 0 0" />
|
||||
<origin xyz="0 0 -0.035" rpy="0 0 0"/>
|
||||
<mass value="1"/>
|
||||
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
|
||||
<inertia ixx="0.1667" ixy="0" ixz="0" iyy="0.1667" iyz="0" izz="0.1667"/>
|
||||
</inertial>
|
||||
</link>
|
||||
|
||||
|
||||
<!-- Left Foot -->
|
||||
<joint name="base_link_to_lower_leg_left1" type="revolute">
|
||||
<parent link="base_link" />
|
||||
<child link="lower_leg_left1" />
|
||||
<origin xyz="-0.027260906368426083 -0.004866298635659946 -0.17845456205258786" rpy="3.141592653589793 2.220446049250313e-16 3.141592653589793" />
|
||||
<axis xyz="-0.9996738127289344 -0.011364625593814749 0.022871673071897854"/>
|
||||
<joint name="lower_leg_left_to_foot_left" type="revolute">
|
||||
<parent link="lower_leg_left"/>
|
||||
<child link="foot_left"/>
|
||||
<origin xyz="0 0 -0.075" rpy="0 0 0"/>
|
||||
<axis xyz="-1 0 0"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/>
|
||||
</joint>
|
||||
<link name="lower_leg_left1">
|
||||
|
||||
<link name="foot_left">
|
||||
<visual>
|
||||
<origin xyz="0 0.025 0.01" rpy="0 0 0" />
|
||||
<geometry><box size="0.04 0.08 0.02" /></geometry>
|
||||
<material name="lower_leg_left1-material">
|
||||
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
|
||||
<origin xyz="0 0.02 -0.01" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="0.04 0.08 0.02"/>
|
||||
</geometry>
|
||||
<material name="foot_left-material">
|
||||
<color rgba="0.0021 0.0497 0.4851 1"/>
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0.025 0.01" rpy="0 0 0" />
|
||||
<geometry><box size="0.04 0.08 0.02" /></geometry>
|
||||
<origin xyz="0 0.02 -0.01" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="0.04 0.08 0.02"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<origin xyz="0 0.025 0.01" rpy="0 0 0" />
|
||||
<origin xyz="0 0.02 -0.01" rpy="0 0 0"/>
|
||||
<mass value="1"/>
|
||||
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
|
||||
<inertia ixx="0.1667" ixy="0" ixz="0" iyy="0.1667" iyz="0" izz="0.1667"/>
|
||||
</inertial>
|
||||
</link>
|
||||
<joint name="base_link_to_neck" type="revolute">
|
||||
<parent link="base_link" />
|
||||
|
||||
|
||||
<joint name="spine_1_to_neck" type="revolute">
|
||||
<parent link="spine_1"/>
|
||||
<child link="neck"/>
|
||||
<origin xyz="0 0 0.13701911638953843" rpy="0 0 0" />
|
||||
<axis xyz="0 -0 0.9999894272033905"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/> </joint>
|
||||
<origin xyz="0 0 0.12" rpy="0 0 0"/>
|
||||
<axis xyz="0 0 1"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/>
|
||||
</joint>
|
||||
|
||||
<link name="neck">
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
|
|
@ -415,12 +473,15 @@
|
|||
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint name="base_link_to_head" type="revolute">
|
||||
<parent link="base_link" />
|
||||
|
||||
<joint name="neck_to_head" type="revolute">
|
||||
<parent link="neck"/>
|
||||
<child link="head"/>
|
||||
<origin xyz="0 0 0.1835254369219812" rpy="0 0 0" />
|
||||
<axis xyz="0.9999427237624327 -0.0025510738064054572 0.010394287710165623"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/> </joint>
|
||||
<origin xyz="0 0 0.04" rpy="0 0 0"/>
|
||||
<axis xyz="-1 0 0"/>
|
||||
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/>
|
||||
</joint>
|
||||
|
||||
<link name="head">
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
|
|
|
|||
Loading…
Reference in New Issue