Organize hand models and launchers; use linear active joint mapping
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
# L6
|
||||
|
||||
[统一入口与映射说明](../README.md)
|
||||
|
||||
- `compare_left.sh`
|
||||
- `compare_right.sh`
|
||||
- `run_left.sh`
|
||||
- `run_right.sh`
|
||||
|
||||
`assets/` 是包内模型链接;`scripts/` 为内部实现及辅助工具。
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../src/linkerhand-sim/linker_hand_mujoco_ros2/linker_hand_mujoco_ros2/urdf/L6
|
||||
Executable
+2
@@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env bash
|
||||
exec "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/scripts/run_l6_left_dual_compare.sh" "$@"
|
||||
Executable
+2
@@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env bash
|
||||
exec "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/scripts/run_l6_right_dual_compare.sh" "$@"
|
||||
@@ -0,0 +1,956 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<robot
|
||||
name="linkerhand_l6v3.1_left">
|
||||
<!-- 手掌基座,作为整只手的根链接 -->
|
||||
<link
|
||||
name="lh_hand_base_link">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.00199 -0.00091 0.058381"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.4185" />
|
||||
<inertia
|
||||
ixx="0.0004998"
|
||||
ixy="0.000012853"
|
||||
ixz="-0.000008317"
|
||||
iyy="0.0003567"
|
||||
iyz="0.000010354"
|
||||
izz="0.0002301" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/hand_base_link.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/hand_base_link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="lh_thumb_metacarpals_base1">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0018663 -0.0066406 0.001533"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.01" />
|
||||
<inertia
|
||||
ixx="3.3724E-07"
|
||||
ixy="1.11E-07"
|
||||
ixz="-3.6039E-08"
|
||||
iyy="2.9457E-07"
|
||||
iyz="5.7181E-08"
|
||||
izz="4.903E-07" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_metacarpals_base1.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_metacarpals_base1.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_thumb_cmc_roll"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.0078133 -0.029898 0.026692"
|
||||
rpy="-0.0349060486431202 -0.000257767554592503 -0.00738147635662772" />
|
||||
<parent
|
||||
link="lh_hand_base_link" />
|
||||
<child
|
||||
link="lh_thumb_metacarpals_base1" />
|
||||
<axis
|
||||
xyz="0 0 1" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.12177324"
|
||||
effort="0.588"
|
||||
velocity="5.95" />
|
||||
<dynamics damping="0.02" friction="0.05416667"/>
|
||||
</joint>
|
||||
<link
|
||||
name="lh_thumb_metacarpals">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.00769270907060086 0.0859662184722988 0.0235283086675235"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.065" />
|
||||
<inertia
|
||||
ixx="8.407E-06"
|
||||
ixy="-1.1338E-09"
|
||||
ixz="1.1136E-08"
|
||||
iyy="8.3899E-06"
|
||||
iyz="3.1171E-07"
|
||||
izz="2.0091E-06" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_metacarpals.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_metacarpals.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_thumb_cmc_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.0057298 -0.01332 0.0027456"
|
||||
rpy="1.01778644 0 0.40143" />
|
||||
<parent
|
||||
link="lh_thumb_metacarpals_base1" />
|
||||
<child
|
||||
link="lh_thumb_metacarpals" />
|
||||
<axis
|
||||
xyz="-1 0 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="0.65673088"
|
||||
effort="1.008"
|
||||
velocity="3.47" />
|
||||
<dynamics damping="0.02" friction="0.0375"/>
|
||||
</joint>
|
||||
<link
|
||||
name="lh_thumb_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.00769270907081708 0.0798662184721594 -0.0591716913325555"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018" />
|
||||
<inertia
|
||||
ixx="1.5546E-06"
|
||||
ixy="2.4423E-09"
|
||||
ixz="2.8147E-09"
|
||||
iyy="1.7108E-06"
|
||||
iyz="-7.2756E-08"
|
||||
izz="9.1709E-07" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="lh_thumb_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_thumb_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0 0.0035 0.026"
|
||||
rpy="0 0 1.5708" />
|
||||
<parent
|
||||
link="lh_thumb_distal" />
|
||||
<child
|
||||
link="lh_thumb_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="lh_thumb_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0 0.0061 0.0827"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_thumb_metacarpals" />
|
||||
<child
|
||||
link="lh_thumb_distal" />
|
||||
<axis
|
||||
xyz="-1 0 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="0.963287"
|
||||
effort="0"
|
||||
velocity="1.7" />
|
||||
<mimic
|
||||
joint="lh_thumb_cmc_pitch"
|
||||
multiplier="0.88524192477979"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<link
|
||||
name="lh_index_proximal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.001776 -0.00011 0.012556"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.008553" />
|
||||
<inertia
|
||||
ixx="0.000000797543"
|
||||
ixy="-0.000000001275"
|
||||
ixz="0.000000138601"
|
||||
iyy="0.000000800499"
|
||||
iyz="0.000000000939"
|
||||
izz="0.000000357001" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/index_proximal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/index_proximal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_index_mcp_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="-0.00066821 -0.028967 0.11722"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_hand_base_link" />
|
||||
<child
|
||||
link="lh_index_proximal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.23208487"
|
||||
effort="0.574"
|
||||
velocity="6.10" />
|
||||
<dynamics damping="0.01" friction="0.04"/>
|
||||
</joint>
|
||||
<link
|
||||
name="lh_index_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0134 0.002262 0.016992"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018408" />
|
||||
<inertia
|
||||
ixx="0.000002488712"
|
||||
ixy="0.000000008249"
|
||||
ixz="-0.000001523059"
|
||||
iyy="0.000003723754"
|
||||
iyz="0.000000014019"
|
||||
izz="0.000001813582" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/index_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/index_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="lh_index_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_index_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0.0341 0 0.034"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_index_distal" />
|
||||
<child
|
||||
link="lh_index_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="lh_index_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.00093749 0 0.028002"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_index_proximal" />
|
||||
<child
|
||||
link="lh_index_distal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.277039"
|
||||
effort="0"
|
||||
velocity="3.1" />
|
||||
<mimic
|
||||
joint="lh_index_mcp_pitch"
|
||||
multiplier="0.923280528556446"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<link
|
||||
name="lh_middle_proximal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.001776 -0.00011 0.012556"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.008553" />
|
||||
<inertia
|
||||
ixx="0.000000797543"
|
||||
ixy="-0.000000001275"
|
||||
ixz="0.000000138601"
|
||||
iyy="0.000000800499"
|
||||
iyz="0.000000000939"
|
||||
izz="0.000000357001" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/middle_proximal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/middle_proximal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_middle_mcp_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="-0.00066821 -0.0089013 0.12322"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_hand_base_link" />
|
||||
<child
|
||||
link="lh_middle_proximal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.23208487"
|
||||
effort="0.574"
|
||||
velocity="6.10" />
|
||||
<dynamics damping="0.01" friction="0.02708333"/>
|
||||
</joint>
|
||||
<link
|
||||
name="lh_middle_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0134 0.002262 0.016992"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018408" />
|
||||
<inertia
|
||||
ixx="0.000002488712"
|
||||
ixy="0.000000008249"
|
||||
ixz="-0.000001523059"
|
||||
iyy="0.000003723754"
|
||||
iyz="0.000000014019"
|
||||
izz="0.000001813582" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/middle_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/middle_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="lh_middle_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_middle_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0.0341 0 0.034"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_middle_distal" />
|
||||
<child
|
||||
link="lh_middle_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="lh_middle_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.00093749 0 0.028002"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_middle_proximal" />
|
||||
<child
|
||||
link="lh_middle_distal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.277039"
|
||||
effort="0"
|
||||
velocity="3.1" />
|
||||
<mimic
|
||||
joint="lh_middle_mcp_pitch"
|
||||
multiplier="0.923280528556446"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<link
|
||||
name="lh_ring_proximal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.001776 -0.00011 0.012556"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.008553" />
|
||||
<inertia
|
||||
ixx="0.000000797543"
|
||||
ixy="-0.000000001275"
|
||||
ixz="0.000000138601"
|
||||
iyy="0.000000800499"
|
||||
iyz="0.000000000939"
|
||||
izz="0.000000357001" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/ring_proximal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/ring_proximal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_ring_mcp_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="-0.00067368 0.010717 0.11822"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_hand_base_link" />
|
||||
<child
|
||||
link="lh_ring_proximal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.23208487"
|
||||
effort="0.574"
|
||||
velocity="6.10" />
|
||||
<dynamics damping="0.01" friction="0.02291667"/>
|
||||
</joint>
|
||||
<link
|
||||
name="lh_ring_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0134 0.002262 0.016992"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018408" />
|
||||
<inertia
|
||||
ixx="0.000002488712"
|
||||
ixy="0.000000008249"
|
||||
ixz="-0.000001523059"
|
||||
iyy="0.000003723754"
|
||||
iyz="0.000000014019"
|
||||
izz="0.000001813582" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/ring_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/ring_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="lh_ring_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_ring_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0.0341 0 0.034"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_ring_distal" />
|
||||
<child
|
||||
link="lh_ring_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="lh_ring_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.00093749 0 0.028002"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_ring_proximal" />
|
||||
<child
|
||||
link="lh_ring_distal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.277039"
|
||||
effort="0"
|
||||
velocity="3.1" />
|
||||
<mimic
|
||||
joint="lh_ring_mcp_pitch"
|
||||
multiplier="0.923280528556446"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<link
|
||||
name="lh_pinky_proximal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.001776 -0.00011 0.012556"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.008553" />
|
||||
<inertia
|
||||
ixx="0.000000797543"
|
||||
ixy="-0.000000001275"
|
||||
ixz="0.000000138601"
|
||||
iyy="0.000000800499"
|
||||
iyz="0.000000000939"
|
||||
izz="0.000000357001" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/pinky_proximal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/pinky_proximal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_pinky_mcp_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="-0.00067852 0.029814 0.11424"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_hand_base_link" />
|
||||
<child
|
||||
link="lh_pinky_proximal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.23208487"
|
||||
effort="0.574"
|
||||
velocity="6.10" />
|
||||
<dynamics damping="0.01" friction="0.01"/>
|
||||
</joint>
|
||||
<link
|
||||
name="lh_pinky_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0134 0.002262 0.016992"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018408" />
|
||||
<inertia
|
||||
ixx="0.000002488712"
|
||||
ixy="0.000000008249"
|
||||
ixz="-0.000001523059"
|
||||
iyy="0.000003723754"
|
||||
iyz="0.000000014019"
|
||||
izz="0.000001813582" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/pinky_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/pinky_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="lh_pinky_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_pinky_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0.0341 0 0.034"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_pinky_distal" />
|
||||
<child
|
||||
link="lh_pinky_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="lh_pinky_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.00093749 0 0.028002"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_pinky_proximal" />
|
||||
<child
|
||||
link="lh_pinky_distal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.277039"
|
||||
effort="0"
|
||||
velocity="3.1" />
|
||||
<mimic
|
||||
joint="lh_pinky_mcp_pitch"
|
||||
multiplier="0.923280528556446"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<transmission name="trans_thumb_cmc_roll">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="lh_thumb_cmc_roll">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_thumb_cmc_roll">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0084</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_index_mcp_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="lh_index_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_index_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0082</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_middle_mcp_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="lh_middle_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_middle_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0082</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_ring_mcp_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="lh_ring_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_ring_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0082</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_pinky_mcp_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="lh_pinky_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_pinky_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0082</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_thumb_cmc_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="lh_thumb_cmc_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_thumb_cmc_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0144</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<mujoco>
|
||||
<compiler meshdir="meshes/" balanceinertia="true" discardvisual="false"/>
|
||||
<default>
|
||||
<joint armature="3.4707e-08" damping="5.0" frictionloss="0.5"/>
|
||||
</default>
|
||||
<equality>
|
||||
<!-- 四指DIP关节的mimic约束 - 统一使用1.125676 -->
|
||||
<!-- polycoef格式: c0 c1 c2 c3 c4 c5,关系: q1 = c0 + c1*q2 + c2*q2^2 + ... -->
|
||||
<!-- 对于 mimic: q_dip = 0 + 1.125676*q_mcp + 0*q_mcp^2 + ... -->
|
||||
<joint name="lh_couple_index" joint1="lh_index_dip" joint2="lh_index_mcp_pitch" polycoef="0 1.17646620703189 -0.184902818001199 0 0 0"/>
|
||||
<joint name="lh_couple_middle" joint1="lh_middle_dip" joint2="lh_middle_mcp_pitch" polycoef="0 1.17646620703189 -0.184902818001199 0 0 0"/>
|
||||
<joint name="lh_couple_ring" joint1="lh_ring_dip" joint2="lh_ring_mcp_pitch" polycoef="0 1.17646620703189 -0.184902818001199 0 0 0"/>
|
||||
<joint name="lh_couple_pinky" joint1="lh_pinky_dip" joint2="lh_pinky_mcp_pitch" polycoef="0 1.17646620703189 -0.184902818001199 0 0 0"/>
|
||||
<!-- 大拇指DIP关节的mimic约束 - 使用1.226495 -->
|
||||
<joint name="lh_couple_thumb" joint1="lh_thumb_dip" joint2="lh_thumb_cmc_pitch" polycoef="0 0.88524192477979 0 0 0 0"/>
|
||||
</equality>
|
||||
</mujoco>
|
||||
<gazebo reference="lh_hand_base_link">
|
||||
<mu1>1.5</mu1>
|
||||
<mu2>1.5</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="lh_thumb_distal">
|
||||
<mu1>1.5</mu1>
|
||||
<mu2>1.5</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="lh_index_distal">
|
||||
<mu1>1.1</mu1>
|
||||
<mu2>1.1</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="lh_middle_distal">
|
||||
<mu1>1.1</mu1>
|
||||
<mu2>1.1</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="lh_ring_distal">
|
||||
<mu1>1.1</mu1>
|
||||
<mu2>1.1</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="lh_pinky_distal">
|
||||
<mu1>1.1</mu1>
|
||||
<mu2>1.1</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
</robot>
|
||||
@@ -0,0 +1,956 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<robot
|
||||
name="linkerhand_l6v3.1_left">
|
||||
<!-- 手掌基座,作为整只手的根链接 -->
|
||||
<link
|
||||
name="lh_hand_base_link">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.00199 -0.00091 0.058381"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.4185" />
|
||||
<inertia
|
||||
ixx="0.0004998"
|
||||
ixy="0.000012853"
|
||||
ixz="-0.000008317"
|
||||
iyy="0.0003567"
|
||||
iyz="0.000010354"
|
||||
izz="0.0002301" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/hand_base_link.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/hand_base_link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="lh_thumb_metacarpals_base1">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0018663 -0.0066406 0.001533"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.01" />
|
||||
<inertia
|
||||
ixx="3.3724E-07"
|
||||
ixy="1.11E-07"
|
||||
ixz="-3.6039E-08"
|
||||
iyy="2.9457E-07"
|
||||
iyz="5.7181E-08"
|
||||
izz="4.903E-07" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_metacarpals_base1.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_metacarpals_base1.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_thumb_cmc_roll"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.0078133 -0.029898 0.026692"
|
||||
rpy="-0.034907 0 0" />
|
||||
<parent
|
||||
link="lh_hand_base_link" />
|
||||
<child
|
||||
link="lh_thumb_metacarpals_base1" />
|
||||
<axis
|
||||
xyz="0 0 1" />
|
||||
<limit
|
||||
lower="-0.087266"
|
||||
upper="1.256637"
|
||||
effort="0.588"
|
||||
velocity="5.95" />
|
||||
<dynamics damping="0.02" friction="0.05416667"/>
|
||||
</joint>
|
||||
<link
|
||||
name="lh_thumb_metacarpals">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.00769270907060086 0.0859662184722988 0.0235283086675235"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.065" />
|
||||
<inertia
|
||||
ixx="8.407E-06"
|
||||
ixy="-1.1338E-09"
|
||||
ixz="1.1136E-08"
|
||||
iyy="8.3899E-06"
|
||||
iyz="3.1171E-07"
|
||||
izz="2.0091E-06" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_metacarpals.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_metacarpals.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_thumb_cmc_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.0057298 -0.01332 0.0027456"
|
||||
rpy="1.1083 0 0.40143" />
|
||||
<parent
|
||||
link="lh_thumb_metacarpals_base1" />
|
||||
<child
|
||||
link="lh_thumb_metacarpals" />
|
||||
<axis
|
||||
xyz="-1 0 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="0.837758"
|
||||
effort="1.008"
|
||||
velocity="3.47" />
|
||||
<dynamics damping="0.02" friction="0.0375"/>
|
||||
</joint>
|
||||
<link
|
||||
name="lh_thumb_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.00769270907081708 0.0798662184721594 -0.0591716913325555"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018" />
|
||||
<inertia
|
||||
ixx="1.5546E-06"
|
||||
ixy="2.4423E-09"
|
||||
ixz="2.8147E-09"
|
||||
iyy="1.7108E-06"
|
||||
iyz="-7.2756E-08"
|
||||
izz="9.1709E-07" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="lh_thumb_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_thumb_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0 0.0035 0.026"
|
||||
rpy="0 0 1.5708" />
|
||||
<parent
|
||||
link="lh_thumb_distal" />
|
||||
<child
|
||||
link="lh_thumb_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="lh_thumb_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0 0.0061 0.0827"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_thumb_metacarpals" />
|
||||
<child
|
||||
link="lh_thumb_distal" />
|
||||
<axis
|
||||
xyz="-1 0 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="0.963287"
|
||||
effort="0"
|
||||
velocity="1.7" />
|
||||
<mimic
|
||||
joint="lh_thumb_cmc_pitch"
|
||||
multiplier="1.226495"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<link
|
||||
name="lh_index_proximal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.001776 -0.00011 0.012556"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.008553" />
|
||||
<inertia
|
||||
ixx="0.000000797543"
|
||||
ixy="-0.000000001275"
|
||||
ixz="0.000000138601"
|
||||
iyy="0.000000800499"
|
||||
iyz="0.000000000939"
|
||||
izz="0.000000357001" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/index_proximal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/index_proximal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_index_mcp_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="-0.00066821 -0.028967 0.11722"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_hand_base_link" />
|
||||
<child
|
||||
link="lh_index_proximal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.134464"
|
||||
effort="0.574"
|
||||
velocity="6.10" />
|
||||
<dynamics damping="0.01" friction="0.04"/>
|
||||
</joint>
|
||||
<link
|
||||
name="lh_index_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0134 0.002262 0.016992"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018408" />
|
||||
<inertia
|
||||
ixx="0.000002488712"
|
||||
ixy="0.000000008249"
|
||||
ixz="-0.000001523059"
|
||||
iyy="0.000003723754"
|
||||
iyz="0.000000014019"
|
||||
izz="0.000001813582" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/index_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/index_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="lh_index_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_index_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0.0341 0 0.034"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_index_distal" />
|
||||
<child
|
||||
link="lh_index_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="lh_index_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.00093749 0 0.028002"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_index_proximal" />
|
||||
<child
|
||||
link="lh_index_distal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.277039"
|
||||
effort="0"
|
||||
velocity="3.1" />
|
||||
<mimic
|
||||
joint="lh_index_mcp_pitch"
|
||||
multiplier="1.125676"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<link
|
||||
name="lh_middle_proximal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.001776 -0.00011 0.012556"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.008553" />
|
||||
<inertia
|
||||
ixx="0.000000797543"
|
||||
ixy="-0.000000001275"
|
||||
ixz="0.000000138601"
|
||||
iyy="0.000000800499"
|
||||
iyz="0.000000000939"
|
||||
izz="0.000000357001" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/middle_proximal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/middle_proximal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_middle_mcp_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="-0.00066821 -0.0089013 0.12322"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_hand_base_link" />
|
||||
<child
|
||||
link="lh_middle_proximal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.134464"
|
||||
effort="0.574"
|
||||
velocity="6.10" />
|
||||
<dynamics damping="0.01" friction="0.02708333"/>
|
||||
</joint>
|
||||
<link
|
||||
name="lh_middle_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0134 0.002262 0.016992"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018408" />
|
||||
<inertia
|
||||
ixx="0.000002488712"
|
||||
ixy="0.000000008249"
|
||||
ixz="-0.000001523059"
|
||||
iyy="0.000003723754"
|
||||
iyz="0.000000014019"
|
||||
izz="0.000001813582" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/middle_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/middle_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="lh_middle_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_middle_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0.0341 0 0.034"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_middle_distal" />
|
||||
<child
|
||||
link="lh_middle_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="lh_middle_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.00093749 0 0.028002"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_middle_proximal" />
|
||||
<child
|
||||
link="lh_middle_distal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.277039"
|
||||
effort="0"
|
||||
velocity="3.1" />
|
||||
<mimic
|
||||
joint="lh_middle_mcp_pitch"
|
||||
multiplier="1.125676"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<link
|
||||
name="lh_ring_proximal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.001776 -0.00011 0.012556"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.008553" />
|
||||
<inertia
|
||||
ixx="0.000000797543"
|
||||
ixy="-0.000000001275"
|
||||
ixz="0.000000138601"
|
||||
iyy="0.000000800499"
|
||||
iyz="0.000000000939"
|
||||
izz="0.000000357001" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/ring_proximal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/ring_proximal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_ring_mcp_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="-0.00067368 0.010717 0.11822"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_hand_base_link" />
|
||||
<child
|
||||
link="lh_ring_proximal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.134464"
|
||||
effort="0.574"
|
||||
velocity="6.10" />
|
||||
<dynamics damping="0.01" friction="0.02291667"/>
|
||||
</joint>
|
||||
<link
|
||||
name="lh_ring_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0134 0.002262 0.016992"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018408" />
|
||||
<inertia
|
||||
ixx="0.000002488712"
|
||||
ixy="0.000000008249"
|
||||
ixz="-0.000001523059"
|
||||
iyy="0.000003723754"
|
||||
iyz="0.000000014019"
|
||||
izz="0.000001813582" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/ring_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/ring_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="lh_ring_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_ring_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0.0341 0 0.034"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_ring_distal" />
|
||||
<child
|
||||
link="lh_ring_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="lh_ring_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.00093749 0 0.028002"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_ring_proximal" />
|
||||
<child
|
||||
link="lh_ring_distal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.277039"
|
||||
effort="0"
|
||||
velocity="3.1" />
|
||||
<mimic
|
||||
joint="lh_ring_mcp_pitch"
|
||||
multiplier="1.125676"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<link
|
||||
name="lh_pinky_proximal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.001776 -0.00011 0.012556"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.008553" />
|
||||
<inertia
|
||||
ixx="0.000000797543"
|
||||
ixy="-0.000000001275"
|
||||
ixz="0.000000138601"
|
||||
iyy="0.000000800499"
|
||||
iyz="0.000000000939"
|
||||
izz="0.000000357001" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/pinky_proximal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/pinky_proximal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_pinky_mcp_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="-0.00067852 0.029814 0.11424"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_hand_base_link" />
|
||||
<child
|
||||
link="lh_pinky_proximal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.134464"
|
||||
effort="0.574"
|
||||
velocity="6.10" />
|
||||
<dynamics damping="0.01" friction="0.01"/>
|
||||
</joint>
|
||||
<link
|
||||
name="lh_pinky_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0134 0.002262 0.016992"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018408" />
|
||||
<inertia
|
||||
ixx="0.000002488712"
|
||||
ixy="0.000000008249"
|
||||
ixz="-0.000001523059"
|
||||
iyy="0.000003723754"
|
||||
iyz="0.000000014019"
|
||||
izz="0.000001813582" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/pinky_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/pinky_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="lh_pinky_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="lh_pinky_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0.0341 0 0.034"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_pinky_distal" />
|
||||
<child
|
||||
link="lh_pinky_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="lh_pinky_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.00093749 0 0.028002"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="lh_pinky_proximal" />
|
||||
<child
|
||||
link="lh_pinky_distal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.277039"
|
||||
effort="0"
|
||||
velocity="3.1" />
|
||||
<mimic
|
||||
joint="lh_pinky_mcp_pitch"
|
||||
multiplier="1.125676"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<transmission name="trans_thumb_cmc_roll">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="lh_thumb_cmc_roll">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_thumb_cmc_roll">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0084</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_index_mcp_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="lh_index_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_index_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0082</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_middle_mcp_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="lh_middle_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_middle_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0082</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_ring_mcp_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="lh_ring_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_ring_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0082</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_pinky_mcp_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="lh_pinky_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_pinky_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0082</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_thumb_cmc_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="lh_thumb_cmc_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_thumb_cmc_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0144</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<mujoco>
|
||||
<compiler meshdir="meshes/" balanceinertia="true" discardvisual="false"/>
|
||||
<default>
|
||||
<joint armature="3.4707e-08" damping="5.0" frictionloss="0.5"/>
|
||||
</default>
|
||||
<equality>
|
||||
<!-- 四指DIP关节的mimic约束 - 统一使用1.125676 -->
|
||||
<!-- polycoef格式: c0 c1 c2 c3 c4 c5,关系: q1 = c0 + c1*q2 + c2*q2^2 + ... -->
|
||||
<!-- 对于 mimic: q_dip = 0 + 1.125676*q_mcp + 0*q_mcp^2 + ... -->
|
||||
<joint name="lh_couple_index" joint1="lh_index_dip" joint2="lh_index_mcp_pitch" polycoef="0 1.125676 0 0 0 0"/>
|
||||
<joint name="lh_couple_middle" joint1="lh_middle_dip" joint2="lh_middle_mcp_pitch" polycoef="0 1.125676 0 0 0 0"/>
|
||||
<joint name="lh_couple_ring" joint1="lh_ring_dip" joint2="lh_ring_mcp_pitch" polycoef="0 1.125676 0 0 0 0"/>
|
||||
<joint name="lh_couple_pinky" joint1="lh_pinky_dip" joint2="lh_pinky_mcp_pitch" polycoef="0 1.125676 0 0 0 0"/>
|
||||
<!-- 大拇指DIP关节的mimic约束 - 使用1.226495 -->
|
||||
<joint name="lh_couple_thumb" joint1="lh_thumb_dip" joint2="lh_thumb_cmc_pitch" polycoef="0 1.226495 0 0 0 0"/>
|
||||
</equality>
|
||||
</mujoco>
|
||||
<gazebo reference="lh_hand_base_link">
|
||||
<mu1>1.5</mu1>
|
||||
<mu2>1.5</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="lh_thumb_distal">
|
||||
<mu1>1.5</mu1>
|
||||
<mu2>1.5</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="lh_index_distal">
|
||||
<mu1>1.1</mu1>
|
||||
<mu2>1.1</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="lh_middle_distal">
|
||||
<mu1>1.1</mu1>
|
||||
<mu2>1.1</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="lh_ring_distal">
|
||||
<mu1>1.1</mu1>
|
||||
<mu2>1.1</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="lh_pinky_distal">
|
||||
<mu1>1.1</mu1>
|
||||
<mu2>1.1</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
</robot>
|
||||
@@ -0,0 +1,953 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<robot
|
||||
name="linkerhand_l6v3.1_right">
|
||||
<!-- 手掌基座,作为整只手的根链接 -->
|
||||
<link
|
||||
name="rh_hand_base_link">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0019900000 0.0009100000 0.0583810000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.4185" />
|
||||
<inertia
|
||||
ixx="0.0004998"
|
||||
ixy="-1.2853e-05"
|
||||
ixz="-8.317e-06"
|
||||
iyy="0.0003567"
|
||||
iyz="-1.0354e-05"
|
||||
izz="0.0002301" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/hand_base_link.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/hand_base_link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="rh_thumb_metacarpals_base1">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0018663000 0.0066406000 0.0015330000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.01" />
|
||||
<inertia
|
||||
ixx="3.3724e-07"
|
||||
ixy="-1.11e-07"
|
||||
ixz="-3.6039e-08"
|
||||
iyy="2.9457e-07"
|
||||
iyz="-5.7181e-08"
|
||||
izz="4.903e-07" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_metacarpals_base1.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_metacarpals_base1.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_thumb_cmc_roll"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.0078133 0.030812 0.025678"
|
||||
rpy="-0.0349069999759288 6.51804876738993e-09 0.00738597563689764" />
|
||||
<parent
|
||||
link="rh_hand_base_link" />
|
||||
<child
|
||||
link="rh_thumb_metacarpals_base1" />
|
||||
<axis
|
||||
xyz="0 0.034899 -0.99939" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.12177324"
|
||||
effort="0.588"
|
||||
velocity="5.95" />
|
||||
<dynamics damping="0.02" friction="0.05416667"/>
|
||||
</joint>
|
||||
<link
|
||||
name="rh_thumb_metacarpals">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0076927091 -0.0859662185 0.0235283087"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.065" />
|
||||
<inertia
|
||||
ixx="8.407e-06"
|
||||
ixy="1.1338e-09"
|
||||
ixz="1.1136e-08"
|
||||
iyy="8.3899e-06"
|
||||
iyz="-3.1171e-07"
|
||||
izz="2.0091e-06" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_metacarpals.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_metacarpals.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_thumb_cmc_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.0054997 0.013314 0.0032166"
|
||||
rpy="-0.98568644 0.0136370000000001 -0.40121" />
|
||||
<parent
|
||||
link="rh_thumb_metacarpals_base1" />
|
||||
<child
|
||||
link="rh_thumb_metacarpals" />
|
||||
<axis
|
||||
xyz="1 0 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="0.65673088"
|
||||
effort="1.008"
|
||||
velocity="3.47" />
|
||||
<dynamics damping="0.02" friction="0.0375"/>
|
||||
</joint>
|
||||
<link
|
||||
name="rh_thumb_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0076927091 -0.0798662185 -0.0591716913"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018" />
|
||||
<inertia
|
||||
ixx="1.5546e-06"
|
||||
ixy="-2.4423e-09"
|
||||
ixz="2.8147e-09"
|
||||
iyy="1.7108e-06"
|
||||
iyz="7.2756e-08"
|
||||
izz="9.1709e-07" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="rh_thumb_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_thumb_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0 -0.0035 0.026"
|
||||
rpy="0 0 -1.5708" />
|
||||
<parent
|
||||
link="rh_thumb_distal" />
|
||||
<child
|
||||
link="rh_thumb_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="rh_thumb_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0 -0.0061 0.0827"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="rh_thumb_metacarpals" />
|
||||
<child
|
||||
link="rh_thumb_distal" />
|
||||
<axis
|
||||
xyz="1 0 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="0.963287"
|
||||
effort="0"
|
||||
velocity="1.7" />
|
||||
<mimic
|
||||
joint="rh_thumb_cmc_pitch"
|
||||
multiplier="0.88524192477979"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<link
|
||||
name="rh_index_proximal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0017760000 0.0001100000 0.0125560000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.008553" />
|
||||
<inertia
|
||||
ixx="7.97543e-07"
|
||||
ixy="1.275e-09"
|
||||
ixz="1.38601e-07"
|
||||
iyy="8.00499e-07"
|
||||
iyz="-9.39e-10"
|
||||
izz="3.57001e-07" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/index_proximal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/index_proximal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_index_mcp_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="-0.00066821 0.033467 0.11622"
|
||||
rpy="-0.087266 0 0" />
|
||||
<parent
|
||||
link="rh_hand_base_link" />
|
||||
<child
|
||||
link="rh_index_proximal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.23208487"
|
||||
effort="0.574"
|
||||
velocity="6.10" />
|
||||
<dynamics damping="0.01" friction="0.04"/>
|
||||
</joint>
|
||||
<link
|
||||
name="rh_index_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0134000000 -0.0022620000 0.0169920000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018408" />
|
||||
<inertia
|
||||
ixx="2.488712e-06"
|
||||
ixy="-8.249e-09"
|
||||
ixz="-1.523059e-06"
|
||||
iyy="3.723754e-06"
|
||||
iyz="-1.4019e-08"
|
||||
izz="1.813582e-06" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/index_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/index_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="rh_index_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_index_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0.0341 0 0.034"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="rh_index_distal" />
|
||||
<child
|
||||
link="rh_index_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="rh_index_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.0009359 0 0.028002"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="rh_index_proximal" />
|
||||
<child
|
||||
link="rh_index_distal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.277039"
|
||||
effort="0"
|
||||
velocity="3.1" />
|
||||
<mimic
|
||||
joint="rh_index_mcp_pitch"
|
||||
multiplier="0.923280528556446"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<link
|
||||
name="rh_middle_proximal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0017760000 0.0001100000 0.0125560000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.008553" />
|
||||
<inertia
|
||||
ixx="7.97543e-07"
|
||||
ixy="1.275e-09"
|
||||
ixz="1.38601e-07"
|
||||
iyy="8.00499e-07"
|
||||
iyz="-9.39e-10"
|
||||
izz="3.57001e-07" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/middle_proximal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/middle_proximal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_middle_mcp_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="-0.00066821 0.0134013 0.12272"
|
||||
rpy="-0.034907 0 0" />
|
||||
<parent
|
||||
link="rh_hand_base_link" />
|
||||
<child
|
||||
link="rh_middle_proximal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.23208487"
|
||||
effort="0.574"
|
||||
velocity="6.10" />
|
||||
<dynamics damping="0.01" friction="0.02708333"/>
|
||||
</joint>
|
||||
<link
|
||||
name="rh_middle_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0134000000 -0.0022620000 0.0169920000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018408" />
|
||||
<inertia
|
||||
ixx="2.488712e-06"
|
||||
ixy="-8.249e-09"
|
||||
ixz="-1.523059e-06"
|
||||
iyy="3.723754e-06"
|
||||
iyz="-1.4019e-08"
|
||||
izz="1.813582e-06" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/middle_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/middle_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="rh_middle_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_middle_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0.0341 0 0.034"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="rh_middle_distal" />
|
||||
<child
|
||||
link="rh_middle_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="rh_middle_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.0009359 0 0.028002"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="rh_middle_proximal" />
|
||||
<child
|
||||
link="rh_middle_distal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.277039"
|
||||
effort="0"
|
||||
velocity="3.1" />
|
||||
<mimic
|
||||
joint="rh_middle_mcp_pitch"
|
||||
multiplier="0.923280528556446"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<link
|
||||
name="rh_ring_proximal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0017760000 0.0001100000 0.0125560000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.008553" />
|
||||
<inertia
|
||||
ixx="7.97543e-07"
|
||||
ixy="1.275e-09"
|
||||
ixz="1.38601e-07"
|
||||
iyy="8.00499e-07"
|
||||
iyz="-9.39e-10"
|
||||
izz="3.57001e-07" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/ring_proximal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/ring_proximal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_ring_mcp_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="-0.00067368 -0.006217 0.11872"
|
||||
rpy="0.017453 0 0" />
|
||||
<parent
|
||||
link="rh_hand_base_link" />
|
||||
<child
|
||||
link="rh_ring_proximal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.23208487"
|
||||
effort="0.574"
|
||||
velocity="6.10" />
|
||||
<dynamics damping="0.01" friction="0.02291667"/>
|
||||
</joint>
|
||||
<link
|
||||
name="rh_ring_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0134000000 -0.0022620000 0.0169920000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018408" />
|
||||
<inertia
|
||||
ixx="2.488712e-06"
|
||||
ixy="-8.249e-09"
|
||||
ixz="-1.523059e-06"
|
||||
iyy="3.723754e-06"
|
||||
iyz="-1.4019e-08"
|
||||
izz="1.813582e-06" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/ring_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/ring_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="rh_ring_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_ring_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0.0341 0 0.034"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="rh_ring_distal" />
|
||||
<child
|
||||
link="rh_ring_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="rh_ring_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.0009359 0 0.028002"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="rh_ring_proximal" />
|
||||
<child
|
||||
link="rh_ring_distal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.277039"
|
||||
effort="0"
|
||||
velocity="3.1" />
|
||||
<mimic
|
||||
joint="rh_ring_mcp_pitch"
|
||||
multiplier="0.923280528556446"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<link
|
||||
name="rh_pinky_proximal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0017760000 0.0001100000 0.0125560000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.008553" />
|
||||
<inertia
|
||||
ixx="7.97543e-07"
|
||||
ixy="1.275e-09"
|
||||
ixz="1.38601e-07"
|
||||
iyy="8.00499e-07"
|
||||
iyz="-9.39e-10"
|
||||
izz="3.57001e-07" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/pinky_proximal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/pinky_proximal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_pinky_mcp_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="-0.00067852 -0.025314 0.11474"
|
||||
rpy="0.05236 0 0" />
|
||||
<parent
|
||||
link="rh_hand_base_link" />
|
||||
<child
|
||||
link="rh_pinky_proximal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.23208487"
|
||||
effort="0.574"
|
||||
velocity="6.10" />
|
||||
<dynamics damping="0.01" friction="0.01"/>
|
||||
</joint>
|
||||
<link
|
||||
name="rh_pinky_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0134000000 -0.0022620000 0.0169920000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018408" />
|
||||
<inertia
|
||||
ixx="2.488712e-06"
|
||||
ixy="-8.249e-09"
|
||||
ixz="-1.523059e-06"
|
||||
iyy="3.723754e-06"
|
||||
iyz="-1.4019e-08"
|
||||
izz="1.813582e-06" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/pinky_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/pinky_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="rh_pinky_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_pinky_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0.0341 0 0.034"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="rh_pinky_distal" />
|
||||
<child
|
||||
link="rh_pinky_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="rh_pinky_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.0009359 0 0.028002"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="rh_pinky_proximal" />
|
||||
<child
|
||||
link="rh_pinky_distal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.277039"
|
||||
effort="0"
|
||||
velocity="3.1" />
|
||||
<mimic
|
||||
joint="rh_pinky_mcp_pitch"
|
||||
multiplier="0.923280528556446"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<transmission name="trans_thumb_cmc_roll">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="rh_thumb_cmc_roll">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_thumb_cmc_roll">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0084</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_index_mcp_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="rh_index_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_index_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0082</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_middle_mcp_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="rh_middle_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_middle_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0082</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_ring_mcp_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="rh_ring_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_ring_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0082</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_pinky_mcp_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="rh_pinky_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_pinky_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0082</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_thumb_cmc_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="rh_thumb_cmc_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_thumb_cmc_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0144</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<mujoco>
|
||||
<compiler meshdir="meshes/" balanceinertia="true" discardvisual="false"/>
|
||||
<default>
|
||||
<joint armature="3.4707e-08" damping="5.0" frictionloss="0.5"/>
|
||||
</default>
|
||||
<equality>
|
||||
<joint name="rh_couple_index" joint1="rh_index_dip" joint2="rh_index_mcp_pitch" polycoef="0 1.17646620703189 -0.184902818001199 0 0 0"/>
|
||||
<joint name="rh_couple_middle" joint1="rh_middle_dip" joint2="rh_middle_mcp_pitch" polycoef="0 1.17646620703189 -0.184902818001199 0 0 0"/>
|
||||
<joint name="rh_couple_ring" joint1="rh_ring_dip" joint2="rh_ring_mcp_pitch" polycoef="0 1.17646620703189 -0.184902818001199 0 0 0"/>
|
||||
<joint name="rh_couple_pinky" joint1="rh_pinky_dip" joint2="rh_pinky_mcp_pitch" polycoef="0 1.17646620703189 -0.184902818001199 0 0 0"/>
|
||||
<joint name="rh_couple_thumb" joint1="rh_thumb_dip" joint2="rh_thumb_cmc_pitch" polycoef="0 0.88524192477979 0 0 0 0"/>
|
||||
</equality>
|
||||
</mujoco>
|
||||
<gazebo reference="rh_hand_base_link">
|
||||
<mu1>1.5</mu1>
|
||||
<mu2>1.5</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="rh_thumb_distal">
|
||||
<mu1>1.5</mu1>
|
||||
<mu2>1.5</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="rh_index_distal">
|
||||
<mu1>1.1</mu1>
|
||||
<mu2>1.1</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="rh_middle_distal">
|
||||
<mu1>1.1</mu1>
|
||||
<mu2>1.1</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="rh_ring_distal">
|
||||
<mu1>1.1</mu1>
|
||||
<mu2>1.1</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="rh_pinky_distal">
|
||||
<mu1>1.1</mu1>
|
||||
<mu2>1.1</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
</robot>
|
||||
@@ -0,0 +1,953 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<robot
|
||||
name="linkerhand_l6v3.1_right">
|
||||
<!-- 手掌基座,作为整只手的根链接 -->
|
||||
<link
|
||||
name="rh_hand_base_link">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0019900000 0.0009100000 0.0583810000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.4185" />
|
||||
<inertia
|
||||
ixx="0.0004998"
|
||||
ixy="-1.2853e-05"
|
||||
ixz="-8.317e-06"
|
||||
iyy="0.0003567"
|
||||
iyz="-1.0354e-05"
|
||||
izz="0.0002301" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/hand_base_link.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/hand_base_link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="rh_thumb_metacarpals_base1">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0018663000 0.0066406000 0.0015330000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.01" />
|
||||
<inertia
|
||||
ixx="3.3724e-07"
|
||||
ixy="-1.11e-07"
|
||||
ixz="-3.6039e-08"
|
||||
iyy="2.9457e-07"
|
||||
iyz="-5.7181e-08"
|
||||
izz="4.903e-07" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_metacarpals_base1.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_metacarpals_base1.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_thumb_cmc_roll"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.0078133 0.030812 0.025678"
|
||||
rpy="-0.034907 0 0" />
|
||||
<parent
|
||||
link="rh_hand_base_link" />
|
||||
<child
|
||||
link="rh_thumb_metacarpals_base1" />
|
||||
<axis
|
||||
xyz="0 0.034899 -0.99939" />
|
||||
<limit
|
||||
lower="-0.087266"
|
||||
upper="1.256637"
|
||||
effort="0.588"
|
||||
velocity="5.95" />
|
||||
<dynamics damping="0.02" friction="0.05416667"/>
|
||||
</joint>
|
||||
<link
|
||||
name="rh_thumb_metacarpals">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0076927091 -0.0859662185 0.0235283087"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.065" />
|
||||
<inertia
|
||||
ixx="8.407e-06"
|
||||
ixy="1.1338e-09"
|
||||
ixz="1.1136e-08"
|
||||
iyy="8.3899e-06"
|
||||
iyz="-3.1171e-07"
|
||||
izz="2.0091e-06" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_metacarpals.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_metacarpals.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_thumb_cmc_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.0054997 0.013314 0.0032166"
|
||||
rpy="-1.0762 0.013637 -0.40121" />
|
||||
<parent
|
||||
link="rh_thumb_metacarpals_base1" />
|
||||
<child
|
||||
link="rh_thumb_metacarpals" />
|
||||
<axis
|
||||
xyz="1 0 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="0.837758"
|
||||
effort="1.008"
|
||||
velocity="3.47" />
|
||||
<dynamics damping="0.02" friction="0.0375"/>
|
||||
</joint>
|
||||
<link
|
||||
name="rh_thumb_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0076927091 -0.0798662185 -0.0591716913"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018" />
|
||||
<inertia
|
||||
ixx="1.5546e-06"
|
||||
ixy="-2.4423e-09"
|
||||
ixz="2.8147e-09"
|
||||
iyy="1.7108e-06"
|
||||
iyz="7.2756e-08"
|
||||
izz="9.1709e-07" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/thumb_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="rh_thumb_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_thumb_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0 -0.0035 0.026"
|
||||
rpy="0 0 -1.5708" />
|
||||
<parent
|
||||
link="rh_thumb_distal" />
|
||||
<child
|
||||
link="rh_thumb_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="rh_thumb_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0 -0.0061 0.0827"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="rh_thumb_metacarpals" />
|
||||
<child
|
||||
link="rh_thumb_distal" />
|
||||
<axis
|
||||
xyz="1 0 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="0.963287"
|
||||
effort="0"
|
||||
velocity="1.7" />
|
||||
<mimic
|
||||
joint="rh_thumb_cmc_pitch"
|
||||
multiplier="1.226495"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<link
|
||||
name="rh_index_proximal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0017760000 0.0001100000 0.0125560000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.008553" />
|
||||
<inertia
|
||||
ixx="7.97543e-07"
|
||||
ixy="1.275e-09"
|
||||
ixz="1.38601e-07"
|
||||
iyy="8.00499e-07"
|
||||
iyz="-9.39e-10"
|
||||
izz="3.57001e-07" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/index_proximal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/index_proximal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_index_mcp_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="-0.00066821 0.033467 0.11622"
|
||||
rpy="-0.087266 0 0" />
|
||||
<parent
|
||||
link="rh_hand_base_link" />
|
||||
<child
|
||||
link="rh_index_proximal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.134464"
|
||||
effort="0.574"
|
||||
velocity="6.10" />
|
||||
<dynamics damping="0.01" friction="0.04"/>
|
||||
</joint>
|
||||
<link
|
||||
name="rh_index_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0134000000 -0.0022620000 0.0169920000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018408" />
|
||||
<inertia
|
||||
ixx="2.488712e-06"
|
||||
ixy="-8.249e-09"
|
||||
ixz="-1.523059e-06"
|
||||
iyy="3.723754e-06"
|
||||
iyz="-1.4019e-08"
|
||||
izz="1.813582e-06" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/index_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/index_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="rh_index_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_index_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0.0341 0 0.034"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="rh_index_distal" />
|
||||
<child
|
||||
link="rh_index_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="rh_index_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.0009359 0 0.028002"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="rh_index_proximal" />
|
||||
<child
|
||||
link="rh_index_distal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.277039"
|
||||
effort="0"
|
||||
velocity="3.1" />
|
||||
<mimic
|
||||
joint="rh_index_mcp_pitch"
|
||||
multiplier="1.125676"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<link
|
||||
name="rh_middle_proximal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0017760000 0.0001100000 0.0125560000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.008553" />
|
||||
<inertia
|
||||
ixx="7.97543e-07"
|
||||
ixy="1.275e-09"
|
||||
ixz="1.38601e-07"
|
||||
iyy="8.00499e-07"
|
||||
iyz="-9.39e-10"
|
||||
izz="3.57001e-07" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/middle_proximal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/middle_proximal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_middle_mcp_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="-0.00066821 0.0134013 0.12272"
|
||||
rpy="-0.034907 0 0" />
|
||||
<parent
|
||||
link="rh_hand_base_link" />
|
||||
<child
|
||||
link="rh_middle_proximal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.134464"
|
||||
effort="0.574"
|
||||
velocity="6.10" />
|
||||
<dynamics damping="0.01" friction="0.02708333"/>
|
||||
</joint>
|
||||
<link
|
||||
name="rh_middle_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0134000000 -0.0022620000 0.0169920000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018408" />
|
||||
<inertia
|
||||
ixx="2.488712e-06"
|
||||
ixy="-8.249e-09"
|
||||
ixz="-1.523059e-06"
|
||||
iyy="3.723754e-06"
|
||||
iyz="-1.4019e-08"
|
||||
izz="1.813582e-06" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/middle_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/middle_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="rh_middle_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_middle_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0.0341 0 0.034"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="rh_middle_distal" />
|
||||
<child
|
||||
link="rh_middle_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="rh_middle_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.0009359 0 0.028002"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="rh_middle_proximal" />
|
||||
<child
|
||||
link="rh_middle_distal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.277039"
|
||||
effort="0"
|
||||
velocity="3.1" />
|
||||
<mimic
|
||||
joint="rh_middle_mcp_pitch"
|
||||
multiplier="1.125676"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<link
|
||||
name="rh_ring_proximal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0017760000 0.0001100000 0.0125560000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.008553" />
|
||||
<inertia
|
||||
ixx="7.97543e-07"
|
||||
ixy="1.275e-09"
|
||||
ixz="1.38601e-07"
|
||||
iyy="8.00499e-07"
|
||||
iyz="-9.39e-10"
|
||||
izz="3.57001e-07" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/ring_proximal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/ring_proximal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_ring_mcp_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="-0.00067368 -0.006217 0.11872"
|
||||
rpy="0.017453 0 0" />
|
||||
<parent
|
||||
link="rh_hand_base_link" />
|
||||
<child
|
||||
link="rh_ring_proximal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.134464"
|
||||
effort="0.574"
|
||||
velocity="6.10" />
|
||||
<dynamics damping="0.01" friction="0.02291667"/>
|
||||
</joint>
|
||||
<link
|
||||
name="rh_ring_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0134000000 -0.0022620000 0.0169920000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018408" />
|
||||
<inertia
|
||||
ixx="2.488712e-06"
|
||||
ixy="-8.249e-09"
|
||||
ixz="-1.523059e-06"
|
||||
iyy="3.723754e-06"
|
||||
iyz="-1.4019e-08"
|
||||
izz="1.813582e-06" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/ring_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/ring_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="rh_ring_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_ring_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0.0341 0 0.034"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="rh_ring_distal" />
|
||||
<child
|
||||
link="rh_ring_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="rh_ring_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.0009359 0 0.028002"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="rh_ring_proximal" />
|
||||
<child
|
||||
link="rh_ring_distal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.277039"
|
||||
effort="0"
|
||||
velocity="3.1" />
|
||||
<mimic
|
||||
joint="rh_ring_mcp_pitch"
|
||||
multiplier="1.125676"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<link
|
||||
name="rh_pinky_proximal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0017760000 0.0001100000 0.0125560000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.008553" />
|
||||
<inertia
|
||||
ixx="7.97543e-07"
|
||||
ixy="1.275e-09"
|
||||
ixz="1.38601e-07"
|
||||
iyy="8.00499e-07"
|
||||
iyz="-9.39e-10"
|
||||
izz="3.57001e-07" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/pinky_proximal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/pinky_proximal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_pinky_mcp_pitch"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="-0.00067852 -0.025314 0.11474"
|
||||
rpy="0.05236 0 0" />
|
||||
<parent
|
||||
link="rh_hand_base_link" />
|
||||
<child
|
||||
link="rh_pinky_proximal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.134464"
|
||||
effort="0.574"
|
||||
velocity="6.10" />
|
||||
<dynamics damping="0.01" friction="0.01"/>
|
||||
</joint>
|
||||
<link
|
||||
name="rh_pinky_distal">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0.0134000000 -0.0022620000 0.0169920000"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="0.018408" />
|
||||
<inertia
|
||||
ixx="2.488712e-06"
|
||||
ixy="-8.249e-09"
|
||||
ixz="-1.523059e-06"
|
||||
iyy="3.723754e-06"
|
||||
iyz="-1.4019e-08"
|
||||
izz="1.813582e-06" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/pinky_distal.STL" />
|
||||
</geometry>
|
||||
<material
|
||||
name="">
|
||||
<color
|
||||
rgba="0.796078431372549 0.823529411764706 0.937254901960784 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh
|
||||
filename="meshes/pinky_distal.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
<link
|
||||
name="rh_pinky_tip">
|
||||
<inertial>
|
||||
<origin
|
||||
xyz="0 0 0"
|
||||
rpy="0 0 0" />
|
||||
<mass
|
||||
value="1e-06" />
|
||||
<inertia
|
||||
ixx="1e-09"
|
||||
ixy="0"
|
||||
ixz="0"
|
||||
iyy="1e-09"
|
||||
iyz="0"
|
||||
izz="1e-09" />
|
||||
</inertial>
|
||||
</link>
|
||||
<joint
|
||||
name="rh_pinky_tip_fixed"
|
||||
type="fixed">
|
||||
<origin
|
||||
xyz="0.0341 0 0.034"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="rh_pinky_distal" />
|
||||
<child
|
||||
link="rh_pinky_tip" />
|
||||
</joint>
|
||||
<joint
|
||||
name="rh_pinky_dip"
|
||||
type="revolute">
|
||||
<origin
|
||||
xyz="0.0009359 0 0.028002"
|
||||
rpy="0 0 0" />
|
||||
<parent
|
||||
link="rh_pinky_proximal" />
|
||||
<child
|
||||
link="rh_pinky_distal" />
|
||||
<axis
|
||||
xyz="0 1 0" />
|
||||
<limit
|
||||
lower="0"
|
||||
upper="1.277039"
|
||||
effort="0"
|
||||
velocity="3.1" />
|
||||
<mimic
|
||||
joint="rh_pinky_mcp_pitch"
|
||||
multiplier="1.125676"
|
||||
offset="0" />
|
||||
</joint>
|
||||
<transmission name="trans_thumb_cmc_roll">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="rh_thumb_cmc_roll">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_thumb_cmc_roll">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0084</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_index_mcp_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="rh_index_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_index_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0082</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_middle_mcp_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="rh_middle_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_middle_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0082</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_ring_mcp_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="rh_ring_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_ring_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0082</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_pinky_mcp_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="rh_pinky_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_pinky_mcp_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0082</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<transmission name="trans_thumb_cmc_pitch">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="rh_thumb_cmc_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="motor_thumb_cmc_pitch">
|
||||
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||
<mechanicalReduction>0.0144</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
<mujoco>
|
||||
<compiler meshdir="meshes/" balanceinertia="true" discardvisual="false"/>
|
||||
<default>
|
||||
<joint armature="3.4707e-08" damping="5.0" frictionloss="0.5"/>
|
||||
</default>
|
||||
<equality>
|
||||
<joint name="rh_couple_index" joint1="rh_index_dip" joint2="rh_index_mcp_pitch" polycoef="0 1.125676 0 0 0 0"/>
|
||||
<joint name="rh_couple_middle" joint1="rh_middle_dip" joint2="rh_middle_mcp_pitch" polycoef="0 1.125676 0 0 0 0"/>
|
||||
<joint name="rh_couple_ring" joint1="rh_ring_dip" joint2="rh_ring_mcp_pitch" polycoef="0 1.125676 0 0 0 0"/>
|
||||
<joint name="rh_couple_pinky" joint1="rh_pinky_dip" joint2="rh_pinky_mcp_pitch" polycoef="0 1.125676 0 0 0 0"/>
|
||||
<joint name="rh_couple_thumb" joint1="rh_thumb_dip" joint2="rh_thumb_cmc_pitch" polycoef="0 1.226495 0 0 0 0"/>
|
||||
</equality>
|
||||
</mujoco>
|
||||
<gazebo reference="rh_hand_base_link">
|
||||
<mu1>1.5</mu1>
|
||||
<mu2>1.5</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="rh_thumb_distal">
|
||||
<mu1>1.5</mu1>
|
||||
<mu2>1.5</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="rh_index_distal">
|
||||
<mu1>1.1</mu1>
|
||||
<mu2>1.1</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="rh_middle_distal">
|
||||
<mu1>1.1</mu1>
|
||||
<mu2>1.1</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="rh_ring_distal">
|
||||
<mu1>1.1</mu1>
|
||||
<mu2>1.1</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
<gazebo reference="rh_pinky_distal">
|
||||
<mu1>1.1</mu1>
|
||||
<mu2>1.1</mu2>
|
||||
<selfCollide>true</selfCollide>
|
||||
</gazebo>
|
||||
</robot>
|
||||
Executable
+2
@@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env bash
|
||||
exec "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/scripts/run_l6_left_mujoco_plan.sh" "$@"
|
||||
Executable
+2
@@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env bash
|
||||
exec "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/scripts/run_l6_right_mujoco_plan.sh" "$@"
|
||||
Executable
+216
@@ -0,0 +1,216 @@
|
||||
#!/usr/bin/env bash
|
||||
# 同时开两个 MuJoCo:L6 v3.1 左手标定 vs 未标定 URDF
|
||||
#
|
||||
# 未标定: /home/lxqs/linkerhand-urdf/l6/left
|
||||
# 标定: /home/lxqs/Linkerbot_URDF/L6/LEFT(直接用 linker_hand_l6v31_left.xml,与单开相同)
|
||||
#
|
||||
# 两个窗口共用同一条 6 维 SDK 控制话题(/cb_left_hand_control_cmd)。
|
||||
#
|
||||
# 用法:
|
||||
# ./hands/L6/scripts/run_l6_left_dual_compare.sh
|
||||
# ./hands/L6/scripts/run_l6_left_dual_compare.sh --pd-drive
|
||||
# ./hands/L6/scripts/run_l6_left_dual_compare.sh --cmd-topic /cb_left_hand_control_cmd --speed 1.0
|
||||
set -eo pipefail
|
||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"
|
||||
cd "$ROOT"
|
||||
|
||||
URDF_UNCALIBRATED="$ROOT/hands/L6/reference/left_uncalibrated.urdf"
|
||||
URDF_CALIBRATED="$ROOT/hands/L6/reference/left_calibrated.urdf"
|
||||
PKG_L6="$ROOT/src/linkerhand-sim/linker_hand_mujoco_ros2/linker_hand_mujoco_ros2/urdf/L6/linker_hand_l6v31_left"
|
||||
CALIB_XML="$PKG_L6/linker_hand_l6v31_left.xml"
|
||||
STOCK_XML="$PKG_L6/linker_hand_l6v31_left_stock.xml"
|
||||
|
||||
if [[ ! -f "$URDF_UNCALIBRATED" ]]; then
|
||||
echo "[error] missing uncalibrated URDF: $URDF_UNCALIBRATED" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [[ ! -f "$URDF_CALIBRATED" ]]; then
|
||||
echo "[error] missing calibrated URDF: $URDF_CALIBRATED" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [[ ! -f "$CALIB_XML" ]]; then
|
||||
echo "[error] missing calibrated MJCF: $CALIB_XML" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set +u
|
||||
# shellcheck disable=SC1091
|
||||
source /opt/ros/jazzy/setup.bash
|
||||
if [[ -f "$ROOT/install/setup.bash" ]]; then
|
||||
# shellcheck disable=SC1091
|
||||
source "$ROOT/install/setup.bash"
|
||||
fi
|
||||
set -u
|
||||
|
||||
VENV_SITE="$ROOT/venv/lib/python3.12/site-packages"
|
||||
if [[ -d "$VENV_SITE" ]]; then
|
||||
export PYTHONPATH="$VENV_SITE${PYTHONPATH:+:$PYTHONPATH}"
|
||||
fi
|
||||
PKG_SRC="$ROOT/src/linkerhand-sim/linker_hand_mujoco_ros2"
|
||||
export PYTHONPATH="$PKG_SRC${PYTHONPATH:+:$PYTHONPATH}"
|
||||
|
||||
echo "[l6-left-dual] calibrated xml=$CALIB_XML (same as single-run)"
|
||||
echo "[l6-left-dual] build uncalibrated MJCF from $URDF_UNCALIBRATED"
|
||||
python3 - "$CALIB_XML" "$URDF_UNCALIBRATED" "$STOCK_XML" <<'PY'
|
||||
import math
|
||||
import re
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
template_xml = Path(sys.argv[1])
|
||||
urdf_uncal = Path(sys.argv[2])
|
||||
out_uncal = Path(sys.argv[3])
|
||||
|
||||
joint_body = {
|
||||
"lh_thumb_cmc_roll": "lh_thumb_metacarpals_base1",
|
||||
"lh_thumb_cmc_pitch": "lh_thumb_metacarpals",
|
||||
}
|
||||
MESHDIR_UNCAL = "/home/lxqs/linkerhand-urdf/l6/left/meshes"
|
||||
|
||||
|
||||
def parse_urdf_limits(path: Path) -> dict[str, dict]:
|
||||
text = path.read_text()
|
||||
joints: dict[str, dict] = {}
|
||||
for m in re.finditer(r"<joint\b([^>]*)>(.*?)</joint>", text, re.S):
|
||||
attrs, body = m.group(1), m.group(2)
|
||||
name_m = re.search(r'name="([^"]+)"', attrs)
|
||||
if not name_m:
|
||||
continue
|
||||
name = name_m.group(1)
|
||||
jtype_m = re.search(r'type="([^"]+)"', attrs)
|
||||
if not jtype_m or jtype_m.group(1) != "revolute":
|
||||
continue
|
||||
origin = re.search(r'<origin[^>]*xyz="([^"]+)"[^>]*rpy="([^"]+)"', body)
|
||||
lim = re.search(r'lower="([^"]+)"[^>]*upper="([^"]+)"', body)
|
||||
rpy = [float(x) for x in origin.group(2).split()] if origin else [0.0, 0.0, 0.0]
|
||||
joints[name] = {
|
||||
"lo": float(lim.group(1)),
|
||||
"hi": float(lim.group(2)),
|
||||
"rpy": rpy,
|
||||
}
|
||||
return joints
|
||||
|
||||
|
||||
def rpy_to_quat(r: float, p: float, y: float) -> tuple[float, float, float, float]:
|
||||
cr, sr = math.cos(r * 0.5), math.sin(r * 0.5)
|
||||
cp, sp = math.cos(p * 0.5), math.sin(p * 0.5)
|
||||
cy, sy = math.cos(y * 0.5), math.sin(y * 0.5)
|
||||
w = cr * cp * cy + sr * sp * sy
|
||||
x = sr * cp * cy - cr * sp * sy
|
||||
yq = cr * sp * cy + sr * cp * sy
|
||||
z = cr * cp * sy - sr * sp * cy
|
||||
return w, x, yq, z
|
||||
|
||||
|
||||
def apply_urdf_to_mjcf(template: str, urdf_path: Path, model_name: str) -> str:
|
||||
joints = parse_urdf_limits(urdf_path)
|
||||
xml = template.replace(
|
||||
'model="linkerhand_l6v31_left"',
|
||||
f'model="{model_name}"',
|
||||
1,
|
||||
)
|
||||
xml = re.sub(
|
||||
r'(<compiler[^>]*meshdir=")[^"]+(")',
|
||||
rf"\1{MESHDIR_UNCAL}\2",
|
||||
xml,
|
||||
count=1,
|
||||
)
|
||||
|
||||
for jname, info in joints.items():
|
||||
lo, hi = info["lo"], info["hi"]
|
||||
pat = rf'(<joint name="{re.escape(jname)}"[^>]*\srange=")([^"]+)(")'
|
||||
xml = re.sub(
|
||||
pat,
|
||||
lambda m, lo=lo, hi=hi: f"{m.group(1)}{lo} {hi}{m.group(3)}",
|
||||
xml,
|
||||
count=1,
|
||||
)
|
||||
r, p, y = info["rpy"]
|
||||
bname = joint_body.get(jname)
|
||||
if bname and abs(r) + abs(p) + abs(y) > 1e-9:
|
||||
w, x, yq, z = rpy_to_quat(r, p, y)
|
||||
quat = f"{w:.9f} {x:.9f} {yq:.9f} {z:.9f}"
|
||||
bpat = rf'(<body name="{re.escape(bname)}"[^>]*)(>)'
|
||||
|
||||
def add_quat(m, quat=quat):
|
||||
tag = m.group(1)
|
||||
if 'quat="' in tag:
|
||||
tag = re.sub(r'quat="[^"]+"', f'quat="{quat}"', tag, count=1)
|
||||
else:
|
||||
tag = tag + f' quat="{quat}"'
|
||||
return tag + m.group(2)
|
||||
|
||||
xml = re.sub(bpat, add_quat, xml, count=1)
|
||||
elif bname:
|
||||
bpat = rf'(<body name="{re.escape(bname)}"[^>]*)\squat="[^"]+"([^>]*>)'
|
||||
xml = re.sub(bpat, r"\1\2", xml, count=1)
|
||||
|
||||
act_map = {
|
||||
"lh_thumb_cmc_roll_pos": "lh_thumb_cmc_roll",
|
||||
"lh_thumb_cmc_pitch_pos": "lh_thumb_cmc_pitch",
|
||||
"lh_index_mcp_pitch_pos": "lh_index_mcp_pitch",
|
||||
"lh_middle_mcp_pitch_pos": "lh_middle_mcp_pitch",
|
||||
"lh_ring_mcp_pitch_pos": "lh_ring_mcp_pitch",
|
||||
"lh_pinky_mcp_pitch_pos": "lh_pinky_mcp_pitch",
|
||||
}
|
||||
for act, jname in act_map.items():
|
||||
lo, hi = joints[jname]["lo"], joints[jname]["hi"]
|
||||
pat = rf'(<position name="{act}"[^>]*\sctrlrange=")([^"]+)(")'
|
||||
xml = re.sub(
|
||||
pat,
|
||||
lambda m, lo=lo, hi=hi: f"{m.group(1)}{lo} {hi}{m.group(3)}",
|
||||
xml,
|
||||
count=1,
|
||||
)
|
||||
return xml
|
||||
|
||||
|
||||
import mujoco
|
||||
|
||||
out_uncal.write_text(
|
||||
apply_urdf_to_mjcf(template_xml.read_text(), urdf_uncal, "linkerhand_l6v31_left_uncalibrated")
|
||||
)
|
||||
mujoco.MjModel.from_xml_path(str(out_uncal))
|
||||
print(f"[l6-left-dual] uncalibrated URDF: {urdf_uncal}")
|
||||
print(f"[l6-left-dual] uncalibrated meshes: {MESHDIR_UNCAL}")
|
||||
print(f"[l6-left-dual] uncalibrated MJCF -> {out_uncal}")
|
||||
PY
|
||||
|
||||
echo "[l6-left-dual] calibrated URDF: $URDF_CALIBRATED"
|
||||
echo "[l6-left-dual] calibrated meshes: $PKG_L6/meshes (package, 标定安装)"
|
||||
|
||||
EXTRA=("$@")
|
||||
|
||||
cleanup() {
|
||||
[[ -n "${PID_UNCAL:-}" ]] && kill "$PID_UNCAL" 2>/dev/null || true
|
||||
[[ -n "${PID_CALIB:-}" ]] && kill "$PID_CALIB" 2>/dev/null || true
|
||||
}
|
||||
trap cleanup EXIT INT TERM
|
||||
|
||||
echo "[l6-left-dual] launch uncalibrated window"
|
||||
"$ROOT/hands/L6/scripts/run_l6_left_mujoco_plan.sh" \
|
||||
--xml "$STOCK_XML" \
|
||||
--mapping-urdf "$URDF_UNCALIBRATED" \
|
||||
--node-name l6_left_uncalibrated \
|
||||
--window-title "L6 left 未标定 (linkerhand-urdf)" \
|
||||
--cmd-topic /cb_left_hand_control_cmd \
|
||||
--sim-state-topic /sim/mujoco/l6/left/uncalibrated/joint_state \
|
||||
"${EXTRA[@]}" &
|
||||
PID_UNCAL=$!
|
||||
|
||||
sleep 1
|
||||
|
||||
echo "[l6-left-dual] launch calibrated window"
|
||||
"$ROOT/hands/L6/scripts/run_l6_left_mujoco_plan.sh" \
|
||||
--xml "$CALIB_XML" \
|
||||
--mapping-urdf "$URDF_CALIBRATED" \
|
||||
--node-name l6_left_calibrated \
|
||||
--window-title "L6 left 标定 (Linkerbot_URDF)" \
|
||||
--cmd-topic /cb_left_hand_control_cmd \
|
||||
--sim-state-topic /sim/mujoco/l6/left/calibrated/joint_state \
|
||||
"${EXTRA[@]}" &
|
||||
PID_CALIB=$!
|
||||
|
||||
echo "[l6-left-dual] both started. cmd topic: /cb_left_hand_control_cmd"
|
||||
echo "[l6-left-dual] Ctrl+C stops both."
|
||||
wait "$PID_UNCAL" "$PID_CALIB"
|
||||
Executable
+52
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env bash
|
||||
# MuJoCo L6 v3.1 左手仿真桥
|
||||
# URDF 来源: /home/lxqs/Linkerbot_URDF/L6/LEFT/linkerhand_l6v3.1_left_transferred_from_L6_RIGHT_001.urdf
|
||||
# 默认订阅 /l6/cb_left_hand_control_cmd(6 维 SDK 0~255)
|
||||
# 发布 /sim/mujoco/l6/left/joint_state
|
||||
#
|
||||
# 用法:
|
||||
# ./hands/L6/scripts/run_l6_left_mujoco_plan.sh
|
||||
# ./hands/L6/scripts/run_l6_left_mujoco_plan.sh --pd-drive
|
||||
set -eo pipefail
|
||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"
|
||||
cd "$ROOT"
|
||||
|
||||
set +u
|
||||
# shellcheck disable=SC1091
|
||||
source /opt/ros/jazzy/setup.bash
|
||||
if [[ -f "$ROOT/install/setup.bash" ]]; then
|
||||
# shellcheck disable=SC1091
|
||||
source "$ROOT/install/setup.bash"
|
||||
fi
|
||||
set -u
|
||||
|
||||
VENV_SITE="$ROOT/venv/lib/python3.12/site-packages"
|
||||
if [[ -d "$VENV_SITE" ]]; then
|
||||
export PYTHONPATH="$VENV_SITE${PYTHONPATH:+:$PYTHONPATH}"
|
||||
fi
|
||||
|
||||
PKG_SRC="$ROOT/src/linkerhand-sim/linker_hand_mujoco_ros2"
|
||||
export PYTHONPATH="$PKG_SRC${PYTHONPATH:+:$PYTHONPATH}"
|
||||
|
||||
XML="$PKG_SRC/linker_hand_mujoco_ros2/urdf/L6/linker_hand_l6v31_left/linker_hand_l6v31_left.xml"
|
||||
URDF="$PKG_SRC/linker_hand_mujoco_ros2/urdf/L6/linker_hand_l6v31_left/linkerhand_l6_left.urdf"
|
||||
if [[ ! -f "$XML" ]]; then
|
||||
echo "[error] missing L6 left MJCF: $XML" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[l6-left] urdf=$URDF"
|
||||
echo "[l6-left] xml=$XML"
|
||||
echo "[l6-left] cmd-topic=/l6/cb_left_hand_control_cmd"
|
||||
echo "[l6-left] sim-state=/sim/mujoco/l6/left/joint_state"
|
||||
echo "[l6-left] SDK 6ch: pitch, roll, index, middle, ring, pinky"
|
||||
|
||||
exec python3 -m linker_hand_mujoco_ros2.l6_left_plan_bridge \
|
||||
--xml "$XML" \
|
||||
--node-name l6_mujoco_plan_bridge_left \
|
||||
--window-title "L6 v3.1 left" \
|
||||
--cmd-topic /l6/cb_left_hand_control_cmd \
|
||||
--sim-state-topic /sim/mujoco/l6/left/joint_state \
|
||||
--nominal-topic /retarget/l6/left/joint_target_nominal \
|
||||
--mapping g20_urdf \
|
||||
"$@"
|
||||
+216
@@ -0,0 +1,216 @@
|
||||
#!/usr/bin/env bash
|
||||
# 同时开两个 MuJoCo:L6 v3.1 右手标定 vs 未标定 URDF
|
||||
#
|
||||
# 未标定: /home/lxqs/linkerhand-urdf/l6/right
|
||||
# 标定: /home/lxqs/Linkerbot_URDF/L6/RIGHT(直接用 linker_hand_l6v31_right.xml,与单开相同)
|
||||
#
|
||||
# 两个窗口共用同一条 6 维 SDK 控制话题(/cb_right_hand_control_cmd)。
|
||||
#
|
||||
# 用法:
|
||||
# ./hands/L6/scripts/run_l6_right_dual_compare.sh
|
||||
# ./hands/L6/scripts/run_l6_right_dual_compare.sh --pd-drive
|
||||
# ./hands/L6/scripts/run_l6_right_dual_compare.sh --cmd-topic /cb_right_hand_control_cmd --speed 1.0
|
||||
set -eo pipefail
|
||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"
|
||||
cd "$ROOT"
|
||||
|
||||
URDF_UNCALIBRATED="$ROOT/hands/L6/reference/right_uncalibrated.urdf"
|
||||
URDF_CALIBRATED="$ROOT/hands/L6/reference/right_calibrated.urdf"
|
||||
PKG_L6="$ROOT/src/linkerhand-sim/linker_hand_mujoco_ros2/linker_hand_mujoco_ros2/urdf/L6/linker_hand_l6v31_right"
|
||||
CALIB_XML="$PKG_L6/linker_hand_l6v31_right.xml"
|
||||
STOCK_XML="$PKG_L6/linker_hand_l6v31_right_stock.xml"
|
||||
|
||||
if [[ ! -f "$URDF_UNCALIBRATED" ]]; then
|
||||
echo "[error] missing uncalibrated URDF: $URDF_UNCALIBRATED" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [[ ! -f "$URDF_CALIBRATED" ]]; then
|
||||
echo "[error] missing calibrated URDF: $URDF_CALIBRATED" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [[ ! -f "$CALIB_XML" ]]; then
|
||||
echo "[error] missing calibrated MJCF: $CALIB_XML" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set +u
|
||||
# shellcheck disable=SC1091
|
||||
source /opt/ros/jazzy/setup.bash
|
||||
if [[ -f "$ROOT/install/setup.bash" ]]; then
|
||||
# shellcheck disable=SC1091
|
||||
source "$ROOT/install/setup.bash"
|
||||
fi
|
||||
set -u
|
||||
|
||||
VENV_SITE="$ROOT/venv/lib/python3.12/site-packages"
|
||||
if [[ -d "$VENV_SITE" ]]; then
|
||||
export PYTHONPATH="$VENV_SITE${PYTHONPATH:+:$PYTHONPATH}"
|
||||
fi
|
||||
PKG_SRC="$ROOT/src/linkerhand-sim/linker_hand_mujoco_ros2"
|
||||
export PYTHONPATH="$PKG_SRC${PYTHONPATH:+:$PYTHONPATH}"
|
||||
|
||||
echo "[l6-right-dual] calibrated xml=$CALIB_XML (same as single-run)"
|
||||
echo "[l6-right-dual] build uncalibrated MJCF from $URDF_UNCALIBRATED"
|
||||
python3 - "$CALIB_XML" "$URDF_UNCALIBRATED" "$STOCK_XML" <<'PY'
|
||||
import math
|
||||
import re
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
template_xml = Path(sys.argv[1])
|
||||
urdf_uncal = Path(sys.argv[2])
|
||||
out_uncal = Path(sys.argv[3])
|
||||
|
||||
joint_body = {
|
||||
"rh_thumb_cmc_roll": "rh_thumb_metacarpals_base1",
|
||||
"rh_thumb_cmc_pitch": "rh_thumb_metacarpals",
|
||||
}
|
||||
MESHDIR_UNCAL = "/home/lxqs/linkerhand-urdf/l6/right/meshes"
|
||||
|
||||
|
||||
def parse_urdf_limits(path: Path) -> dict[str, dict]:
|
||||
text = path.read_text()
|
||||
joints: dict[str, dict] = {}
|
||||
for m in re.finditer(r"<joint\b([^>]*)>(.*?)</joint>", text, re.S):
|
||||
attrs, body = m.group(1), m.group(2)
|
||||
name_m = re.search(r'name="([^"]+)"', attrs)
|
||||
if not name_m:
|
||||
continue
|
||||
name = name_m.group(1)
|
||||
jtype_m = re.search(r'type="([^"]+)"', attrs)
|
||||
if not jtype_m or jtype_m.group(1) != "revolute":
|
||||
continue
|
||||
origin = re.search(r'<origin[^>]*xyz="([^"]+)"[^>]*rpy="([^"]+)"', body)
|
||||
lim = re.search(r'lower="([^"]+)"[^>]*upper="([^"]+)"', body)
|
||||
rpy = [float(x) for x in origin.group(2).split()] if origin else [0.0, 0.0, 0.0]
|
||||
joints[name] = {
|
||||
"lo": float(lim.group(1)),
|
||||
"hi": float(lim.group(2)),
|
||||
"rpy": rpy,
|
||||
}
|
||||
return joints
|
||||
|
||||
|
||||
def rpy_to_quat(r: float, p: float, y: float) -> tuple[float, float, float, float]:
|
||||
cr, sr = math.cos(r * 0.5), math.sin(r * 0.5)
|
||||
cp, sp = math.cos(p * 0.5), math.sin(p * 0.5)
|
||||
cy, sy = math.cos(y * 0.5), math.sin(y * 0.5)
|
||||
w = cr * cp * cy + sr * sp * sy
|
||||
x = sr * cp * cy - cr * sp * sy
|
||||
yq = cr * sp * cy + sr * cp * sy
|
||||
z = cr * cp * sy - sr * sp * cy
|
||||
return w, x, yq, z
|
||||
|
||||
|
||||
def apply_urdf_to_mjcf(template: str, urdf_path: Path, model_name: str) -> str:
|
||||
joints = parse_urdf_limits(urdf_path)
|
||||
xml = template.replace(
|
||||
'model="linkerhand_l6v31_right"',
|
||||
f'model="{model_name}"',
|
||||
1,
|
||||
)
|
||||
xml = re.sub(
|
||||
r'(<compiler[^>]*meshdir=")[^"]+(")',
|
||||
rf"\1{MESHDIR_UNCAL}\2",
|
||||
xml,
|
||||
count=1,
|
||||
)
|
||||
|
||||
for jname, info in joints.items():
|
||||
lo, hi = info["lo"], info["hi"]
|
||||
pat = rf'(<joint name="{re.escape(jname)}"[^>]*\srange=")([^"]+)(")'
|
||||
xml = re.sub(
|
||||
pat,
|
||||
lambda m, lo=lo, hi=hi: f"{m.group(1)}{lo} {hi}{m.group(3)}",
|
||||
xml,
|
||||
count=1,
|
||||
)
|
||||
r, p, y = info["rpy"]
|
||||
bname = joint_body.get(jname)
|
||||
if bname and abs(r) + abs(p) + abs(y) > 1e-9:
|
||||
w, x, yq, z = rpy_to_quat(r, p, y)
|
||||
quat = f"{w:.9f} {x:.9f} {yq:.9f} {z:.9f}"
|
||||
bpat = rf'(<body name="{re.escape(bname)}"[^>]*)(>)'
|
||||
|
||||
def add_quat(m, quat=quat):
|
||||
tag = m.group(1)
|
||||
if 'quat="' in tag:
|
||||
tag = re.sub(r'quat="[^"]+"', f'quat="{quat}"', tag, count=1)
|
||||
else:
|
||||
tag = tag + f' quat="{quat}"'
|
||||
return tag + m.group(2)
|
||||
|
||||
xml = re.sub(bpat, add_quat, xml, count=1)
|
||||
elif bname:
|
||||
bpat = rf'(<body name="{re.escape(bname)}"[^>]*)\squat="[^"]+"([^>]*>)'
|
||||
xml = re.sub(bpat, r"\1\2", xml, count=1)
|
||||
|
||||
act_map = {
|
||||
"rh_thumb_cmc_roll_pos": "rh_thumb_cmc_roll",
|
||||
"rh_thumb_cmc_pitch_pos": "rh_thumb_cmc_pitch",
|
||||
"rh_index_mcp_pitch_pos": "rh_index_mcp_pitch",
|
||||
"rh_middle_mcp_pitch_pos": "rh_middle_mcp_pitch",
|
||||
"rh_ring_mcp_pitch_pos": "rh_ring_mcp_pitch",
|
||||
"rh_pinky_mcp_pitch_pos": "rh_pinky_mcp_pitch",
|
||||
}
|
||||
for act, jname in act_map.items():
|
||||
lo, hi = joints[jname]["lo"], joints[jname]["hi"]
|
||||
pat = rf'(<position name="{act}"[^>]*\sctrlrange=")([^"]+)(")'
|
||||
xml = re.sub(
|
||||
pat,
|
||||
lambda m, lo=lo, hi=hi: f"{m.group(1)}{lo} {hi}{m.group(3)}",
|
||||
xml,
|
||||
count=1,
|
||||
)
|
||||
return xml
|
||||
|
||||
|
||||
import mujoco
|
||||
|
||||
out_uncal.write_text(
|
||||
apply_urdf_to_mjcf(template_xml.read_text(), urdf_uncal, "linkerhand_l6v31_right_uncalibrated")
|
||||
)
|
||||
mujoco.MjModel.from_xml_path(str(out_uncal))
|
||||
print(f"[l6-right-dual] uncalibrated URDF: {urdf_uncal}")
|
||||
print(f"[l6-right-dual] uncalibrated meshes: {MESHDIR_UNCAL}")
|
||||
print(f"[l6-right-dual] uncalibrated MJCF -> {out_uncal}")
|
||||
PY
|
||||
|
||||
echo "[l6-right-dual] calibrated URDF: $URDF_CALIBRATED"
|
||||
echo "[l6-right-dual] calibrated meshes: $PKG_L6/meshes (package, 标定安装)"
|
||||
|
||||
EXTRA=("$@")
|
||||
|
||||
cleanup() {
|
||||
[[ -n "${PID_UNCAL:-}" ]] && kill "$PID_UNCAL" 2>/dev/null || true
|
||||
[[ -n "${PID_CALIB:-}" ]] && kill "$PID_CALIB" 2>/dev/null || true
|
||||
}
|
||||
trap cleanup EXIT INT TERM
|
||||
|
||||
echo "[l6-right-dual] launch uncalibrated window"
|
||||
"$ROOT/hands/L6/scripts/run_l6_right_mujoco_plan.sh" \
|
||||
--xml "$STOCK_XML" \
|
||||
--mapping-urdf "$URDF_UNCALIBRATED" \
|
||||
--node-name l6_right_uncalibrated \
|
||||
--window-title "L6 right 未标定 (linkerhand-urdf)" \
|
||||
--cmd-topic /cb_right_hand_control_cmd \
|
||||
--sim-state-topic /sim/mujoco/l6/right/uncalibrated/joint_state \
|
||||
"${EXTRA[@]}" &
|
||||
PID_UNCAL=$!
|
||||
|
||||
sleep 1
|
||||
|
||||
echo "[l6-right-dual] launch calibrated window"
|
||||
"$ROOT/hands/L6/scripts/run_l6_right_mujoco_plan.sh" \
|
||||
--xml "$CALIB_XML" \
|
||||
--mapping-urdf "$URDF_CALIBRATED" \
|
||||
--node-name l6_right_calibrated \
|
||||
--window-title "L6 right 标定 (Linkerbot_URDF)" \
|
||||
--cmd-topic /cb_right_hand_control_cmd \
|
||||
--sim-state-topic /sim/mujoco/l6/right/calibrated/joint_state \
|
||||
"${EXTRA[@]}" &
|
||||
PID_CALIB=$!
|
||||
|
||||
echo "[l6-right-dual] both started. cmd topic: /cb_right_hand_control_cmd"
|
||||
echo "[l6-right-dual] Ctrl+C stops both."
|
||||
wait "$PID_UNCAL" "$PID_CALIB"
|
||||
Executable
+52
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env bash
|
||||
# MuJoCo L6 v3.1 右手仿真桥
|
||||
# URDF 来源: /home/lxqs/下载/linkerhand_l6v3.1_right_partial_zero_calibrated_L6_RIGHT_001_20260902_142125.urdf
|
||||
# 默认订阅 /cb_right_hand_control_cmd(6 维 SDK 0~255)
|
||||
# 发布 /sim/mujoco/l6/right/joint_state
|
||||
#
|
||||
# 用法:
|
||||
# ./hands/L6/scripts/run_l6_right_mujoco_plan.sh
|
||||
# ./hands/L6/scripts/run_l6_right_mujoco_plan.sh --pd-drive
|
||||
set -eo pipefail
|
||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"
|
||||
cd "$ROOT"
|
||||
|
||||
set +u
|
||||
# shellcheck disable=SC1091
|
||||
source /opt/ros/jazzy/setup.bash
|
||||
if [[ -f "$ROOT/install/setup.bash" ]]; then
|
||||
# shellcheck disable=SC1091
|
||||
source "$ROOT/install/setup.bash"
|
||||
fi
|
||||
set -u
|
||||
|
||||
VENV_SITE="$ROOT/venv/lib/python3.12/site-packages"
|
||||
if [[ -d "$VENV_SITE" ]]; then
|
||||
export PYTHONPATH="$VENV_SITE${PYTHONPATH:+:$PYTHONPATH}"
|
||||
fi
|
||||
|
||||
PKG_SRC="$ROOT/src/linkerhand-sim/linker_hand_mujoco_ros2"
|
||||
export PYTHONPATH="$PKG_SRC${PYTHONPATH:+:$PYTHONPATH}"
|
||||
|
||||
XML="$PKG_SRC/linker_hand_mujoco_ros2/urdf/L6/linker_hand_l6v31_right/linker_hand_l6v31_right.xml"
|
||||
URDF="$PKG_SRC/linker_hand_mujoco_ros2/urdf/L6/linker_hand_l6v31_right/linkerhand_l6_right.urdf"
|
||||
if [[ ! -f "$XML" ]]; then
|
||||
echo "[error] missing L6 MJCF: $XML" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[l6-right] urdf=$URDF"
|
||||
echo "[l6-right] xml=$XML"
|
||||
echo "[l6-right] cmd-topic=/cb_right_hand_control_cmd"
|
||||
echo "[l6-right] sim-state=/sim/mujoco/l6/right/joint_state"
|
||||
echo "[l6-right] SDK 6ch: pitch, roll, index, middle, ring, pinky"
|
||||
|
||||
exec python3 -m linker_hand_mujoco_ros2.l6_plan_bridge \
|
||||
--xml "$XML" \
|
||||
--node-name l6_mujoco_plan_bridge_right \
|
||||
--window-title "L6 v3.1 right" \
|
||||
--cmd-topic /cb_right_hand_control_cmd \
|
||||
--sim-state-topic /sim/mujoco/l6/right/joint_state \
|
||||
--nominal-topic /retarget/l6/right/joint_target_nominal \
|
||||
--mapping g20_urdf \
|
||||
"$@"
|
||||
Reference in New Issue
Block a user