exoskeleton/code/config/slave_7dof.urdf

208 lines
6.0 KiB
Plaintext
Raw Permalink Normal View History

<?xml version="1.0"?>
<robot name="slave_7dof">
<!-- Links -->
<link name="slave_base">
<inertial>
<origin xyz="0 0 0" rpy="0 0 0"/>
<mass value="1.0"/>
<inertia ixx="1e-2" iyy="1e-2" izz="1e-2" ixy="0" ixz="0" iyz="0"/>
</inertial>
</link>
<link name="slave_shoulder">
<inertial>
<origin xyz="0 0 0" rpy="0 0 0"/>
<mass value="0.1"/>
<inertia ixx="1e-4" iyy="1e-4" izz="1e-4" ixy="0" ixz="0" iyz="0"/>
</inertial>
</link>
<link name="slave_link_sp">
<inertial>
<origin xyz="0 0 0" rpy="0 0 0"/>
<mass value="0.1"/>
<inertia ixx="1e-4" iyy="1e-4" izz="1e-4" ixy="0" ixz="0" iyz="0"/>
</inertial>
</link>
<link name="slave_link_sy">
<inertial>
<origin xyz="0 0 0" rpy="0 0 0"/>
<mass value="0.1"/>
<inertia ixx="1e-4" iyy="1e-4" izz="1e-4" ixy="0" ixz="0" iyz="0"/>
</inertial>
</link>
<link name="slave_upper_arm">
<visual>
<!-- cylinder aligned to X axis -->
<origin xyz="0 -0.140 0" rpy="1.57079632679 0 0"/>
<geometry>
<cylinder length="0.280" radius="0.02"/>
</geometry>
<material name="upper_arm_mat">
<color rgba="0.6 0.6 0.6 1"/>
</material>
</visual>
<collision>
<origin xyz="0 -0.140 0" rpy="1.57079632679 0 0"/>
<geometry>
<cylinder length="0.280" radius="0.02"/>
</geometry>
</collision>
<inertial>
<origin xyz="0 -0.140 0" rpy="1.57079632679 0 0"/>
<mass value="1.0"/>
<inertia ixx="0.01" iyy="0.01" izz="0.01" ixy="0" ixz="0" iyz="0"/>
</inertial>
</link>
<link name="slave_forearm">
<visual>
<origin xyz="0 -0.150 0" rpy="1.57079632679 0 0"/>
<geometry>
<cylinder length="0.300" radius="0.018"/>
</geometry>
<material name="forearm_mat">
<color rgba="0.7 0.7 0.9 1"/>
</material>
</visual>
<collision>
<origin xyz="0 -0.150 0" rpy="1.57079632679 0 0"/>
<geometry>
<cylinder length="0.300" radius="0.018"/>
</geometry>
</collision>
<inertial>
<origin xyz="0 -0.150 0" rpy="1.57079632679 0 0"/>
<mass value="0.8"/>
<inertia ixx="0.008" iyy="0.008" izz="0.008" ixy="0" ixz="0" iyz="0"/>
</inertial>
</link>
<link name="slave_wrist">
<inertial>
<origin xyz="0 0 0" rpy="0 0 0"/>
<mass value="0.1"/>
<inertia ixx="1e-4" iyy="1e-4" izz="1e-4" ixy="0" ixz="0" iyz="0"/>
</inertial>
</link>
<link name="slave_link_wr">
<inertial>
<origin xyz="0 0 0" rpy="0 0 0"/>
<mass value="0.1"/>
<inertia ixx="1e-4" iyy="1e-4" izz="1e-4" ixy="0" ixz="0" iyz="0"/>
</inertial>
</link>
<link name="slave_link_wy">
<inertial>
<origin xyz="0 0 0" rpy="0 0 0"/>
<mass value="0.1"/>
<inertia ixx="1e-4" iyy="1e-4" izz="1e-4" ixy="0" ixz="0" iyz="0"/>
</inertial>
</link>
<link name="slave_ee">
<visual>
<origin xyz="0 -0.05 0" rpy="0 0 0"/>
<geometry>
<box size="0.02 0.10 0.02"/>
</geometry>
<material name="ee_mat">
<color rgba="0.8 0.2 0.2 1"/>
</material>
</visual>
<collision>
<origin xyz="0 -0.05 0" rpy="0 0 0"/>
<geometry>
<box size="0.02 0.10 0.02"/>
</geometry>
</collision>
<inertial>
<origin xyz="0 -0.05 0" rpy="0 0 0"/>
<mass value="0.2"/>
<inertia ixx="0.001" iyy="0.001" izz="0.001" ixy="0" ixz="0" iyz="0"/>
</inertial>
</link>
<!-- Joints -->
<!-- ✅ 关键:把整条手臂在 slave_base 坐标系里转到 -Y 方向
+X -> -Y 等价于绕 Z 轴 -90° -->
<joint name="slave_base_to_shoulder" type="fixed">
<parent link="slave_base"/>
<child link="slave_shoulder"/>
<origin xyz="0 0 0" rpy="0 0 0"/>
</joint>
<!-- Shoulder order: pitch(Y) -> yaw(Z) -> roll(X) -->
<joint name="slave_shoulder_pitch_joint" type="revolute">
<parent link="slave_shoulder"/>
<child link="slave_link_sp"/>
<origin xyz="0 0 0" rpy="0 0 0"/>
<axis xyz="0 -1 0"/>
<limit lower="-3.1416" upper="3.1416" effort="50" velocity="4.0"/>
</joint>
<joint name="slave_shoulder_yaw_joint" type="revolute">
<parent link="slave_link_sp"/>
<child link="slave_link_sy"/>
<origin xyz="0 0 0" rpy="0 0 0"/>
<axis xyz="1 0 0"/>
<limit lower="-3.1416" upper="3.1416" effort="50" velocity="4.0"/>
</joint>
<joint name="slave_shoulder_roll_joint" type="revolute">
<parent link="slave_link_sy"/>
<child link="slave_upper_arm"/>
<origin xyz="0 0 0" rpy="0 0 0"/>
<axis xyz="0 -1 0"/>
<limit lower="-3.1416" upper="3.1416" effort="50" velocity="4.0"/>
</joint>
<!-- Elbow at x = 0.280 -->
<joint name="slave_elbow_flex_joint" type="revolute">
<parent link="slave_upper_arm"/>
<child link="slave_forearm"/>
<origin xyz="0 -0.280 0" rpy="0 0 0"/>
<axis xyz="1 0 0"/>
<limit lower="-3.1416" upper="3.1416" effort="30" velocity="4.0"/>
</joint>
<!-- Wrist fixed at x = 0.300 -->
<joint name="slave_forearm_to_wrist" type="fixed">
<parent link="slave_forearm"/>
<child link="slave_wrist"/>
<origin xyz="0 -0.300 0" rpy="0 0 0"/>
</joint>
<!-- Wrist order: roll(X) -> yaw(Y) -> pitch(Z) -->
<joint name="slave_wrist_roll_joint" type="revolute">
<parent link="slave_wrist"/>
<child link="slave_link_wr"/>
<origin xyz="0 0 0" rpy="0 0 0"/>
<axis xyz="0 -1 0"/>
<limit lower="-3.1416" upper="3.1416" effort="20" velocity="4.0"/>
</joint>
<joint name="slave_wrist_yaw_joint" type="revolute">
<parent link="slave_link_wr"/>
<child link="slave_link_wy"/>
<origin xyz="0 0 0" rpy="0 0 0"/>
<axis xyz="0 0 1"/>
<limit lower="-3.1416" upper="3.1416" effort="20" velocity="4.0"/>
</joint>
<joint name="slave_wrist_pitch_joint" type="revolute">
<parent link="slave_link_wy"/>
<child link="slave_ee"/>
<origin xyz="0 0 0" rpy="0 0 0"/>
<axis xyz="1 0 0"/>
<limit lower="-3.1416" upper="3.1416" effort="20" velocity="4.0"/>
</joint>
</robot>