Repository Summary

Description Provides a ROS 2 control hardware interface for the MuJoCo physics simulator, including plugins for various sensors, RGB-D cameras, and lidar.
Checkout URI https://github.com/ros-controls/mujoco_ros2_control.git
VCS Type git
VCS Version main
Last Updated 2026-02-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

MuJoCo ros2_control

Rdev Kdev Jdev CI License Codecov

This repository provides a ros2_control system interface and supporting packages to run ROS 2 controllers against the MuJoCo physics simulator.

This project wraps MuJoCo as a hardware/system interface so you can use the ros2_control stack (controller manager, controllers, controller interfaces) against simulated robots based on MJCF or generated from URDF.

Contents

  • mujoco_ros2_control - core system interface plugin and resources
  • mujoco_ros2_control_msgs - message/service definitions used by the plugin
  • mujoco_ros2_control_demos - demo launch files, configs and example robots
  • mujoco_ros2_control_tests - integration / launch tests and simple examples
  • docker/ - Dockerfiles and scripts to run CI/containers

Key features

  • Full ros2_control SystemInterface plugin for MuJoCo
  • MJCF/URDF conversion utilities to auto-generate MuJoCo models
  • Example demos showing basic control, PID and transmission setups

Quick start

There are two common ways to get running: build from source (recommended) or install prebuilt binaries (if available for your distribution).

  • Build from source (recommended)

    1. Install required dependencies manually or from rosdep, including the mujoco_vendor package, if available. Otherwise MuJoCo will will be downloaded at build time.

    2. Build the workspace (example with a sourced ROS 2 installation):

  # from workspace root (this repository is typically inside a ROS 2 workspace)
  colcon build --symlink-install --packages-select mujoco_ros2_control* \
    --cmake-args -DCMAKE_BUILD_TYPE=Release
  
  1. Source the workspace and run a demo:
  source install/setup.bash
  ros2 launch mujoco_ros2_control_demos demo.launch.py
  
  • Install prebuilt binaries (if available)

    If your ROS 2 distribution or your OS package index provides prebuilt packages for mujoco_ros2_control, you can install those instead of compiling from source. Check your distribution’s package repositories or the project’s GitHub releases for available binary artifacts.

    Example (Debian/Ubuntu with ROS packages — replace <distro>):

  sudo apt update
  sudo apt install ros-<distro>-mujoco-ros2-control
  

After installing binaries, source your ROS install and run a demo:

  source /opt/ros/<distro>/setup.bash
  ros2 launch mujoco_ros2_control_demos demo.launch.py
  

See mujoco_ros2_control/README.md for detailed usage, configuration examples and mappings between MJCF actuators/sensors and ros2_control interfaces.

Supported ROS 2 distributions

  • The project is developed and tested against multiple ROS 2 distributions. This README includes basic notes for: Humble, Kilted, Jazzy and Rolling.

Support matrix

Distribution Status
Humble Supported
Kilted Supported
Jazzy Supported
Rolling Supported (development)

Contributing

  • Contributions, bug reports and feature requests are welcome. Please follow standard ROS Controls project workflows: open issues, send PRs against the main branch and respect the repository code style using pre-commit.

License & maintainers

  • This repository is distributed under the terms of the LICENSE file (LICENSE). Maintainers and authors are listed in the Git history and package manifests (package.xml) inside each package.

Repository Summary

Description Provides a ROS 2 control hardware interface for the MuJoCo physics simulator, including plugins for various sensors, RGB-D cameras, and lidar.
Checkout URI https://github.com/ros-controls/mujoco_ros2_control.git
VCS Type git
VCS Version main
Last Updated 2026-02-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

MuJoCo ros2_control

Rdev Kdev Jdev CI License Codecov

This repository provides a ros2_control system interface and supporting packages to run ROS 2 controllers against the MuJoCo physics simulator.

This project wraps MuJoCo as a hardware/system interface so you can use the ros2_control stack (controller manager, controllers, controller interfaces) against simulated robots based on MJCF or generated from URDF.

Contents

  • mujoco_ros2_control - core system interface plugin and resources
  • mujoco_ros2_control_msgs - message/service definitions used by the plugin
  • mujoco_ros2_control_demos - demo launch files, configs and example robots
  • mujoco_ros2_control_tests - integration / launch tests and simple examples
  • docker/ - Dockerfiles and scripts to run CI/containers

