Skip to content

Wrappers, tools and additional API's for using ROS with MuJoCo

Notifications You must be signed in to change notification settings

ubi-agni/mujoco_ros_pkgs

Repository files navigation

MuJoCo ROS

Tools that combine the MuJoCo simulator with ROS. Meant to recreate a base port of gazebo_ros_pkgs for MuJoCo.

This is a ROS software Project that wraps the MuJoCo physics engine into a ROS package. It is an extension of the MuJoCo simulate program, with ROS integration and the possibility to load plugins via pluginlib.

ROS Versions

This project is mainly built for Ubuntu Focal with ROS Noetic. But we are working on adaptations for more recent Ubuntu systems with ROS One and Humble (ROS 2).

Continuous Integration

service Noetic / One Humble (coming soon)
GitHub Format CI -
CodeCov codecov -

Build Instructions

  1. Make sure MuJoCo is installed (the current build uses version 3.2.0) and runs on your machine.
  2. Create a new ROS workspace or include this repository into an existing workspace.
  3. Before building, make sure that your compiler knows where to find the MuJoCo library, e.g. by running
export MUJOCO_DIR=PATH/TO/MUJOCO/DIR
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MUJOCO_DIR/lib
export LIBRARY_PATH=$LIBRARY_PATH:$MUJOCO_DIR/lib

where PATH/TO/MUJOCO/DIR is ~/.mujoco/mujoco-3.2.0 if you used the recommended location to install mujoco (if downloaded as tarball). If you built MuJoCo from source and the install path is known to catkin, you can skip this step.

  1. Build with catkin_build, catkin b or colcon build.
  2. Source your workspace and try roslaunch mujoco_ros launch_server.launch use_sim_time:=true to test if it runs.

Warning To prevent action servers ignoring actions for a limited time after resetting the simulation, until ros/actionlib#203 is merged, you need to build the PR branch and any packages implementing action servers (like MoveIt) yourself.

Plugin Examples

As an example for extended functionality through plugins, take a look at mujoco_ros_control, mujoco_screw_plugin, mujoco_contact_surfaces or mujoco_ros_sensors.

We provide some code examples in our demo repository

Documentation

We are currently working on setting up more detailed documentation including tutorials and guides. The current prototype can be found here (though note that this will migrate once its ready for an initial proper release).

Some more structural and configuration info, which is not yet included in the documentation, can be found here.

Licensing

This work is licensed under the BSD 3-Clause License (see LICENSE). It is built on top of MuJoCo, which was released under an Apache 2.0 License. For the original MuJoCo and further third party licenses, see THIRD_PARTY_NOTICES.