Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange

No version for distro jazzy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange

No version for distro kilted showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange

No version for distro lyrical showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange

No version for distro rolling showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange

No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange

No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange

No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange

No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange

No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange

No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

kangaroo_mujoco package from kangaroo_simulation repo

kangaroo_mujoco kangaroo_simulation

ROS Distro
humble

Package Summary

Version 2.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pal-robotics/kangaroo_simulation.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-06-26
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Kangaroo MuJoCo simulation package

Maintainers

  • Sergi de las Muelas

Authors

No additional authors.

kangaroo_mujoco

MuJoCo simulation package for the Kangaroo robot. Provides pregenerated MJCF model variants and the launch infrastructure to run them under mujoco_ros2_control.

Contents

models/                        Pregenerated MJCF model variants
  assets/
    full/                      Shared visual mesh pool (all .obj files live here)
  mjcf_data_<variant>/
    mujoco_description_formatted.xml   Runtime MJCF (loaded by the launch file)
    mujoco_description.xml             Intermediate MJCF (not loaded at runtime)
    robot_description_formatted.urdf   Source URDF
    assets/
      full -> ../../assets/full        Symlink to the shared mesh pool
      decomposed/                      Per-variant convex-collision meshes
scripts/
  publish_mjcf.py              Latched ROS 2 publisher for a pregenerated MJCF
  consolidate_model_assets.py  Tool to deduplicate visual meshes across variants
test/
  test_model_assets.py         Regression tests for the consolidated asset layout

Model variants

Each variant is named mjcf_data_{arm_type}_{end_effector_right}_{end_effector_left}_{feet_type}_{world_type}. Currently pregenerated variants:

Directory Arm End-effectors
mjcf_data_5dof_RH8D_RH8D_fixed_empty 5-DoF (fixed ankle type) RH8D dexterous hands
mjcf_data_4dof_fake-forearm_fake-forearm_fixed_empty 4-DoF (fixed ankle type) Fake forearm stubs
mjcf_data_no-arm_no-end-effector_no-end-effector_fixed_empty None (fixed ankle type) None

Consolidated asset layout

All visual .obj meshes live in a single shared pool at models/assets/full/. Each variant’s assets/full is a symlink pointing at that pool:

models/
  assets/
    full/               <-- one copy of every visual mesh
      d435/d435.obj
      torso_link/torso_link.obj
      arm1_link/arm1_link.obj
      ...
  mjcf_data_5dof_RH8D_RH8D/
    assets/
      full -> ../../assets/full   <-- symlink (no per-variant copy)
      decomposed/                 <-- real dir, collision meshes only
  mjcf_data_4dof_fake-forearm_fake-forearm/
    assets/
      full -> ../../assets/full
      decomposed/
  ...

This avoids triplicating ~55 MB of identical mesh data. The decomposed/ convex-collision sets are intentionally kept per-variant because the number of collision pieces differs across variants.

After regenerating a model variant

The upstream generator (mujoco_ros2_control’s robot_description_to_mjcf.sh) writes a fresh per-variant assets/full/ directory, replacing the symlink. After regeneration, restore the shared layout by running the consolidation script (see below).


Consolidating model assets

What the script does

scripts/consolidate_model_assets.py performs four idempotent steps:

  1. Verify — MD5-scans all assets/full/ trees, reports duplicated files and aborts if any same-named file has different content across variants (conflict guard).
  2. Build shared pool — merges all variant assets/full/ trees into models/assets/full/ (no-clobber, lossless union).
  3. Install symlinks — replaces each variant’s assets/full/ directory with a symlink ../../assets/full.
  4. Fix stale paths — patches any <compiler meshdir="/tmp/..."> in mujoco_description.xml files back to the correct relative assets/.

Usage

```bash

Report duplicates and conflicts only (read-only):

python3 scripts/consolidate_model_assets.py –verify

Preview what would change without touching anything:

python3 scripts/consolidate_model_assets.py –dry-run

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kangaroo_mujoco

2.5.0 (2026-06-26)

  • Merge branch 'improve/ankle_fusion' into 'humble-devel' Improve ankle inertia fusion See merge request robots/kangaroo_simulation!20
  • Add collision exclude between knee and ankle link
  • Add fixed base mujoco simulation
  • Remove duplicate density setting
  • Refine the collision capsules for the new covers
  • Add the capsules for the new feet with covers
  • Update to new ankle configuration data
  • Merge branch 'add/fixation_type/folder_naming' into 'humble-devel' Add fixation type to the folder naming See merge request robots/kangaroo_simulation!19
  • Add fixation type to the folder naming
  • Contributors: Sai Kishor Kothakota

2.4.0 (2026-06-23)

  • Merge branch 'add/stairs' into 'humble-devel' Stairs world for lower body with detachable feet See merge request robots/kangaroo_simulation!18
  • Stairs world for lower body with detachable feet
  • Merge branch 'refine/models' into 'humble-devel' Refine models + Add lower body with detached foot See merge request robots/kangaroo_simulation!17
  • Add lower body with detached foot precompiled simulation
  • Remove pal_mujoco_scenes dependency
  • Set --no-fuse for only fixed fixation type
  • Set density to zero for the foot capsules
  • Merge branch 'add/readme' into 'humble-devel' Add README to the package See merge request robots/kangaroo_simulation!16
  • rename the script
  • fix the generate decomposed pregenerated mjcf script
  • Update README
  • Merge branch 'add/worlds' into 'humble-devel' Adding world argument See merge request robots/kangaroo_simulation!15
  • Adding world argument World suffix + launch option. Only works with pregenerated models. Will fallback gracefully to generating with empty if a given world name doesn't exist
  • Merge branch 'add/cached_models_with_feet_type' into 'humble-devel' Add feet type to the cached models folder naming See merge request robots/kangaroo_simulation!14
  • Add feet type to the cached models folder naming
  • Merge branch 'add/density/foot_capsules' into 'humble-devel' Set foot capsules density set to zero See merge request robots/kangaroo_simulation!13
  • Set foot capsules density set to zero
  • Adding 5dof with RH8D pregenerated
  • Contributors: Sai Kishor Kothakota, oscarmartinez, Óscar Martínez

2.3.0 (2026-06-21)

  • Merge branch 'add/imu_args' into 'humble-devel' Add IMU args to the mujoco simulator See merge request robots/kangaroo_simulation!11
  • Add IMU args to the mujoco simulator
  • Contributors: Sai Kishor Kothakota

2.2.1 (2026-06-09)

  • Merge branch 'fix/ankle_ft_missing_args' into 'humble-devel' Add missing ankle ft sensor arguments See merge request robots/kangaroo_simulation!10
  • Add conditioning to pal_mujoco_scenes dependency
  • Add missing ankle ft sensor arguments
  • Contributors: Sai Kishor Kothakota

2.2.0 (2026-06-09)

  • Merge branch 'update/models' into 'humble-devel' Update kangaroo models of 4DoF and lower body to local frozen mjcfs See merge request robots/kangaroo_simulation!9
  • Add a script to publish the mujoco description if it is already generated
  • Remove the bodies of the torso cameras
  • Use capsules for the foot contact
  • Add --cache-dir arg to reuse the generated mjcfs
  • make meshdir, texturedir and assetdir relative paths
  • Add the robot with configuration of lower body only
  • rename the cached folder to mjcf_data_4dof_fake-forearm_fake-forearm
  • Remove leg_type argument assuming is always leg
  • Add new arguments as end_effector_<side> and feet_type
  • Contributors: Aina, Sai Kishor Kothakota

2.1.1 (2026-04-23)

  • Add missing dependency mujoco_ros2_control
  • Contributors: Noel Jimenez

2.1.0 (2026-02-25)

  • apply format
  • removed unnecessary imports
  • updated model
  • set motor actuator default
  • Enable topic publishing and also add emulate_tty for better noticing of logs
  • Set back to 2kHz
  • added test model and config to rl inference

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kangaroo_mujoco at Robotics Stack Exchange