Key features

  • Full ros2_control SystemInterface plugin for MuJoCo
  • MJCF/URDF conversion utilities to auto-generate MuJoCo models
  • Example demos showing basic control, PID and transmission setups

Quick start

There are two common ways to get running: build from source (recommended) or install prebuilt binaries (if available for your distribution).

  • Build from source (recommended)

    1. Install required dependencies manually or from rosdep, including the mujoco_vendor package, if available. Otherwise MuJoCo will will be downloaded at build time.

    2. Build the workspace (example with a sourced ROS 2 installation):

  # from workspace root (this repository is typically inside a ROS 2 workspace)
  colcon build --symlink-install --packages-select mujoco_ros2_control* \
    --cmake-args -DCMAKE_BUILD_TYPE=Release
  
  1. Source the workspace and run a demo:
  source install/setup.bash
  ros2 launch mujoco_ros2_control_demos demo.launch.py
  
  • Install prebuilt binaries (if available)

    If your ROS 2 distribution or your OS package index provides prebuilt packages for mujoco_ros2_control, you can install those instead of compiling from source. Check your distribution’s package repositories or the project’s GitHub releases for available binary artifacts.

    Example (Debian/Ubuntu with ROS packages — replace <distro>):

  sudo apt update
  sudo apt install ros-<distro>-mujoco-ros2-control
  

After installing binaries, source your ROS install and run a demo:

  source /opt/ros/<distro>/setup.bash
  ros2 launch mujoco_ros2_control_demos demo.launch.py
  

See mujoco_ros2_control/README.md for detailed usage, configuration examples and mappings between MJCF actuators/sensors and ros2_control interfaces.

Supported ROS 2 distributions

  • The project is developed and tested against multiple ROS 2 distributions. This README includes basic notes for: Humble, Kilted, Jazzy and Rolling.

Support matrix

Distribution Status
Humble Supported
Kilted Supported
Jazzy Supported
Rolling Supported (development)

Contributing

  • Contributions, bug reports and feature requests are welcome. Please follow standard ROS Controls project workflows: open issues, send PRs against the main branch and respect the repository code style using pre-commit.

License & maintainers

  • This repository is distributed under the terms of the LICENSE file (LICENSE). Maintainers and authors are listed in the Git history and package manifests (package.xml) inside each package.

Repository Summary

Description Provides a ROS 2 control hardware interface for the MuJoCo physics simulator, including plugins for various sensors, RGB-D cameras, and lidar.
Checkout URI https://github.com/ros-controls/mujoco_ros2_control.git
VCS Type git
VCS Version main
Last Updated 2026-02-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

MuJoCo ros2_control

Rdev Kdev Jdev CI License Codecov

This repository provides a ros2_control system interface and supporting packages to run ROS 2 controllers against the MuJoCo physics simulator.

This project wraps MuJoCo as a hardware/system interface so you can use the ros2_control stack (controller manager, controllers, controller interfaces) against simulated robots based on MJCF or generated from URDF.

Contents

  • mujoco_ros2_control - core system interface plugin and resources
  • mujoco_ros2_control_msgs - message/service definitions used by the plugin
  • mujoco_ros2_control_demos - demo launch files, configs and example robots
  • mujoco_ros2_control_tests - integration / launch tests and simple examples
  • docker/ - Dockerfiles and scripts to run CI/containers

Key features

  • Full ros2_control SystemInterface plugin for MuJoCo
  • MJCF/URDF conversion utilities to auto-generate MuJoCo models
  • Example demos showing basic control, PID and transmission setups

Quick start

There are two common ways to get running: build from source (recommended) or install prebuilt binaries (if available for your distribution).

  • Build from source (recommended)

    1. Install required dependencies manually or from rosdep, including the mujoco_vendor package, if available. Otherwise MuJoCo will will be downloaded at build time.

    2. Build the workspace (example with a sourced ROS 2 installation):

  # from workspace root (this repository is typically inside a ROS 2 workspace)
  colcon build --symlink-install --packages-select mujoco_ros2_control* \
    --cmake-args -DCMAKE_BUILD_TYPE=Release
  
  1. Source the workspace and run a demo:
  source install/setup.bash
  ros2 launch mujoco_ros2_control_demos demo.launch.py
  
  • Install prebuilt binaries (if available)

    If your ROS 2 distribution or your OS package index provides prebuilt packages for mujoco_ros2_control, you can install those instead of compiling from source. Check your distribution’s package repositories or the project’s GitHub releases for available binary artifacts.

    Example (Debian/Ubuntu with ROS packages — replace <distro>):

  sudo apt update
  sudo apt install ros-<distro>-mujoco-ros2-control
  

