Skip to content

Instantly share code, notes, and snippets.

@sdshmkh
Last active September 10, 2026 23:11
Show Gist options
  • Select an option

  • Save sdshmkh/c228ae05c53824623a2dbacf0e386526 to your computer and use it in GitHub Desktop.

Select an option

Save sdshmkh/c228ae05c53824623a2dbacf0e386526 to your computer and use it in GitHub Desktop.
double_differential
<?xml version="1.0"?>
<robot name="tank_double_differential">
<!-- Materials -->
<material name="chassis_grey">
<color rgba="0.5 0.5 0.5 1.0"/>
</material>
<material name="main_drive_blue">
<color rgba="0.1 0.3 0.8 1.0"/>
</material>
<material name="steer_drive_red">
<color rgba="0.8 0.1 0.1 1.0"/>
</material>
<material name="track_black">
<color rgba="0.1 0.1 0.1 1.0"/>
</material>
<!-- Dummy Base -->
<link name="base_link" />
<link name="fixed_platform_link">
<visual>
<origin xyz="0 0.2 0" rpy="1.5708 0 0"/>
<geometry>
<cube size="0.1 0.1 0.05" />
</geometry>
<material name="chassis_grey" />
</visual>
</link>
<joint name="fixed_platform_joint" type="fixed">
<parent link="base_link" />
<child link="fixed_platform_link" />
<origin xyz="0 0 0" rpy="0 0 0" />
</joint>
<!-- ========================================== -->
<!-- INPUT 1: MAIN DRIVE (Forward/Reverse) -->
<!-- ========================================== -->
<link name="carrier_shaft_link">
<visual>
<origin xyz="0 0 0" rpy="1.5708 0 0" />
<geometry>
<cylinder radius="0.1" length="0.8" />
</geometry>
<material name="main_drive_blue" />
</visual>
</link>
<joint name="main_drive_joint" type="continuous">
<parent link="base_link" />
<child link="carrier_shaft_link" />
<origin xyz="0 0 0" rpy="0 0 0" />
<axis xyz="0 1 0" />
</joint>
<!-- ========================================== -->
<!-- INPUT 2: STEERING DRIVE (Left/Right) -->
<!-- ========================================== -->
<link name="steer_input_link">
<visual>
<origin xyz="0 0 0" rpy="1.5708 0 0" />
<geometry>
<cylinder radius="0.08" length="0.2" />
</geometry>
<material name="steer_drive_red" />
</visual>
</link>
<joint name="steer_drive_joint" type="continuous">
<parent link="base_link" />
<child link="steer_input_link" />
<origin xyz="-0.3 0 0" rpy="0 0 0" />
<axis xyz="0 1 0" />
</joint>
<!-- ========================================== -->
<!-- OUTPUTS (Superposition of Main + Steer) -->
<!-- ========================================== -->
<!-- Left Drive Sprocket -->
<link name="left_sprocket_link">
<visual>
<origin xyz="0 0 0" rpy="1.5708 0 0" />
<geometry>
<cylinder radius="0.35" length="0.15" />
</geometry>
<material name="track_black" />
</visual>
</link>
<joint name="left_mix_joint" type="continuous">
<parent link="carrier_shaft_link" />
<child link="left_sprocket_link" />
<origin xyz="0 0.475 0" rpy="0 0 0" />
<axis xyz="0 1 0" />
<mimic joint="steer_drive_joint" multiplier="1.0" />
</joint>
<!-- Right Drive Sprocket -->
<link name="right_sprocket_link">
<visual>
<origin xyz="0 0 0" rpy="1.5708 0 0" />
<geometry>
<cylinder radius="0.35" length="0.15" />
</geometry>
<material name="track_black" />
</visual>
</link>
<joint name="right_mix_joint" type="continuous">
<parent link="carrier_shaft_link" />
<child link="right_sprocket_link" />
<origin xyz="0 -0.475 0" rpy="0 0 0" />
<axis xyz="0 1 0" />
<mimic joint="steer_drive_joint" multiplier="-1.0" />
</joint>
</robot>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment