cmvr-es/model/xiaoyan_description/dual_arm_temp.xml

348 lines
16 KiB
XML
Raw Permalink Normal View History

2025-12-05 16:33:11 +08:00
<mujoco model="dual_arm">
<compiler angle="radian" meshdir="meshes/"/>
<!-- 全局默认:给所有关节一点阻尼和等效转子惯量 -->
<default>
<joint damping="10" armature="0.001"/>
</default>
<!-- 稳定一点的时间步和积分器 -->
<!-- <option timestep="0.001" integrator="RK4"/>-->
<asset>
<mesh name="PELVIS_S" file="PELVIS_S.STL"/>
<mesh name="L_SHOULDER_P_S" file="L_SHOULDER_P_S.STL"/>
<mesh name="L_SHOULDER_R_S" file="L_SHOULDER_R_S.STL"/>
<mesh name="L_SHOULDER_Y_S" file="L_SHOULDER_Y_S.STL"/>
<mesh name="L_ELBOW_R_S" file="L_ELBOW_R_S.STL"/>
<mesh name="L_WRIST_P_S" file="L_WRIST_P_S.STL"/>
<mesh name="L_WRIST_Y_S" file="L_WRIST_Y_S.STL"/>
<mesh name="L_WRIST_R_S" file="L_WRIST_R_S.STL"/>
<mesh name="R_SHOULDER_P_S" file="R_SHOULDER_P_S.STL"/>
<mesh name="R_SHOULDER_R_S" file="R_SHOULDER_R_S.STL"/>
<mesh name="R_SHOULDER_Y_S" file="R_SHOULDER_Y_S.STL"/>
<mesh name="R_ELBOW_R_S" file="R_ELBOW_R_S.STL"/>
<mesh name="R_WRIST_P_S" file="R_WRIST_P_S.STL"/>
<mesh name="R_WRIST_Y_S" file="R_WRIST_Y_S.STL"/>
<mesh name="R_WRIST_R_S" file="R_WRIST_R_S.STL"/>
<!-- 天空背景,可要可不要 -->
<texture name="skybox" type="skybox"
builtin="gradient"
rgb1="0.4 0.6 0.8"
rgb2="0 0 0"
width="512" height="512"/>
<!-- 蓝色方格地面纹理builtin="checker" -->
<texture name="grid"
type="2d"
builtin="checker"
width="512" height="512"
rgb1="0.2 0.3 0.4"
rgb2="0.1 0.2 0.3"
mark="cross"
markrgb="0.8 0.8 0.8"/>
<!-- 地面材质,绑定上面的纹理 -->
<material name="grid_floor"
texture="grid"
texrepeat="5 5"
reflectance="0.2"/>
</asset>
<worldbody>
<geom type="mesh" contype="0" conaffinity="0" group="1" density="0"
rgba="0.698039 0.698039 0.698039 1" mesh="PELVIS_S"/>
<geom type="mesh" rgba="0.698039 0.698039 0.698039 1" mesh="PELVIS_S"/>
<body name="L_SHOULDER_P_S" pos="0 0.0945 0.042">
<inertial pos="-0.00982259 0.0704593 1.15262e-06"
quat="0.706163 0.705933 -0.0386962 -0.0386741"
mass="0.880738"
diaginertia="0.000584874 0.000465648 0.000443849"/>
<joint name="L_SHOULDER_P" pos="0 0 0" axis="0 1 0"
range="-1.57 1.57" actuatorfrcrange="-120 120"/>
<geom type="mesh" contype="0" conaffinity="0" group="1" density="0"
rgba="0.898039 0.917647 0.929412 1" mesh="L_SHOULDER_P_S"/>
<geom type="mesh" rgba="0.898039 0.917647 0.929412 1"
mesh="L_SHOULDER_P_S"/>
<body name="L_SHOULDER_R_S" pos="0.035 0.0765 0">
<inertial pos="-0.0346025 0.0917393 -1.67085e-08"
quat="0.358778 0.609303 -0.358823 0.609323"
mass="0.594788"
diaginertia="0.000414771 0.000407636 0.000294296"/>
<joint name="L_SHOULDER_R" pos="0 0 0" axis="1 0 0"
range="-2 2" actuatorfrcrange="-120 120"/>
<geom type="mesh" contype="0" conaffinity="0" group="1" density="0"
rgba="0.890196 0.890196 0.913725 1" mesh="L_SHOULDER_R_S"/>
<geom type="mesh" rgba="0.890196 0.890196 0.913725 1"
mesh="L_SHOULDER_R_S"/>
<body name="L_SHOULDER_Y_S" pos="-0.035 0.1475 0">
<inertial pos="-0.00440977 0.086362 9.50749e-09"
quat="0.705001 0.704998 -0.054559 -0.0545441"
mass="0.563406"
diaginertia="0.000329815 0.000297341 0.000211019"/>
<joint name="L_SHOULDER_Y" pos="0 0 0" axis="0 1 0"
range="-2.18 0" actuatorfrcrange="-80 80"/>
<geom type="mesh" contype="0" conaffinity="0" group="1" density="0"
rgba="0.890196 0.890196 0.913725 1" mesh="L_SHOULDER_Y_S"/>
<geom type="mesh" rgba="0.890196 0.890196 0.913725 1"
mesh="L_SHOULDER_Y_S"/>
<body name="L_ELBOW_R_S" pos="0.034 0.1025 0">
<inertial pos="-0.0335624 0.06032 2.99656e-07"
quat="0.674756 0.674714 0.211333 0.211667"
mass="0.393572"
diaginertia="0.000189078 0.000181042 0.000139034"/>
<joint name="L_ELBOW_R" pos="0 0 0" axis="1 0 0"
range="-2.05 0" actuatorfrcrange="-50 50"/>
<geom type="mesh" contype="0" conaffinity="0" group="1" density="0"
rgba="0.890196 0.890196 0.913725 1" mesh="L_ELBOW_R_S"/>
<geom type="mesh" rgba="0.890196 0.890196 0.913725 1"
mesh="L_ELBOW_R_S"/>
<body name="L_WRIST_P_S" pos="-0.034 0.0965 0">
<inertial pos="-1.39659e-10 0.0675973 0.0192006"
quat="0.467537 0.530481 -0.530481 0.467537"
mass="0.442332"
diaginertia="0.000489142 0.000476754 9.72811e-05"/>
<joint name="L_WRIST_P" pos="0 0 0" axis="0 1 0"
range="0 3.14" actuatorfrcrange="-50 50"/>
<geom type="mesh" contype="0" conaffinity="0" group="1" density="0"
rgba="0.698039 0.698039 0.698039 1" mesh="L_WRIST_P_S"/>
<geom type="mesh" rgba="0.698039 0.698039 0.698039 1"
mesh="L_WRIST_P_S"/>
<body name="L_WRIST_Y_S" pos="0 0.1525 0.039">
<inertial pos="-0.00464136 -5.06427e-10 -0.0341254"
quat="0.298107 0.641196 0.641196 0.298107"
mass="0.235738"
diaginertia="6.00636e-05 5.8497e-05 4.579e-05"/>
<joint name="L_WRIST_Y" pos="0 0 0" axis="0 0 1"
range="-0.78 0.78" actuatorfrcrange="-50 50"/>
<geom type="mesh" contype="0" conaffinity="0" group="1" density="0"
rgba="0.647059 0.619608 0.588235 1" mesh="L_WRIST_Y_S"/>
<geom type="mesh" rgba="0.647059 0.619608 0.588235 1"
mesh="L_WRIST_Y_S"/>
<body name="L_WRIST_R_S" pos="0.0258 0 -0.039">
<inertial pos="-0.0161477 0.0955047 -0.00499392"
quat="0.595488 0.369507 -0.591676 0.39847"
mass="0.504894"
diaginertia="0.000280921 0.000188575 0.000178055"/>
<joint name="L_WRIST_R" pos="0 0 0" axis="1 0 0"
range="-1.57 0.26" actuatorfrcrange="-50 50"/>
<geom type="mesh" contype="0" conaffinity="0" group="1" density="0"
rgba="0.890196 0.890196 0.913725 1" mesh="L_WRIST_R_S"/>
<geom type="mesh" rgba="0.890196 0.890196 0.913725 1"
mesh="L_WRIST_R_S"/>
</body>
</body>
</body>
</body>
</body>
</body>
</body>
<body name="R_SHOULDER_P_S" pos="0 -0.0945 0.042">
<inertial pos="-0.00982259 -0.0704593 -1.1507e-06"
quat="0.706163 0.705933 0.0386962 0.0386741"
mass="0.880738"
diaginertia="0.000584874 0.000465648 0.000443849"/>
<joint name="R_SHOULDER_P" pos="0 0 0" axis="0 -1 0"
range="-1.57 1.57" actuatorfrcrange="-120 120"/>
<geom type="mesh" contype="0" conaffinity="0" group="1" density="0"
rgba="0.890196 0.890196 0.913725 1" mesh="R_SHOULDER_P_S"/>
<geom type="mesh" rgba="0.890196 0.890196 0.913725 1"
mesh="R_SHOULDER_P_S"/>
<body name="R_SHOULDER_R_S" pos="0.035 -0.0765 0">
<inertial pos="-0.0346025 -0.0917393 1.86281e-08"
quat="0.609323 0.358823 -0.609303 0.358778"
mass="0.594788"
diaginertia="0.000414771 0.000407636 0.000294296"/>
<joint name="R_SHOULDER_R" pos="0 0 0" axis="1 0 0"
range="-2 2" actuatorfrcrange="-120 120"/>
<geom type="mesh" contype="0" conaffinity="0" group="1" density="0"
rgba="0.890196 0.890196 0.913725 1" mesh="R_SHOULDER_R_S"/>
<geom type="mesh" rgba="0.890196 0.890196 0.913725 1"
mesh="R_SHOULDER_R_S"/>
<body name="R_SHOULDER_Y_S" pos="-0.035 -0.1475 0">
<inertial pos="-0.00440977 -0.086362 -7.58792e-09"
quat="0.705001 0.704998 0.054559 0.0545441"
mass="0.563406"
diaginertia="0.000329815 0.000297341 0.000211019"/>
<joint name="R_SHOULDER_Y" pos="0 0 0" axis="0 -1 0"
range="0 3.14" actuatorfrcrange="-80 80"/>
<geom type="mesh" contype="0" conaffinity="0" group="1" density="0"
rgba="0.890196 0.890196 0.913725 1" mesh="R_SHOULDER_Y_S"/>
<geom type="mesh" rgba="0.890196 0.890196 0.913725 1"
mesh="R_SHOULDER_Y_S"/>
<body name="R_ELBOW_R_S" pos="0.034 -0.1025 0">
<inertial pos="-0.0335624 -0.06032 -2.97736e-07"
quat="0.674756 0.674714 -0.211333 -0.211667"
mass="0.393572"
diaginertia="0.000189078 0.000181042 0.000139034"/>
<joint name="R_ELBOW_R" pos="0 0 0" axis="1 0 0"
range="0 2.05" actuatorfrcrange="-80 80"/>
<geom type="mesh" contype="0" conaffinity="0" group="1" density="0"
rgba="0.890196 0.890196 0.913725 1" mesh="R_ELBOW_R_S"/>
<geom type="mesh" rgba="0.890196 0.890196 0.913725 1"
mesh="R_ELBOW_R_S"/>
<body name="R_WRIST_P_S" pos="-0.034 -0.0965 0">
<inertial pos="-1.39657e-10 -0.0675973 0.0192006"
quat="0.530481 0.467537 -0.467537 0.530481"
mass="0.442332"
diaginertia="0.000489142 0.000476754 9.72811e-05"/>
<joint name="R_WRIST_P" pos="0 0 0" axis="0 -1 0"
range="-3.14 0" actuatorfrcrange="-50 50"/>
<geom type="mesh" contype="0" conaffinity="0" group="1" density="0"
rgba="0.647059 0.619608 0.588235 1" mesh="R_WRIST_P_S"/>
<geom type="mesh" rgba="0.647059 0.619608 0.588235 1"
mesh="R_WRIST_P_S"/>
<body name="R_WRIST_Y_S" pos="0 -0.1525 0.039">
<inertial pos="-0.00464136 -5.06426e-10 -0.0341254"
quat="0.298107 0.641196 0.641196 0.298107"
mass="0.235738"
diaginertia="6.00636e-05 5.8497e-05 4.579e-05"/>
<joint name="R_WRIST_Y" pos="0 0 0" axis="0 0 1"
range="-0.78 0.78" actuatorfrcrange="-50 50"/>
<geom type="mesh" contype="0" conaffinity="0" group="1" density="0"
rgba="0.647059 0.619608 0.588235 1" mesh="R_WRIST_Y_S"/>
<geom type="mesh" rgba="0.647059 0.619608 0.588235 1"
mesh="R_WRIST_Y_S"/>
<body name="R_WRIST_R_S" pos="0.03 0 -0.039">
<inertial pos="-0.0201642 -0.11075 -0.00598955"
quat="0.483404 0.529786 -0.463203 0.520663"
mass="0.504366"
diaginertia="0.00027189 0.000186086 0.000130629"/>
<joint name="R_WRIST_R" pos="0 0 0" axis="1 0 0"
range="-0.26 1.57" actuatorfrcrange="-50 50"/>
<geom type="mesh" contype="0" conaffinity="0" group="1" density="0"
rgba="0.890196 0.890196 0.913725 1" mesh="R_WRIST_R_S"/>
<geom type="mesh" rgba="0.890196 0.890196 0.913725 1"
mesh="R_WRIST_R_S"/>
<!-- 小标记点 -->
<geom size="0.004"
pos="0.00684256 -0.284077 0.00801525"
contype="0" conaffinity="0" group="1"
density="0" rgba="0 1 1 1"/>
<geom size="0.005"
pos="0.00684256 -0.284077 0.00801525"
rgba="0 1 1 1"/>
<geom size="0.004"
pos="-0.01212 -0.17655 0.07506"
quat="3.17467e-11 -3.17467e-11 -0.707107 0.707107"
contype="0" conaffinity="0" group="1"
density="0" rgba="0 1 0 1"/>
<geom size="0.005"
pos="-0.01212 -0.17655 0.07506"
quat="3.17467e-11 -3.17467e-11 -0.707107 0.707107"
rgba="0 1 0 1"/>
</body>
</body>
</body>
</body>
</body>
</body>
</body>
<light name="top_light"
mode="track"
directional="true"
diffuse="1 1 1"
specular="0.3 0.3 0.3"
pos="0 0 3"
dir="0 0 -1"/>
<geom name="floor"
type="plane"
pos="0 0 0"
size="0 0 0.05"
material="grid_floor"
condim="3"
friction="1 0.005 0.0001"/>
</worldbody>
<!-- <actuator>-->
<!-- &lt;!&ndash; 左臂力矩控制ctrl = 关节力矩 (Nm) &ndash;&gt;-->
<!-- <motor name="L_SHOULDER_P_torque" joint="L_SHOULDER_P"-->
<!-- gear="1" ctrlrange="-200 200"/>-->
<!-- <motor name="L_SHOULDER_R_torque" joint="L_SHOULDER_R"-->
<!-- gear="1" ctrlrange="-200 200"/>-->
<!-- <motor name="L_SHOULDER_Y_torque" joint="L_SHOULDER_Y"-->
<!-- gear="1" ctrlrange="-150 150"/>-->
<!-- <motor name="L_ELBOW_R_torque" joint="L_ELBOW_R"-->
<!-- gear="1" ctrlrange="-120 120"/>-->
<!-- <motor name="L_WRIST_P_torque" joint="L_WRIST_P"-->
<!-- gear="1" ctrlrange="-80 80"/>-->
<!-- <motor name="L_WRIST_Y_torque" joint="L_WRIST_Y"-->
<!-- gear="1" ctrlrange="-80 80"/>-->
<!-- <motor name="L_WRIST_R_torque" joint="L_WRIST_R"-->
<!-- gear="1" ctrlrange="-80 80"/>-->
<!-- &lt;!&ndash; 右臂:力矩控制 &ndash;&gt;-->
<!-- <motor name="R_SHOULDER_P_torque" joint="R_SHOULDER_P"-->
<!-- gear="1" ctrlrange="-200 200"/>-->
<!-- <motor name="R_SHOULDER_R_torque" joint="R_SHOULDER_R"-->
<!-- gear="1" ctrlrange="-200 200"/>-->
<!-- <motor name="R_SHOULDER_Y_torque" joint="R_SHOULDER_Y"-->
<!-- gear="1" ctrlrange="-150 150"/>-->
<!-- <motor name="R_ELBOW_R_torque" joint="R_ELBOW_R"-->
<!-- gear="1" ctrlrange="-120 120"/>-->
<!-- <motor name="R_WRIST_P_torque" joint="R_WRIST_P"-->
<!-- gear="1" ctrlrange="-80 80"/>-->
<!-- <motor name="R_WRIST_Y_torque" joint="R_WRIST_Y"-->
<!-- gear="1" ctrlrange="-80 80"/>-->
<!-- <motor name="R_WRIST_R_torque" joint="R_WRIST_R"-->
<!-- gear="1" ctrlrange="-80 80"/>-->
<!-- </actuator>-->
<actuator>
<!-- 左臂位置控制ctrl = 关节目标角度 (rad) -->
<position name="L_SHOULDER_P_pos" joint="L_SHOULDER_P"
kp="40" ctrlrange="-1.57 1.57"/>
<position name="L_SHOULDER_R_pos" joint="L_SHOULDER_R"
kp="40" ctrlrange="-1.57 1.57"/>
<position name="L_SHOULDER_Y_pos" joint="L_SHOULDER_Y"
kp="30" ctrlrange="-1.57 1.57"/>
<position name="L_ELBOW_R_pos" joint="L_ELBOW_R"
kp="30" ctrlrange="-2.09 0.0"/>
<position name="L_WRIST_P_pos" joint="L_WRIST_P"
kp="20" ctrlrange="-1.57 1.57"/>
<position name="L_WRIST_Y_pos" joint="L_WRIST_Y"
kp="20" ctrlrange="-1.57 1.57"/>
<position name="L_WRIST_R_pos" joint="L_WRIST_R"
kp="20" ctrlrange="-1.57 1.57"/>
<!-- 右臂:位置控制 -->
<position name="R_SHOULDER_P_pos" joint="R_SHOULDER_P"
kp="40" ctrlrange="-1.57 1.57"/>
<position name="R_SHOULDER_R_pos" joint="R_SHOULDER_R"
kp="40" ctrlrange="-1.57 1.57"/>
<position name="R_SHOULDER_Y_pos" joint="R_SHOULDER_Y"
kp="30" ctrlrange="-1.57 1.57"/>
<position name="R_ELBOW_R_pos" joint="R_ELBOW_R"
kp="40" ctrlrange="0 2.05"/>
<position name="R_WRIST_P_pos" joint="R_WRIST_P"
kp="20" ctrlrange="-1.57 1.57"/>
<position name="R_WRIST_Y_pos" joint="R_WRIST_Y"
kp="20" ctrlrange="-1.57 1.57"/>
<position name="R_WRIST_R_pos" joint="R_WRIST_R"
kp="20" ctrlrange="-1.57 1.57"/>
</actuator>
</mujoco>