After installing binaries, source your ROS install and run a demo:

  source /opt/ros/<distro>/setup.bash
  ros2 launch mujoco_ros2_control_demos demo.launch.py
  

See mujoco_ros2_control/README.md for detailed usage, configuration examples and mappings between MJCF actuators/sensors and ros2_control interfaces.

Supported ROS 2 distributions

  • The project is developed and tested against multiple ROS 2 distributions. This README includes basic notes for: Humble, Kilted, Jazzy and Rolling.

Support matrix

Distribution Status
Humble Supported
Kilted Supported
Jazzy Supported
Rolling Supported (development)

Contributing

  • Contributions, bug reports and feature requests are welcome. Please follow standard ROS Controls project workflows: open issues, send PRs against the main branch and respect the repository code style using pre-commit.

License & maintainers

  • This repository is distributed under the terms of the LICENSE file (LICENSE). Maintainers and authors are listed in the Git history and package manifests (package.xml) inside each package.

Repository Summary

Description Provides a ROS 2 control hardware interface for the MuJoCo physics simulator, including plugins for various sensors, RGB-D cameras, and lidar.
Checkout URI https://github.com/ros-controls/mujoco_ros2_control.git
VCS Type git
VCS Version main
Last Updated 2026-02-24
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

MuJoCo ros2_control

Rdev Kdev Jdev CI License Codecov

This repository provides a ros2_control system interface and supporting packages to run ROS 2 controllers against the MuJoCo physics simulator.

This project wraps MuJoCo as a hardware/system interface so you can use the ros2_control stack (controller manager, controllers, controller interfaces) against simulated robots based on MJCF or generated from URDF.

Contents

  • mujoco_ros2_control - core system interface plugin and resources
  • mujoco_ros2_control_msgs - message/service definitions used by the plugin
  • mujoco_ros2_control_demos - demo launch files, configs and example robots
  • mujoco_ros2_control_tests - integration / launch tests and simple examples
  • docker/ - Dockerfiles and scripts to run CI/containers

Key features

  • Full ros2_control SystemInterface plugin for MuJoCo
  • MJCF/URDF conversion utilities to auto-generate MuJoCo models
  • Example demos showing basic control, PID and transmission setups

Quick start

There are two common ways to get running: build from source (recommended) or install prebuilt binaries (if available for your distribution).

  • Build from source (recommended)

    1. Install required dependencies manually or from rosdep, including the mujoco_vendor package, if available. Otherwise MuJoCo will will be downloaded at build time.

    2. Build the workspace (example with a sourced ROS 2 installation):

  # from workspace root (this repository is typically inside a ROS 2 workspace)
  colcon build --symlink-install --packages-select mujoco_ros2_control* \
    --cmake-args -DCMAKE_BUILD_TYPE=Release
  
  1. Source the workspace and run a demo:
  source install/setup.bash
  ros2 launch mujoco_ros2_control_demos demo.launch.py
  
  • Install prebuilt binaries (if available)

    If your ROS 2 distribution or your OS package index provides prebuilt packages for mujoco_ros2_control, you can install those instead of compiling from source. Check your distribution’s package repositories or the project’s GitHub releases for available binary artifacts.

    Example (Debian/Ubuntu with ROS packages — replace <distro>):

  sudo apt update
  sudo apt install ros-<distro>-mujoco-ros2-control
  

After installing binaries, source your ROS install and run a demo:

  source /opt/ros/<distro>/setup.bash
  ros2 launch mujoco_ros2_control_demos demo.launch.py
  

See mujoco_ros2_control/README.md for detailed usage, configuration examples and mappings between MJCF actuators/sensors and ros2_control interfaces.

Supported ROS 2 distributions

  • The project is developed and tested against multiple ROS 2 distributions. This README includes basic notes for: Humble, Kilted, Jazzy and Rolling.

Support matrix

Distribution Status
Humble Supported
Kilted Supported
Jazzy Supported
Rolling Supported (development)

