feat: huoyi M20 smooth/bridge training and stability docs

Current code snapshot: smooth/bridge task configs, smooth random terrain,
roll/pitch stability rewards, M20 URDF updates, eval profile and stability
training documentation.
This commit is contained in:
syfffffjj
2026-11-02 16:41:07 +08:00
commit 07027e8fde
91 changed files with 13047 additions and 0 deletions
@@ -0,0 +1,292 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Solenopsis fire-ant, generated from the 2026 SolidWorks STEP assembly.
Units: metre, kilogram, radian, kg*m^2.
Coordinate conversion: (x,y,z)_URDF = (z,x,y)_SolidWorks.
All inertia tensors are about each rigid body's own centre of mass.
Visual geometry uses the STEP-derived STL files in
../meshes_solenopsis_visual at a millimetre-to-metre scale of 0.001.
Collision geometry remains primitive boxes and cylinders.
The 0.127 kg gap between the supplied rigid-group masses and the supplied
whole-robot mass is lumped into base_link at the reported base COM. Thus
base mass is 17.274 + 0.127 = 17.401 kg, while its reported COM and inertia
tensor are unchanged. No spatial distribution is invented for that mass.
-->
<robot name="Solenopsis_fire_ant">
<link name="base_link">
<inertial>
<origin xyz="-0.000072 0.000171 0.076892" rpy="0 0 0"/>
<mass value="15.84"/>
<inertia ixx="0.121947189" ixy="-0.000666758" ixz="0.000143011"
iyy="0.331070194" iyz="0.000150561" izz="0.410284855"/>
</inertial>
<visual>
<geometry>
<mesh filename="../meshes_solenopsis_visual/base_link.STL" scale="0.001 0.001 0.001"/>
</geometry>
</visual>
<collision>
<origin xyz="0 0 0.0788" rpy="0 0 0"/>
<geometry>
<box size="0.706 0.310 0.1714"/>
</geometry>
</collision>
</link>
<!-- Front-left. Left-link tensors use the exact proper rotation
(x,y,z)_link = (-z,-x,y)_SolidWorks-module. -->
<link name="fl_knee">
<inertial>
<origin xyz="-0.000040 -0.001088 -0.158988" rpy="0 0 0"/>
<mass value="0.885"/>
<inertia ixx="0.013089177" ixy="0.000002705" ixz="0.000004495"
iyy="0.013409459" iyz="-0.000242701" izz="0.000443796"/>
</inertial>
<visual>
<geometry>
<mesh filename="../meshes_solenopsis_visual/fl_knee.STL" scale="0.001 0.001 0.001"/>
</geometry>
</visual>
<collision>
<origin xyz="0 -0.0005 -0.15575" rpy="0 0 0"/>
<geometry>
<box size="0.088 0.031 0.3765"/>
</geometry>
</collision>
<collision>
<origin xyz="0 -0.02625 0" rpy="1.570796326795 0 0"/>
<geometry>
<cylinder length="0.0205" radius="0.01995"/>
</geometry>
</collision>
</link>
<joint name="fl_knee_joint" type="revolute">
<origin xyz="0.117577164466 0.167 0.070" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="fl_knee"/>
<axis xyz="0 -1 0"/>
<limit lower="-2.792" upper="2.809" effort="75.0" velocity="17.8024"/>
</joint>
<link name="fl_wheel">
<inertial>
<origin xyz="-0.000002 0.064 -0.000009" rpy="0 0 0"/>
<mass value="1.340"/>
<inertia ixx="0.004085980" ixy="0.000000178" ixz="-0.000000095"
iyy="0.007221854" iyz="0.000000526" izz="0.004086529"/>
</inertial>
<visual>
<geometry>
<mesh filename="../meshes_solenopsis_visual/fl_wheel.STL" scale="0.001122449 0.001428571 0.001122449"/>
</geometry>
</visual>
<collision>
<origin xyz="0 0.064 0" rpy="1.570796326795 0 0"/>
<geometry>
<cylinder length="0.12" radius="0.11"/>
</geometry>
</collision>
</link>
<joint name="fl_wheel_joint" type="continuous">
<origin xyz="0 0 -0.300" rpy="0 0 0"/>
<parent link="fl_knee"/>
<child link="fl_wheel"/>
<axis xyz="0 -1 0"/>
<limit effort="28.68" velocity="109.956"/>
</joint>
<!-- Front-right. Right-link tensors use the exact proper rotation
(x,y,z)_link = (z,x,y)_SolidWorks-module. -->
<link name="fr_knee">
<inertial>
<origin xyz="0.000040 0.001088 -0.158988" rpy="0 0 0"/>
<mass value="0.885"/>
<inertia ixx="0.013089177" ixy="0.000002705" ixz="-0.000004495"
iyy="0.013409459" iyz="0.000242701" izz="0.000443796"/>
</inertial>
<visual>
<geometry>
<mesh filename="../meshes_solenopsis_visual/fr_knee.STL" scale="0.001 0.001 0.001"/>
</geometry>
</visual>
<collision>
<origin xyz="0 0.0005 -0.15575" rpy="0 0 0"/>
<geometry>
<box size="0.088 0.031 0.3765"/>
</geometry>
</collision>
<collision>
<origin xyz="0 0.02625 0" rpy="1.570796326795 0 0"/>
<geometry>
<cylinder length="0.0205" radius="0.01995"/>
</geometry>
</collision>
</link>
<joint name="fr_knee_joint" type="revolute">
<origin xyz="0.117577164466 -0.167 0.070" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="fr_knee"/>
<axis xyz="0 -1 0"/>
<limit lower="-2.792" upper="2.809" effort="75.0" velocity="17.8024"/>
</joint>
<link name="fr_wheel">
<inertial>
<origin xyz="0.000002 -0.064 -0.000009" rpy="0 0 0"/>
<mass value="1.340"/>
<inertia ixx="0.004085980" ixy="0.000000178" ixz="0.000000095"
iyy="0.007221854" iyz="-0.000000526" izz="0.004086529"/>
</inertial>
<visual>
<geometry>
<mesh filename="../meshes_solenopsis_visual/fr_wheel.STL" scale="0.001122449 0.001428571 0.001122449"/>
</geometry>
</visual>
<collision>
<origin xyz="0 -0.064 0" rpy="1.570796326795 0 0"/>
<geometry>
<cylinder length="0.12" radius="0.11"/>
</geometry>
</collision>
</link>
<joint name="fr_wheel_joint" type="continuous">
<origin xyz="0 0 -0.300" rpy="0 0 0"/>
<parent link="fr_knee"/>
<child link="fr_wheel"/>
<axis xyz="0 -1 0"/>
<limit effort="28.68" velocity="109.956"/>
</joint>
<link name="hl_knee">
<inertial>
<origin xyz="-0.000040 -0.001088 -0.158988" rpy="0 0 0"/>
<mass value="0.885"/>
<inertia ixx="0.013089177" ixy="0.000002705" ixz="0.000004495"
iyy="0.013409459" iyz="-0.000242701" izz="0.000443796"/>
</inertial>
<visual>
<geometry>
<mesh filename="../meshes_solenopsis_visual/hl_knee.STL" scale="0.001 0.001 0.001"/>
</geometry>
</visual>
<collision>
<origin xyz="0 -0.0005 -0.15575" rpy="0 0 0"/>
<geometry>
<box size="0.088 0.031 0.3765"/>
</geometry>
</collision>
<collision>
<origin xyz="0 -0.02625 0" rpy="1.570796326795 0 0"/>
<geometry>
<cylinder length="0.0205" radius="0.01995"/>
</geometry>
</collision>
</link>
<joint name="hl_knee_joint" type="revolute">
<origin xyz="-0.117577164466 0.167 0.070" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="hl_knee"/>
<axis xyz="0 -1 0"/>
<limit lower="-2.809" upper="2.792" effort="75.0" velocity="17.8024"/>
</joint>
<link name="hl_wheel">
<inertial>
<origin xyz="-0.000002 0.064 -0.000009" rpy="0 0 0"/>
<mass value="1.340"/>
<inertia ixx="0.004085980" ixy="0.000000178" ixz="-0.000000095"
iyy="0.007221854" iyz="0.000000526" izz="0.004086529"/>
</inertial>
<visual>
<geometry>
<mesh filename="../meshes_solenopsis_visual/hl_wheel.STL" scale="0.001122449 0.001428571 0.001122449"/>
</geometry>
</visual>
<collision>
<origin xyz="0 0.064 0" rpy="1.570796326795 0 0"/>
<geometry>
<cylinder length="0.12" radius="0.11"/>
</geometry>
</collision>
</link>
<joint name="hl_wheel_joint" type="continuous">
<origin xyz="0 0 -0.300" rpy="0 0 0"/>
<parent link="hl_knee"/>
<child link="hl_wheel"/>
<axis xyz="0 -1 0"/>
<limit effort="28.68" velocity="109.956"/>
</joint>
<link name="hr_knee">
<inertial>
<origin xyz="0.000040 0.001088 -0.158988" rpy="0 0 0"/>
<mass value="0.885"/>
<inertia ixx="0.013089177" ixy="0.000002705" ixz="-0.000004495"
iyy="0.013409459" iyz="0.000242701" izz="0.000443796"/>
</inertial>
<visual>
<geometry>
<mesh filename="../meshes_solenopsis_visual/hr_knee.STL" scale="0.001 0.001 0.001"/>
</geometry>
</visual>
<collision>
<origin xyz="0 0.0005 -0.15575" rpy="0 0 0"/>
<geometry>
<box size="0.088 0.031 0.3765"/>
</geometry>
</collision>
<collision>
<origin xyz="0 0.02625 0" rpy="1.570796326795 0 0"/>
<geometry>
<cylinder length="0.0205" radius="0.01995"/>
</geometry>
</collision>
</link>
<joint name="hr_knee_joint" type="revolute">
<origin xyz="-0.117577164466 -0.167 0.070" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="hr_knee"/>
<axis xyz="0 -1 0"/>
<limit lower="-2.809" upper="2.792" effort="75.0" velocity="17.8024"/>
</joint>
<link name="hr_wheel">
<inertial>
<origin xyz="0.000002 -0.064 -0.000009" rpy="0 0 0"/>
<mass value="1.340"/>
<inertia ixx="0.004085980" ixy="0.000000178" ixz="0.000000095"
iyy="0.007221854" iyz="-0.000000526" izz="0.004086529"/>
</inertial>
<visual>
<geometry>
<mesh filename="../meshes_solenopsis_visual/hr_wheel.STL" scale="0.001122449 0.001428571 0.001122449"/>
</geometry>
</visual>
<collision>
<origin xyz="0 -0.064 0" rpy="1.570796326795 0 0"/>
<geometry>
<cylinder length="0.12" radius="0.11"/>
</geometry>
</collision>
</link>
<joint name="hr_wheel_joint" type="continuous">
<origin xyz="0 0 -0.300" rpy="0 0 0"/>
<parent link="hr_knee"/>
<child link="hr_wheel"/>
<axis xyz="0 -1 0"/>
<limit effort="28.68" velocity="109.956"/>
</joint>
</robot>