Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange

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

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange

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

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange

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

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange

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

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange

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

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange

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

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange

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

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange

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

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange

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

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange

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

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange

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

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange

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

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange

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

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange

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

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange

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

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS2 control package for Mujoco simulation 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-10-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ros2_control wrapper for the MuJoCo Simulate application

Maintainers

  • Nathan Dunkelberger
  • Erik Holum
  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

No additional authors.

MuJoCo ros2_control Simulation

This package contains a ros2_control system interface for the MuJoCo Simulator. It was originally written for simulating robot hardware in NASA Johnson’s iMETRO facility.

The system interface wraps MuJoCo’s Simulate App to provide included functionality. Because the app is not bundled as a library, we compile it directly from a local install of MuJoCo.

Parts of this library are also based on the MoveIt mujoco_ros2_control package.

URDF Model Conversion

MuJoCo does not support the full feature set of xacro/URDFs in the ROS 2 ecosystem. Users are required to convert any existing robot description files to an MJCF format. We provide a highly experimental tool to automate URDF conversion — refer to the URDF to MJCF conversion documentation for details.

Hardware Interface Setup

The MuJoCo hardware interface is shipped as a ros2_control plugin. Specify it in your URDF and point to a valid MJCF:

<ros2_control name="MujocoSystem" type="system">
  <hardware>
    <plugin>mujoco_ros2_control/MujocoSystemInterface</plugin>
    <param name="mujoco_model">$(find my_description)/description/scene.xml</param>
  </hardware>
  ...

A custom ros2_control node is required due to compatibility requirements:

control_node = Node(
    package="mujoco_ros2_control",
    executable="ros2_control_node",
    output="both",
    parameters=[
        {"use_sim_time": True},
        controller_parameters,
    ],
)

For the full plugin parameter reference, joint control modes, gripper/mimic joint setup, sensors (FTS, IMU), cameras, and lidar configuration, see the hardware interface documentation.

Simulation Topics and Services

The simulator exposes ROS 2 topics and services for interacting with the simulation at runtime (pause, reset, step-by-step control, etc.). See the simulation topics and services documentation for details.

Test Robot System

While examples are limited, we maintain a functional example 2-dof robot system in the demos space (see mujoco_ros2_control_demos package). We generally recommend looking there for examples and recommended workflows.

Development

More information is provided in the developers guide.

Further Documentation

Document Description
Hardware Interface Plugin params, joints, sensors, cameras, lidar, topics, services, debugging
URDF to MJCF Conversion Conversion tool usage and MJCF schema reference
Modeling Tips Tips for modeling complex geometries in MuJoCo
Developers Guide Development workflows (Docker, pixi)
CHANGELOG

Changelog for package mujoco_ros2_control

0.1.3 (2026-10-08)

  • Add a way to replace collision meshes upon MJCF conversion (#310)
  • Fix constant 1ms physics loop sleep duration affecting high frequency simulations (#317)
  • Apply transmissions consistently in read() and write() (#313)
  • Align to default camera at startup (#316)
  • Log noise type and value of each of the sensor components (#314)
  • sibling links reuse already-decomposed collision meshes instead of redecomposing (#268)
  • Add support for simulating sensor noise (#307)
  • sets contype/conaffinity=0 on visual-only geoms and grouping (#267)
  • visual-only mesh fallback + visual/collision group split, refactors make_mjcf_from_robot_description.py to reuse the new logic (#265)
  • Use collision-tag meshes/info for collision geoms (primitives, STL/DAE/OBJ) (#264)
  • Contributors: Nathan Dunkelberger, Sai Kishor Kothakota, Sebastian Castro, Daniel Costanzi

0.1.2 (2026-09-07)

  • Add world_reset plugin hook and restore eq_active on world reset (#294)
  • Re-add conditional tinyxml2_vendor dependency (#293)
  • Remove deprecated tinyxml2_vendor dependency (#286)
  • Shut down ROS when the MuJoCo UI closes (#285)
  • Contributors: Bilal Gill, Dylan Gallagher, Erik Holum, Sai Kishor Kothakota

0.1.1 (2026-08-25)

  • Fix the generate changelog of 0.1.0 (#288)
  • Contributors: Sai Kishor Kothakota

0.1.0 (2026-08-18)

  • Add a pre-step callback to the simulation (#282)
  • Fix control mode selection (#281)
  • Support intvelocity actuators (#271)
  • Add base twist plugin for commanding the mobile base (#254)
  • Refine reset world overrides functionality (#263)
  • Support joint overrides in reset world service (#256)
  • Support multiple sets of state interfaces from multiple sensor tags with same name (#258)
  • [Fix] Don't overwrite transmission-driven joint states in the direct-copy fallback (#259)
  • [doc] Fix undefined label errors (#260)
  • Add support for Magnetometer sensor (#257)
  • [Feature] modify elements of geom attribute (#244)
  • Add missing dependencies (#250)
  • [CI] Fix dependency declarations for bloom (#226)
  • Fix transmissions integration working with multiple actuators (#241)
  • Add service to set the free joint body state (#233)
  • Fix links in interface docs, use auto label generator like the upstream (#238)
  • Fix state passed into pose sensors (#231)
  • Fix controller manager rate collapse by decoupling control and physics locks (#224)
  • Use updated ament_index_cpp interfaces, re-add rolling (#229)
  • Add a 3-D Lidar Extension (#205)
  • Add support for "site" transmission type (#154)
  • Add support for pose sensors (#220)

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 mujoco_ros2_control at Robotics Stack Exchange