Contributing

  • Contributions, bug reports and feature requests are welcome. Please follow standard ROS Controls project workflows: open issues, send PRs against the main branch and respect the repository code style using pre-commit.

License & maintainers

  • This repository is distributed under the terms of the LICENSE file (LICENSE). Maintainers and authors are listed in the Git history and package manifests (package.xml) inside each package.

Repository Summary

Description
Checkout URI https://github.com/moveit/mujoco_ros2_control.git
VCS Type git
VCS Version main
Last Updated 2025-09-25
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

mujoco_ros2_control

License

Overview

This repository contains a ROS2 control package for Mujoco simulation, offering the MujocoSystem plugin to integrate ros2_control with Mujoco. Additionally, it includes a node responsible for initializing the plugin, Mujoco rendering, and the simulation.

Installation Guide

Follow these steps to install and run the project locally.

Prerequisites

Make sure you have the following software installed if you are running on the local machine:

Package Install

Before build this package configure environment variable for mujoco directory.

export MUJOCO_DIR=/PATH/TO/MUJOCO/mujoco-3.x.x

You can now compile the package using the following commands.

cd mujoco_ros2_control
source /opt/ros/${ROS_DISTRO}/setup.bash
colcon build

Usage

See the documentation for usage.

Docker

A basic containerized workflow is provided to test this package in isolation. For more information refer to the docker documentation.

Future Work

Here are several potential areas for future improvement:

  1. Sensors: Implement IMU sensors, and range sensors.

  2. Loading Model From URDF: Implement direct loading of models from URDF, eliminating the need to convert URDF files to XML.

Feel free to suggest ideas for new features or improvements.

CONTRIBUTING

Contributing to mujoco_ros2_control

Thank you for considering contributing to our project! We welcome contributions in all forms, from bug fixes and documentation improvements to new features. Please read our guidelines carefully and ensure you follow contribution guidelines throughout your participation.

How to Contribute

1. Reporting Issues

  • Check Existing Issues: Before opening a new issue, please search through the existing issues to see if someone else has already reported it.
  • Bug Reports: If you find a bug, please open an issue with a detailed description and, if possible, steps to reproduce it.
  • Feature Requests: For new features or improvements, please open an issue to discuss the idea before starting work.

2. Submitting Pull Requests

When you’re ready to contribute code or documentation, please follow these steps:

  • Click the “Fork” button at the top right of the repository page to create your own copy.
  • Clone your forked repository.
  • Create a feature branch.
  • Implement your feature or bug fix.
  • Before submitting your pull request, run the following commands to ensure everything is in order:
# Run Unit/Integration Tests
colcon test

# Run Pre-Commit Hooks
pre-commit run -a

  • Commit and push your changes
  • Open a pull request

License

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Thank You

We appreciate your time and effort in contributing to our project.

# Contributing to mujoco_ros2_control Thank you for considering contributing to our project! We welcome contributions in all forms, from bug fixes and documentation improvements to new features. Please read our guidelines carefully and ensure you follow contribution guidelines throughout your participation. ## How to Contribute ### 1. Reporting Issues - **Check Existing Issues:** Before opening a new issue, please search through the existing issues to see if someone else has already reported it. - **Bug Reports:** If you find a bug, please open an issue with a detailed description and, if possible, steps to reproduce it. - **Feature Requests:** For new features or improvements, please open an issue to discuss the idea before starting work. ### 2. Submitting Pull Requests When you're ready to contribute code or documentation, please follow these steps: - Click the "Fork" button at the top right of the repository page to create your own copy. - Clone your forked repository. - Create a feature branch. - Implement your feature or bug fix. - **Before submitting your pull request, run the following commands to ensure everything is in order:** ```bash # Run Unit/Integration Tests colcon test ``` ```bash # Run Pre-Commit Hooks pre-commit run -a ``` - Commit and push your changes - Open a pull request ## License Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT). ## Thank You We appreciate your time and effort in contributing to our project.
No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Description Provides a ROS 2 control hardware interface for the MuJoCo physics simulator, including plugins for various sensors, RGB-D cameras, and lidar.
Checkout URI https://github.com/ros-controls/mujoco_ros2_control.git
VCS Type git
VCS Version main
Last Updated 2026-02-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

MuJoCo ros2_control

