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.
mujoco_ros2_control- core system interface plugin and resourcesmujoco_ros2_control_msgs- message/service definitions used by the pluginmujoco_ros2_control_demos- demo launch files, configs and example robotsmujoco_ros2_control_tests- integration / launch tests and simple examplesdocker/- Dockerfiles and scripts to run CI/containers
- 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
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)
-
Install required dependencies manually or from rosdep, including the
mujoco_vendorpackage, if available. Otherwise MuJoCo will will be downloaded at build time. -
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
- 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,JazzyandRolling.
| Distribution | Status |
|---|---|
| Humble | Supported |
| Kilted | Supported |
| Jazzy | Supported |
| Rolling | Supported (development) |
- Contributions, bug reports and feature requests are welcome. Please follow standard ROS Controls project workflows: open issues, send PRs against the
mainbranch and respect the repository code style usingpre-commit.
- 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.