Initial commit

This commit is contained in:
2026-11-02 17:10:39 +08:00
commit 102fdbaf47
79 changed files with 56509 additions and 0 deletions
+29
View File
@@ -0,0 +1,29 @@
S10 model adapted from the Deep Robotics deployment SDK
(`S10_description/s10_mjcf/S10.xml`). Only the 17 mesh files referenced by
`s10.xml` are included. The source XML is BSD-3-Clause, see `../LICENSE_s10`.
Local changes:
- Removed the world floor and light so mjlab can attach the robot to its own
terrain.
- Removed the torque `<motor>` actuator block; mjlab adds native position
actuators for the 12 leg joints and native velocity actuators for the 4
wheels.
- Added names to the four wheel collision cylinders
(`fl/fr/hl/hr_wheel_collision`) so wheel friction randomisation and contact
sensors can address them.
- Removed the `<sensor>` block. The SDK XML has unnamed `accelerometer` and
`gyro` elements, which mjlab tries to wrap as a sensor with an empty name and
fails with `KeyError: Invalid name ''` during scene initialization. The
training actor/world model read MuJoCo data directly and do not use these XML
sensors.
- `robot/config.py` names remaining unnamed collision geoms, clears collision
margins for Warp MULTICCD compatibility, and delegates solver options to the
task.
- `meshdir` changed from `../meshes/` to `meshes/`.
Default pose, joint limits, link geometry and inertial values are unchanged
from the SDK model. Actuator gains follow the SDK/IsaacLab S10 configuration:
legs kp=80, kd=2, effort=50 N·m; wheels damping=0.8, effort=14 N·m.
These values are taken from the provided deployment/training projects and are
not independently hardware-calibrated here.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+176
View File
@@ -0,0 +1,176 @@
<?xml version='1.0' encoding='utf-8'?>
<mujoco model="S10">
<default>
<default class="robot">
<default class="motor">
<joint />
<motor />
</default>
<default class="visual">
<geom material="default_material" contype="0" conaffinity="0" group="2" />
</default>
<default class="collision">
<geom material="collision_material" condim="3" contype="1" conaffinity="1" solref="0.005 1" friction="1 0.01 0.001" density="0" group="1" />
</default>
</default>
</default>
<compiler angle="radian" meshdir="meshes/" />
<compiler autolimits="true" />
<asset>
<material name="default_material" rgba="0.7 0.7 0.7 1" />
<material name="collision_material" rgba="0.0 0.4 0.8 0.2" />
<mesh name="base_link" file="base_link.STL" />
<mesh name="fl_hipx" file="fl_hipx.STL" />
<mesh name="fl_hipy" file="fl_hipy.STL" />
<mesh name="fl_knee" file="fl_knee.STL" />
<mesh name="fl_wheel" file="fl_wheel.STL" />
<mesh name="fr_hipx" file="fr_hipx.STL" />
<mesh name="fr_hipy" file="fr_hipy.STL" />
<mesh name="fr_knee" file="fr_knee.STL" />
<mesh name="fr_wheel" file="fr_wheel.STL" />
<mesh name="hl_hipx" file="hl_hipx.STL" />
<mesh name="hl_hipy" file="hl_hipy.STL" />
<mesh name="hl_knee" file="hl_knee.STL" />
<mesh name="hl_wheel" file="hl_wheel.STL" />
<mesh name="hr_hipx" file="hr_hipx.STL" />
<mesh name="hr_hipy" file="hr_hipy.STL" />
<mesh name="hr_knee" file="hr_knee.STL" />
<mesh name="hr_wheel" file="hr_wheel.STL" />
<texture name="texplane" type="2d" builtin="checker" rgb1=".2 .3 .4" rgb2=".1 0.15 0.2" width="512" height="512" />
<material name="MatPlane" reflectance="0.3" texture="texplane" texrepeat="1 1" texuniform="true" />
</asset>
<worldbody>
<body name="base_link" pos="0 0.0 0.5" quat="1 0 0 0" childclass="robot">
<freejoint name="floating_base" />
<inertial pos="-0.000512 0.057317 0.001182" quat="1 0 0 0" mass="8.023087" diaginertia="0.115559 0.171329 0.262028" />
<site name="imu_site" pos="0.0075 -0.0373 0.0556" size="0.005" rgba="1 0 0 1" />
<site name="base_site" pos="0 0 0" quat="1 0 0 0" />
<geom type="mesh" class="visual" mesh="base_link" />
<geom size="0.08 0.3" pos="0 0.024 0" quat="0.707107 0 0.707107 0" type="cylinder" class="collision" />
<geom size="0.08 0.3" pos="0 -0.024 0" quat="0.707107 0 0.707107 0" type="cylinder" class="collision" />
<geom size="0.08 0.024 0.3" quat="0.707107 0 0.707107 0" type="box" class="collision" />
<body name="fl_hipx" pos="0.2277 0.0574 0">
<inertial pos="-0.005034 0.023524 4.6e-05" quat="0.25609 0.665262 -0.228203 0.663151" mass="0.627405" diaginertia="0.000415056 0.000391723 0.000223221" />
<joint name="fl_hipx_joint" pos="0 0 0" axis="-1 0 0" range="-0.6109 0.6109" actuatorfrcrange="-50 50" />
<geom type="mesh" class="visual" mesh="fl_hipx" />
<geom size="0.04 0.05" pos="0 0.054 0" quat="0.707107 0.707107 0 0" type="cylinder" class="collision" />
<body name="fl_hipy" pos="0 0.0779 0">
<inertial pos="7.4e-05 0.018439 -0.129675" quat="0.701304 -0.0510428 0.0516391 0.709155" mass="0.885874" diaginertia="0.00454086 0.00445199 0.00030515" />
<joint name="fl_hipy_joint" pos="0 0 0" axis="0 -1 0" range="-2.5307 2.5307" actuatorfrcrange="-50 50" />
<geom type="mesh" class="visual" mesh="fl_hipy" />
<geom size="0.032 0.012 0.09" pos="0 0.012 -0.09" type="box" class="collision" />
<geom size="0.04 0.04" pos="0 0.018 -0.18" quat="0.707107 0.707107 0 0" type="cylinder" class="collision" name="fl_knee_joint_collision" />
<body name="fl_knee" pos="0 0 -0.18">
<inertial pos="-3.2e-05 0.013504 -0.156308" quat="0.703786 -0.068447 0.068447 0.703786" mass="0.640283" diaginertia="0.0022296 0.002221 0.000193398" />
<joint name="fl_knee_joint" pos="0 0 0" axis="0 -1 0" range="-2.7227 2.7227" actuatorfrcrange="-50 50" />
<geom type="mesh" class="visual" mesh="fl_knee" />
<geom size="0.029 0.01 0.09" pos="0 -0.012 -0.09" type="box" class="collision" name="fl_shin_collision" />
<geom size="0.04 0.025" pos="0 0.002 -0.18" quat="0.707107 0.707107 0 0" type="cylinder" class="collision" name="fl_knee_hub_collision" />
<body name="fl_wheel" pos="0 0.045891 -0.18">
<inertial pos="-8e-06 0.001694 -5e-06" quat="0.707107 0 0 0.707107" mass="0.587952" diaginertia="0.002003 0.001059 0.001059" />
<joint name="fl_wheel_joint" pos="0 0 0" axis="0 -1 0" actuatorfrcrange="-14 14" />
<geom type="mesh" class="visual" mesh="fl_wheel" />
<geom size="0.081 0.0185" quat="0.707107 0.707107 0 0" type="cylinder" class="collision" name="fl_wheel_collision" />
</body>
</body>
</body>
</body>
<body name="fr_hipx" pos="0.2277 -0.0574 0">
<inertial pos="-0.004831 -0.02349 0.000169" quat="-0.278522 0.675499 0.205833 0.650968" mass="0.626546" diaginertia="0.000415238 0.000395047 0.000218715" />
<joint name="fr_hipx_joint" pos="0 0 0" axis="-1 0 0" range="-0.6109 0.6109" actuatorfrcrange="-50 50" />
<geom type="mesh" class="visual" mesh="fr_hipx" />
<geom size="0.04 0.05" pos="0 -0.054 0" quat="0.707107 0.707107 0 0" type="cylinder" class="collision" />
<body name="fr_hipy" pos="0 -0.0779 0">
<inertial pos="-7.4e-05 -0.018439 -0.129675" quat="0.701304 0.0510428 -0.0516391 0.709155" mass="0.885874" diaginertia="0.00454086 0.00445199 0.00030515" />
<joint name="fr_hipy_joint" pos="0 0 0" axis="0 -1 0" range="-2.5307 2.5307" actuatorfrcrange="-50 50" />
<geom type="mesh" class="visual" mesh="fr_hipy" />
<geom size="0.032 0.012 0.09" pos="0 -0.012 -0.09" type="box" class="collision" />
<geom size="0.04 0.04" pos="0 -0.018 -0.18" quat="0.707107 0.707107 0 0" type="cylinder" class="collision" name="fr_knee_joint_collision" />
<body name="fr_knee" pos="0 0 -0.18">
<inertial pos="3.2e-05 -0.013504 -0.156308" quat="0.703786 0.068447 -0.068447 0.703786" mass="0.640283" diaginertia="0.0022296 0.002221 0.000193398" />
<joint name="fr_knee_joint" pos="0 0 0" axis="0 -1 0" range="-2.7227 2.7227" actuatorfrcrange="-50 50" />
<geom type="mesh" class="visual" mesh="fr_knee" />
<geom size="0.029 0.01 0.09" pos="0 0.012 -0.09" type="box" class="collision" name="fr_shin_collision" />
<geom size="0.04 0.025" pos="0 -0.002 -0.18" quat="0.707107 0.707107 0 0" type="cylinder" class="collision" name="fr_knee_hub_collision" />
<body name="fr_wheel" pos="0 -0.045891 -0.18">
<inertial pos="8e-06 -0.001694 5e-06" quat="0.707107 0 0 0.707107" mass="0.587952" diaginertia="0.002003 0.001059 0.001059" />
<joint name="fr_wheel_joint" pos="0 0 0" axis="0 -1 0" actuatorfrcrange="-14 14" />
<geom type="mesh" class="visual" mesh="fr_wheel" />
<geom size="0.081 0.0185" quat="0.707107 0.707107 0 0" type="cylinder" class="collision" name="fr_wheel_collision" />
</body>
</body>
</body>
</body>
<body name="hl_hipx" pos="-0.2277 0.0574 0">
<inertial pos="0.004831 0.02349 0.000169" quat="-0.205833 0.650968 0.278522 0.675499" mass="0.626546" diaginertia="0.000415238 0.000395047 0.000218715" />
<joint name="hl_hipx_joint" pos="0 0 0" axis="-1 0 0" range="-0.6109 0.6109" actuatorfrcrange="-50 50" />
<geom type="mesh" class="visual" mesh="hl_hipx" />
<geom size="0.04 0.05" pos="0 0.054 0" quat="0.707107 0.707107 0 0" type="cylinder" class="collision" />
<body name="hl_hipy" pos="0 0.0779 0">
<inertial pos="7.4e-05 0.018439 -0.129675" quat="0.701304 -0.0510428 0.0516391 0.709155" mass="0.885874" diaginertia="0.00454086 0.00445199 0.00030515" />
<joint name="hl_hipy_joint" pos="0 0 0" axis="0 -1 0" range="-2.5307 2.5307" actuatorfrcrange="-50 50" />
<geom type="mesh" class="visual" mesh="hl_hipy" />
<geom size="0.032 0.012 0.09" pos="0 0.012 -0.09" type="box" class="collision" />
<geom size="0.04 0.04" pos="0 0.018 -0.18" quat="0.707107 0.707107 0 0" type="cylinder" class="collision" name="hl_knee_joint_collision" />
<body name="hl_knee" pos="0 0 -0.18">
<inertial pos="-3.2e-05 0.013504 -0.156308" quat="0.703786 -0.068447 0.068447 0.703786" mass="0.640283" diaginertia="0.0022296 0.002221 0.000193398" />
<joint name="hl_knee_joint" pos="0 0 0" axis="0 -1 0" range="-2.7227 2.7227" actuatorfrcrange="-50 50" />
<geom type="mesh" class="visual" mesh="hl_knee" />
<geom size="0.029 0.01 0.09" pos="0 -0.012 -0.09" type="box" class="collision" name="hl_shin_collision" />
<geom size="0.04 0.025" pos="0 0.002 -0.18" quat="0.707107 0.707107 0 0" type="cylinder" class="collision" name="hl_knee_hub_collision" />
<body name="hl_wheel" pos="0 0.045891 -0.18">
<inertial pos="-8e-06 0.001694 -5e-06" quat="0.707107 0 0 0.707107" mass="0.587952" diaginertia="0.002003 0.001059 0.001059" />
<joint name="hl_wheel_joint" pos="0 0 0" axis="0 -1 0" actuatorfrcrange="-14 14" />
<geom type="mesh" class="visual" mesh="hl_wheel" />
<geom size="0.081 0.0185" quat="0.707107 0.707107 0 0" type="cylinder" class="collision" name="hl_wheel_collision" />
</body>
</body>
</body>
</body>
<body name="hr_hipx" pos="-0.2277 -0.0574 0">
<inertial pos="0.005034 -0.023524 4.6e-05" quat="0.228203 0.663151 -0.25609 0.665262" mass="0.627405" diaginertia="0.000415056 0.000391723 0.000223221" />
<joint name="hr_hipx_joint" pos="0 0 0" axis="-1 0 0" range="-0.6109 0.6109" actuatorfrcrange="-50 50" />
<geom type="mesh" class="visual" mesh="hr_hipx" />
<geom size="0.04 0.05" pos="0 -0.054 0" quat="0.707107 0.707107 0 0" type="cylinder" class="collision" />
<body name="hr_hipy" pos="0 -0.0779 0">
<inertial pos="-7.4e-05 -0.018439 -0.129675" quat="0.701304 0.0510428 -0.0516391 0.709155" mass="0.885874" diaginertia="0.00454086 0.00445199 0.00030515" />
<joint name="hr_hipy_joint" pos="0 0 0" axis="0 -1 0" range="-2.5307 2.5307" actuatorfrcrange="-50 50" />
<geom type="mesh" class="visual" mesh="hr_hipy" />
<geom size="0.032 0.012 0.09" pos="0 -0.012 -0.09" type="box" class="collision" />
<geom size="0.04 0.04" pos="0 -0.018 -0.18" quat="0.707107 0.707107 0 0" type="cylinder" class="collision" name="hr_knee_joint_collision" />
<body name="hr_knee" pos="0 0 -0.18">
<inertial pos="3.2e-05 -0.013504 -0.156308" quat="0.703786 0.068447 -0.068447 0.703786" mass="0.640283" diaginertia="0.0022296 0.002221 0.000193398" />
<joint name="hr_knee_joint" pos="0 0 0" axis="0 -1 0" range="-2.7227 2.7227" actuatorfrcrange="-50 50" />
<geom type="mesh" class="visual" mesh="hr_knee" />
<geom size="0.029 0.01 0.09" pos="0 0.012 -0.09" type="box" class="collision" name="hr_shin_collision" />
<geom size="0.04 0.025" pos="0 -0.002 -0.18" quat="0.707107 0.707107 0 0" type="cylinder" class="collision" name="hr_knee_hub_collision" />
<body name="hr_wheel" pos="0 -0.045891 -0.18">
<inertial pos="8e-06 -0.001694 5e-06" quat="0.707107 0 0 0.707107" mass="0.587952" diaginertia="0.002003 0.001059 0.001059" />
<joint name="hr_wheel_joint" pos="0 0 0" axis="0 -1 0" actuatorfrcrange="-14 14" />
<geom type="mesh" class="visual" mesh="hr_wheel" />
<geom size="0.081 0.0185" quat="0.707107 0.707107 0 0" type="cylinder" class="collision" name="hr_wheel_collision" />
</body>
</body>
</body>
</body>
</body>
</worldbody>
<contact>
<exclude body1="base_link" body2="fl_hipx" />
<exclude body1="fl_hipx" body2="fl_hipy" />
<exclude body1="fl_hipy" body2="fl_knee" />
<exclude body1="fl_knee" body2="fl_wheel" />
<exclude body1="base_link" body2="fr_hipx" />
<exclude body1="fr_hipx" body2="fr_hipy" />
<exclude body1="fr_hipy" body2="fr_knee" />
<exclude body1="fr_knee" body2="fr_wheel" />
<exclude body1="base_link" body2="hl_hipx" />
<exclude body1="hl_hipx" body2="hl_hipy" />
<exclude body1="hl_hipy" body2="hl_knee" />
<exclude body1="hl_knee" body2="hl_wheel" />
<exclude body1="base_link" body2="hr_hipx" />
<exclude body1="hr_hipx" body2="hr_hipy" />
<exclude body1="hr_hipy" body2="hr_knee" />
<exclude body1="hr_knee" body2="hr_wheel" />
</contact>
</mujoco>