Rdev Kdev Jdev CI License Codecov

This repository provides a ros2_control system interface and supporting packages to run ROS 2 controllers against the MuJoCo physics simulator.

This project wraps MuJoCo as a hardware/system interface so you can use the ros2_control stack (controller manager, controllers, controller interfaces) against simulated robots based on MJCF or generated from URDF.

Contents

  • mujoco_ros2_control - core system interface plugin and resources
  • mujoco_ros2_control_msgs - message/service definitions used by the plugin
  • mujoco_ros2_control_demos - demo launch files, configs and example robots
  • mujoco_ros2_control_tests - integration / launch tests and simple examples
  • docker/ - Dockerfiles and scripts to run CI/containers

Key features

  • Full ros2_control SystemInterface plugin for MuJoCo
  • MJCF/URDF conversion utilities to auto-generate MuJoCo models
  • Example demos showing basic control, PID and transmission setups

Quick start

There are two common ways to get running: build from source (recommended) or install prebuilt binaries (if available for your distribution).

  • Build from source (recommended)

    1. Install required dependencies manually or from rosdep, including the mujoco_vendor package, if available. Otherwise MuJoCo will will be downloaded at build time.

    2. Build the workspace (example with a sourced ROS 2 installation):

  # from workspace root (this repository is typically inside a ROS 2 workspace)
  colcon build --symlink-install --packages-select mujoco_ros2_control* \
    --cmake-args -DCMAKE_BUILD_TYPE=Release
  
  1. Source the workspace and run a demo:
  source install/setup.bash
  ros2 launch mujoco_ros2_control_demos demo.launch.py
  
  • Install prebuilt binaries (if available)

    If your ROS 2 distribution or your OS package index provides prebuilt packages for mujoco_ros2_control, you can install those instead of compiling from source. Check your distribution’s package repositories or the project’s GitHub releases for available binary artifacts.

    Example (Debian/Ubuntu with ROS packages — replace <distro>):

  sudo apt update
  sudo apt install ros-<distro>-mujoco-ros2-control
  

After installing binaries, source your ROS install and run a demo:

  source /opt/ros/<distro>/setup.bash
  ros2 launch mujoco_ros2_control_demos demo.launch.py
  

See mujoco_ros2_control/README.md for detailed usage, configuration examples and mappings between MJCF actuators/sensors and ros2_control interfaces.

Supported ROS 2 distributions

  • The project is developed and tested against multiple ROS 2 distributions. This README includes basic notes for: Humble, Kilted, Jazzy and Rolling.

Support matrix

Distribution Status
Humble Supported
Kilted Supported
Jazzy Supported
Rolling Supported (development)

Contributing

  • Contributions, bug reports and feature requests are welcome. Please follow standard ROS Controls project workflows: open issues, send PRs against the main branch and respect the repository code style using pre-commit.

License & maintainers

  • This repository is distributed under the terms of the LICENSE file (LICENSE). Maintainers and authors are listed in the Git history and package manifests (package.xml) inside each package.
No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Description Provides a ROS 2 control hardware interface for the MuJoCo physics simulator, including plugins for various sensors, RGB-D cameras, and lidar.
Checkout URI https://github.com/ros-controls/mujoco_ros2_control.git
VCS Type git
VCS Version main
Last Updated 2026-02-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

MuJoCo ros2_control

Rdev Kdev Jdev CI License Codecov

This repository provides a ros2_control system interface and supporting packages to run ROS 2 controllers against the MuJoCo physics simulator.

This project wraps MuJoCo as a hardware/system interface so you can use the ros2_control stack (controller manager, controllers, controller interfaces) against simulated robots based on MJCF or generated from URDF.

Contents

  • mujoco_ros2_control - core system interface plugin and resources
  • mujoco_ros2_control_msgs - message/service definitions used by the plugin
  • mujoco_ros2_control_demos - demo launch files, configs and example robots
  • mujoco_ros2_control_tests - integration / launch tests and simple examples
  • docker/ - Dockerfiles and scripts to run CI/containers

Key features

  • Full ros2_control SystemInterface plugin for MuJoCo
  • MJCF/URDF conversion utilities to auto-generate MuJoCo models
  • Example demos showing basic control, PID and transmission setups

Quick start

