ubi-agni / mujoco_ros_pkgs

Wrappers, tools and additional API's for using ROS with MuJoCo
54 stars 11 forks source link
mujoco robotics ros simulation

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 2.3.7) 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-2.3.7 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.

  4. Build with catkin_build, catkin b or colcon build.

  5. 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 https://github.com/ros/actionlib/pull/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.