There are two common ways to get running: build from source (recommended) or install prebuilt binaries (if available for your distribution).

  • Build from source (recommended)

    1. Install required dependencies manually or from rosdep, including the mujoco_vendor package, if available. Otherwise MuJoCo will will be downloaded at build time.

    2. Build the workspace (example with a sourced ROS 2 installation):

  # from workspace root (this repository is typically inside a ROS 2 workspace)
  colcon build --symlink-install --packages-select mujoco_ros2_control* \
    --cmake-args -DCMAKE_BUILD_TYPE=Release
  
  1. Source the workspace and run a demo:
  source install/setup.bash
  ros2 launch mujoco_ros2_control_demos demo.launch.py
  
  • Install prebuilt binaries (if available)

    If your ROS 2 distribution or your OS package index provides prebuilt packages for mujoco_ros2_control, you can install those instead of compiling from source. Check your distribution’s package repositories or the project’s GitHub releases for available binary artifacts.

    Example (Debian/Ubuntu with ROS packages — replace <distro>):

  sudo apt update
  sudo apt install ros-<distro>-mujoco-ros2-control
  

After installing binaries, source your ROS install and run a demo:

  source /opt/ros/<distro>/setup.bash
  ros2 launch mujoco_ros2_control_demos demo.launch.py
  

See mujoco_ros2_control/README.md for detailed usage, configuration examples and mappings between MJCF actuators/sensors and ros2_control interfaces.

Supported ROS 2 distributions

  • The project is developed and tested against multiple ROS 2 distributions. This README includes basic notes for: Humble, Kilted, Jazzy and Rolling.

Support matrix

Distribution Status
Humble Supported
Kilted Supported
Jazzy Supported
Rolling Supported (development)

Contributing

  • Contributions, bug reports and feature requests are welcome. Please follow standard ROS Controls project workflows: open issues, send PRs against the main branch and respect the repository code style using pre-commit.

License & maintainers

  • This repository is distributed under the terms of the LICENSE file (LICENSE). Maintainers and authors are listed in the Git history and package manifests (package.xml) inside each package.
No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Description Provides a ROS 2 control hardware interface for the MuJoCo physics simulator, including plugins for various sensors, RGB-D cameras, and lidar.
Checkout URI https://github.com/ros-controls/mujoco_ros2_control.git
VCS Type git
VCS Version main
Last Updated 2026-02-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

MuJoCo ros2_control

Rdev Kdev Jdev CI License Codecov

This repository provides a ros2_control system interface and supporting packages to run ROS 2 controllers against the MuJoCo physics simulator.

This project wraps MuJoCo as a hardware/system interface so you can use the ros2_control stack (controller manager, controllers, controller interfaces) against simulated robots based on MJCF or generated from URDF.

Contents

  • mujoco_ros2_control - core system interface plugin and resources
  • mujoco_ros2_control_msgs - message/service definitions used by the plugin
  • mujoco_ros2_control_demos - demo launch files, configs and example robots
  • mujoco_ros2_control_tests - integration / launch tests and simple examples
  • docker/ - Dockerfiles and scripts to run CI/containers

Key features

  • Full ros2_control SystemInterface plugin for MuJoCo
  • MJCF/URDF conversion utilities to auto-generate MuJoCo models
  • Example demos showing basic control, PID and transmission setups

Quick start

There are two common ways to get running: build from source (recommended) or install prebuilt binaries (if available for your distribution).

  • Build from source (recommended)

    1. Install required dependencies manually or from rosdep, including the mujoco_vendor package, if available. Otherwise MuJoCo will will be downloaded at build time.

    2. Build the workspace (example with a sourced ROS 2 installation):

  # from workspace root (this repository is typically inside a ROS 2 workspace)
  colcon build --symlink-install --packages-select mujoco_ros2_control* \
    --cmake-args -DCMAKE_BUILD_TYPE=Release
  
  1. Source the workspace and run a demo:
  source install/setup.bash
  ros2 launch mujoco_ros2_control_demos demo.launch.py
  
  • Install prebuilt binaries (if available)

    If your ROS 2 distribution or your OS package index provides prebuilt packages for mujoco_ros2_control, you can install those instead of compiling from source. Check your distribution’s package repositories or the project’s GitHub releases for available binary artifacts.

    Example (Debian/Ubuntu with ROS packages — replace <distro>):

  sudo apt update
  sudo apt install ros-<distro>-mujoco-ros2-control
  

After installing binaries, source your ROS install and run a demo:

  source /opt/ros/<distro>/setup.bash
  ros2 launch mujoco_ros2_control_demos demo.launch.py
  

See mujoco_ros2_control/README.md for detailed usage, configuration examples and mappings between MJCF actuators/sensors and ros2_control interfaces.

Supported ROS 2 distributions

  • The project is developed and tested against multiple ROS 2 distributions. This README includes basic notes for: Humble, Kilted, Jazzy and Rolling.

Support matrix

Distribution Status
Humble Supported
Kilted Supported
Jazzy Supported
Rolling Supported (development)

Contributing

  • Contributions, bug reports and feature requests are welcome. Please follow standard ROS Controls project workflows: open issues, send PRs against the main branch and respect the repository code style using pre-commit.

License & maintainers

  • This repository is distributed under the terms of the LICENSE file (LICENSE). Maintainers and authors are listed in the Git history and package manifests (package.xml) inside each package.
No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Description Provides a ROS 2 control hardware interface for the MuJoCo physics simulator, including plugins for various sensors, RGB-D cameras, and lidar.
Checkout URI https://github.com/ros-controls/mujoco_ros2_control.git
VCS Type git
VCS Version main
Last Updated 2026-02-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

MuJoCo ros2_control

Rdev Kdev Jdev CI License Codecov

This repository provides a ros2_control system interface and supporting packages to run ROS 2 controllers against the MuJoCo physics simulator.

This project wraps MuJoCo as a hardware/system interface so you can use the ros2_control stack (controller manager, controllers, controller interfaces) against simulated robots based on MJCF or generated from URDF.

Contents

  • mujoco_ros2_control - core system interface plugin and resources
  • mujoco_ros2_control_msgs - message/service definitions used by the plugin
  • mujoco_ros2_control_demos - demo launch files, configs and example robots
  • mujoco_ros2_control_tests - integration / launch tests and simple examples
  • docker/ - Dockerfiles and scripts to run CI/containers

Key features

  • Full ros2_control SystemInterface plugin for MuJoCo
  • MJCF/URDF conversion utilities to auto-generate MuJoCo models
  • Example demos showing basic control, PID and transmission setups

Quick start

There are two common ways to get running: build from source (recommended) or install prebuilt binaries (if available for your distribution).

  • Build from source (recommended)

    1. Install required dependencies manually or from rosdep, including the mujoco_vendor package, if available. Otherwise MuJoCo will will be downloaded at build time.

    2. Build the workspace (example with a sourced ROS 2 installation):

  # from workspace root (this repository is typically inside a ROS 2 workspace)
  colcon build --symlink-install --packages-select mujoco_ros2_control* \
    --cmake-args -DCMAKE_BUILD_TYPE=Release
  
  1. Source the workspace and run a demo:
  source install/setup.bash
  ros2 launch mujoco_ros2_control_demos demo.launch.py
  
  • Install prebuilt binaries (if available)

    If your ROS 2 distribution or your OS package index provides prebuilt packages for mujoco_ros2_control, you can install those instead of compiling from source. Check your distribution’s package repositories or the project’s GitHub releases for available binary artifacts.

    Example (Debian/Ubuntu with ROS packages — replace <distro>):

  sudo apt update
  sudo apt install ros-<distro>-mujoco-ros2-control
  

After installing binaries, source your ROS install and run a demo:

  source /opt/ros/<distro>/setup.bash
  ros2 launch mujoco_ros2_control_demos demo.launch.py
  

See mujoco_ros2_control/README.md for detailed usage, configuration examples and mappings between MJCF actuators/sensors and ros2_control interfaces.

Supported ROS 2 distributions

  • The project is developed and tested against multiple ROS 2 distributions. This README includes basic notes for: Humble, Kilted, Jazzy and Rolling.

Support matrix

Distribution Status
Humble Supported
Kilted Supported
Jazzy Supported
Rolling Supported (development)

Contributing

  • Contributions, bug reports and feature requests are welcome. Please follow standard ROS Controls project workflows: open issues, send PRs against the main branch and respect the repository code style using pre-commit.

License & maintainers

  • This repository is distributed under the terms of the LICENSE file (LICENSE). Maintainers and authors are listed in the Git history and package manifests (package.xml) inside each package.