|
mujoco_ros2_control_plugins package from mujoco_ros2_control repomujoco_ros2_control mujoco_ros2_control_demos mujoco_ros2_control_msgs mujoco_ros2_control_plugins mujoco_ros2_control_tests |
ROS Distro
|
Package Summary
| Version | 0.0.2 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/ros-controls/mujoco_ros2_control.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-29 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Nathan Dunkelberger
- Erik Holum
- Bence Magyar
- Denis Štogl
- Christoph Froehlich
- Sai Kishor Kothakota
Authors
- Sai Kishor Kothakota
mujoco_ros2_control_plugins
This package provides a plugin interface for extending the functionality of mujoco_ros2_control.
Overview
The mujoco_ros2_control_plugins package is designed to contain plugins that extend the capabilities of the main mujoco_ros2_control package. This separation allows for modular development and optional features without adding complexity to the core package.
[!NOTE] This interface provides flexibility for accessing information from the MuJoCo model and data. Users are responsible for handling that data correctly and avoiding changes to critical information.
Available Plugins
HeartbeatPublisherPlugin
A simple demonstration plugin that publishes a heartbeat message every second to the /mujoco_heartbeat topic.
| Topic |
mujoco_heartbeat (std_msgs/String) |
| Rate | 1 Hz |
| Message format | "MuJoCo ROS2 Control Heartbeat #N \| Simulation time: Xs" |
ExternalWrenchPlugin
Applies one or more external wrenches (force + torque) to named MuJoCo bodies for configurable durations via a ROS 2 service. Multiple wrenches can be submitted in a single call and each expires independently.
| Service |
~/apply_wrench (mujoco_ros2_control_msgs/srv/ApplyExternalWrench) |
| Topic |
~/wrench_markers (visualization_msgs/msg/MarkerArray) |
Service request
The request contains a single wrenches field of type mujoco_ros2_control_msgs/ExternalWrenchArray, which holds an array of ExternalWrench messages. All wrenches in the array are validated atomically — if any body name is unknown the entire request is rejected and nothing is applied.
Each ExternalWrench in the array has:
| Field | Type | Description |
|---|---|---|
wrench.header.frame_id |
string |
MuJoCo body name (must match the MJCF <body name="...">) |
wrench.wrench.force |
geometry_msgs/Vector3 |
Linear force [N] expressed in the body (link) frame. Rotates with the body every simulation step. |
wrench.wrench.torque |
geometry_msgs/Vector3 |
Angular moment [N·m] expressed in the body (link) frame. Rotates with the body every simulation step. |
application_point |
geometry_msgs/Point |
Force application point in the body (link) frame (relative to body frame origin, metres). Zero → apply at the body frame origin. |
duration |
builtin_interfaces/Duration |
How long the wrench remains active. Zero → single simulation step. |
ramp_down_duration |
builtin_interfaces/Duration |
Duration over which the wrench linearly ramps from full magnitude to zero at the end of duration. Zero → no ramp-down. |
Service response fields
| Field | Type | Description |
|---|---|---|
success |
bool |
false if any body name was not found in the model |
message |
string |
Human-readable status or error description |
Example: apply a 10 N push along X for 2 seconds at a 10 cm offset, with a 0.5 s ramp-down
This applies a constant force of 10 N for 1.5 seconds and then decays linearly over the next 0.5 seconds.
ros2 service call /external_wrench/apply_wrench \
mujoco_ros2_control_msgs/srv/ApplyExternalWrench \
"{
wrenches: {
external_wrenches: [
{
wrench: {
header: {frame_id: 'base_link'},
wrench: {
force: {x: 10.0, y: 0.0, z: 0.0},
torque: {x: 0.0, y: 0.0, z: 0.0}
}
},
application_point: {x: 0.1, y: 0.0, z: 0.0},
duration: {sec: 2, nanosec: 0},
ramp_down_duration: {sec: 0, nanosec: 500000000}
}
]
}
}"
Example: apply two simultaneous wrenches in a single call
```bash
ros2 service call /mujoco_ros2_control/my_plugin/apply_wrench
mujoco_ros2_control_msgs/srv/ApplyExternalWrench
“{
wrenches: {
external_wrenches: [
{
wrench: {header: {frame_id: ‘link_a’}, wrench: {force: {x: 5.0, y: 0.0, z: 0.0}}},
duration: {sec: 1, nanosec: 0}
},
{
wrench: {header: {frame_id: ‘link_b’}, wrench: {force: {x: 0.0, y: -3.0, z: 0.0}}},
duration: {sec: 1, nanosec: 0}
}
File truncated at 100 lines see the full file
Changelog for package mujoco_ros2_control_plugins
0.0.2 (2026-03-17)
- [Feature] MuJoCo ros2 control plugins (#133)
- Contributors: Sai Kishor Kothakota, Erik Holum
0.0.1 (2026-02-24)
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| backward_ros | |
| mujoco_vendor | |
| rclcpp | |
| realtime_tools | |
| ros2_control_cmake | |
| pluginlib | |
| std_msgs | |
| geometry_msgs | |
| visualization_msgs | |
| mujoco_ros2_control_msgs |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mujoco_ros2_control |
Launch files
Messages
Services
Plugins
Recent questions tagged mujoco_ros2_control_plugins at Robotics Stack Exchange
|
mujoco_ros2_control_plugins package from mujoco_ros2_control repomujoco_ros2_control mujoco_ros2_control_demos mujoco_ros2_control_msgs mujoco_ros2_control_plugins mujoco_ros2_control_tests |
ROS Distro
|
Package Summary
| Version | 0.0.2 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/ros-controls/mujoco_ros2_control.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-29 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Nathan Dunkelberger
- Erik Holum
- Bence Magyar
- Denis Štogl
- Christoph Froehlich
- Sai Kishor Kothakota
Authors
- Sai Kishor Kothakota
mujoco_ros2_control_plugins
This package provides a plugin interface for extending the functionality of mujoco_ros2_control.
Overview
The mujoco_ros2_control_plugins package is designed to contain plugins that extend the capabilities of the main mujoco_ros2_control package. This separation allows for modular development and optional features without adding complexity to the core package.
[!NOTE] This interface provides flexibility for accessing information from the MuJoCo model and data. Users are responsible for handling that data correctly and avoiding changes to critical information.
Available Plugins
HeartbeatPublisherPlugin
A simple demonstration plugin that publishes a heartbeat message every second to the /mujoco_heartbeat topic.
| Topic |
mujoco_heartbeat (std_msgs/String) |
| Rate | 1 Hz |
| Message format | "MuJoCo ROS2 Control Heartbeat #N \| Simulation time: Xs" |
ExternalWrenchPlugin
Applies one or more external wrenches (force + torque) to named MuJoCo bodies for configurable durations via a ROS 2 service. Multiple wrenches can be submitted in a single call and each expires independently.
| Service |
~/apply_wrench (mujoco_ros2_control_msgs/srv/ApplyExternalWrench) |
| Topic |
~/wrench_markers (visualization_msgs/msg/MarkerArray) |
Service request
The request contains a single wrenches field of type mujoco_ros2_control_msgs/ExternalWrenchArray, which holds an array of ExternalWrench messages. All wrenches in the array are validated atomically — if any body name is unknown the entire request is rejected and nothing is applied.
Each ExternalWrench in the array has:
| Field | Type | Description |
|---|---|---|
wrench.header.frame_id |
string |
MuJoCo body name (must match the MJCF <body name="...">) |
wrench.wrench.force |
geometry_msgs/Vector3 |
Linear force [N] expressed in the body (link) frame. Rotates with the body every simulation step. |
wrench.wrench.torque |
geometry_msgs/Vector3 |
Angular moment [N·m] expressed in the body (link) frame. Rotates with the body every simulation step. |
application_point |
geometry_msgs/Point |
Force application point in the body (link) frame (relative to body frame origin, metres). Zero → apply at the body frame origin. |
duration |
builtin_interfaces/Duration |
How long the wrench remains active. Zero → single simulation step. |
ramp_down_duration |
builtin_interfaces/Duration |
Duration over which the wrench linearly ramps from full magnitude to zero at the end of duration. Zero → no ramp-down. |
Service response fields
| Field | Type | Description |
|---|---|---|
success |
bool |
false if any body name was not found in the model |
message |
string |
Human-readable status or error description |
Example: apply a 10 N push along X for 2 seconds at a 10 cm offset, with a 0.5 s ramp-down
This applies a constant force of 10 N for 1.5 seconds and then decays linearly over the next 0.5 seconds.
ros2 service call /external_wrench/apply_wrench \
mujoco_ros2_control_msgs/srv/ApplyExternalWrench \
"{
wrenches: {
external_wrenches: [
{
wrench: {
header: {frame_id: 'base_link'},
wrench: {
force: {x: 10.0, y: 0.0, z: 0.0},
torque: {x: 0.0, y: 0.0, z: 0.0}
}
},
application_point: {x: 0.1, y: 0.0, z: 0.0},
duration: {sec: 2, nanosec: 0},
ramp_down_duration: {sec: 0, nanosec: 500000000}
}
]
}
}"
Example: apply two simultaneous wrenches in a single call
```bash
ros2 service call /mujoco_ros2_control/my_plugin/apply_wrench
mujoco_ros2_control_msgs/srv/ApplyExternalWrench
“{
wrenches: {
external_wrenches: [
{
wrench: {header: {frame_id: ‘link_a’}, wrench: {force: {x: 5.0, y: 0.0, z: 0.0}}},
duration: {sec: 1, nanosec: 0}
},
{
wrench: {header: {frame_id: ‘link_b’}, wrench: {force: {x: 0.0, y: -3.0, z: 0.0}}},
duration: {sec: 1, nanosec: 0}
}
File truncated at 100 lines see the full file
Changelog for package mujoco_ros2_control_plugins
0.0.2 (2026-03-17)
- [Feature] MuJoCo ros2 control plugins (#133)
- Contributors: Sai Kishor Kothakota, Erik Holum
0.0.1 (2026-02-24)
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| backward_ros | |
| mujoco_vendor | |
| rclcpp | |
| realtime_tools | |
| ros2_control_cmake | |
| pluginlib | |
| std_msgs | |
| geometry_msgs | |
| visualization_msgs | |
| mujoco_ros2_control_msgs |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mujoco_ros2_control |
Launch files
Messages
Services
Plugins
Recent questions tagged mujoco_ros2_control_plugins at Robotics Stack Exchange
|
mujoco_ros2_control_plugins package from mujoco_ros2_control repomujoco_ros2_control mujoco_ros2_control_demos mujoco_ros2_control_msgs mujoco_ros2_control_plugins mujoco_ros2_control_tests |
ROS Distro
|
Package Summary
| Version | 0.0.2 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/ros-controls/mujoco_ros2_control.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-29 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Nathan Dunkelberger
- Erik Holum
- Bence Magyar
- Denis Štogl
- Christoph Froehlich
- Sai Kishor Kothakota
Authors
- Sai Kishor Kothakota
mujoco_ros2_control_plugins
This package provides a plugin interface for extending the functionality of mujoco_ros2_control.
Overview
The mujoco_ros2_control_plugins package is designed to contain plugins that extend the capabilities of the main mujoco_ros2_control package. This separation allows for modular development and optional features without adding complexity to the core package.
[!NOTE] This interface provides flexibility for accessing information from the MuJoCo model and data. Users are responsible for handling that data correctly and avoiding changes to critical information.
Available Plugins
HeartbeatPublisherPlugin
A simple demonstration plugin that publishes a heartbeat message every second to the /mujoco_heartbeat topic.
| Topic |
mujoco_heartbeat (std_msgs/String) |
| Rate | 1 Hz |
| Message format | "MuJoCo ROS2 Control Heartbeat #N \| Simulation time: Xs" |
ExternalWrenchPlugin
Applies one or more external wrenches (force + torque) to named MuJoCo bodies for configurable durations via a ROS 2 service. Multiple wrenches can be submitted in a single call and each expires independently.
| Service |
~/apply_wrench (mujoco_ros2_control_msgs/srv/ApplyExternalWrench) |
| Topic |
~/wrench_markers (visualization_msgs/msg/MarkerArray) |
Service request
The request contains a single wrenches field of type mujoco_ros2_control_msgs/ExternalWrenchArray, which holds an array of ExternalWrench messages. All wrenches in the array are validated atomically — if any body name is unknown the entire request is rejected and nothing is applied.
Each ExternalWrench in the array has:
| Field | Type | Description |
|---|---|---|
wrench.header.frame_id |
string |
MuJoCo body name (must match the MJCF <body name="...">) |
wrench.wrench.force |
geometry_msgs/Vector3 |
Linear force [N] expressed in the body (link) frame. Rotates with the body every simulation step. |
wrench.wrench.torque |
geometry_msgs/Vector3 |
Angular moment [N·m] expressed in the body (link) frame. Rotates with the body every simulation step. |
application_point |
geometry_msgs/Point |
Force application point in the body (link) frame (relative to body frame origin, metres). Zero → apply at the body frame origin. |
duration |
builtin_interfaces/Duration |
How long the wrench remains active. Zero → single simulation step. |
ramp_down_duration |
builtin_interfaces/Duration |
Duration over which the wrench linearly ramps from full magnitude to zero at the end of duration. Zero → no ramp-down. |
Service response fields
| Field | Type | Description |
|---|---|---|
success |
bool |
false if any body name was not found in the model |
message |
string |
Human-readable status or error description |
Example: apply a 10 N push along X for 2 seconds at a 10 cm offset, with a 0.5 s ramp-down
This applies a constant force of 10 N for 1.5 seconds and then decays linearly over the next 0.5 seconds.
ros2 service call /external_wrench/apply_wrench \
mujoco_ros2_control_msgs/srv/ApplyExternalWrench \
"{
wrenches: {
external_wrenches: [
{
wrench: {
header: {frame_id: 'base_link'},
wrench: {
force: {x: 10.0, y: 0.0, z: 0.0},
torque: {x: 0.0, y: 0.0, z: 0.0}
}
},
application_point: {x: 0.1, y: 0.0, z: 0.0},
duration: {sec: 2, nanosec: 0},
ramp_down_duration: {sec: 0, nanosec: 500000000}
}
]
}
}"
Example: apply two simultaneous wrenches in a single call
```bash
ros2 service call /mujoco_ros2_control/my_plugin/apply_wrench
mujoco_ros2_control_msgs/srv/ApplyExternalWrench
“{
wrenches: {
external_wrenches: [
{
wrench: {header: {frame_id: ‘link_a’}, wrench: {force: {x: 5.0, y: 0.0, z: 0.0}}},
duration: {sec: 1, nanosec: 0}
},
{
wrench: {header: {frame_id: ‘link_b’}, wrench: {force: {x: 0.0, y: -3.0, z: 0.0}}},
duration: {sec: 1, nanosec: 0}
}
File truncated at 100 lines see the full file
Changelog for package mujoco_ros2_control_plugins
0.0.2 (2026-03-17)
- [Feature] MuJoCo ros2 control plugins (#133)
- Contributors: Sai Kishor Kothakota, Erik Holum
0.0.1 (2026-02-24)
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| backward_ros | |
| mujoco_vendor | |
| rclcpp | |
| realtime_tools | |
| ros2_control_cmake | |
| pluginlib | |
| std_msgs | |
| geometry_msgs | |
| visualization_msgs | |
| mujoco_ros2_control_msgs |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mujoco_ros2_control |
Launch files
Messages
Services
Plugins
Recent questions tagged mujoco_ros2_control_plugins at Robotics Stack Exchange
|
mujoco_ros2_control_plugins package from mujoco_ros2_control repomujoco_ros2_control mujoco_ros2_control_demos mujoco_ros2_control_msgs mujoco_ros2_control_plugins mujoco_ros2_control_tests |
ROS Distro
|
Package Summary
| Version | 0.0.2 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/ros-controls/mujoco_ros2_control.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-29 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Nathan Dunkelberger
- Erik Holum
- Bence Magyar
- Denis Štogl
- Christoph Froehlich
- Sai Kishor Kothakota
Authors
- Sai Kishor Kothakota
mujoco_ros2_control_plugins
This package provides a plugin interface for extending the functionality of mujoco_ros2_control.
Overview
The mujoco_ros2_control_plugins package is designed to contain plugins that extend the capabilities of the main mujoco_ros2_control package. This separation allows for modular development and optional features without adding complexity to the core package.
[!NOTE] This interface provides flexibility for accessing information from the MuJoCo model and data. Users are responsible for handling that data correctly and avoiding changes to critical information.
Available Plugins
HeartbeatPublisherPlugin
A simple demonstration plugin that publishes a heartbeat message every second to the /mujoco_heartbeat topic.
| Topic |
mujoco_heartbeat (std_msgs/String) |
| Rate | 1 Hz |
| Message format | "MuJoCo ROS2 Control Heartbeat #N \| Simulation time: Xs" |
ExternalWrenchPlugin
Applies one or more external wrenches (force + torque) to named MuJoCo bodies for configurable durations via a ROS 2 service. Multiple wrenches can be submitted in a single call and each expires independently.
| Service |
~/apply_wrench (mujoco_ros2_control_msgs/srv/ApplyExternalWrench) |
| Topic |
~/wrench_markers (visualization_msgs/msg/MarkerArray) |
Service request
The request contains a single wrenches field of type mujoco_ros2_control_msgs/ExternalWrenchArray, which holds an array of ExternalWrench messages. All wrenches in the array are validated atomically — if any body name is unknown the entire request is rejected and nothing is applied.
Each ExternalWrench in the array has:
| Field | Type | Description |
|---|---|---|
wrench.header.frame_id |
string |
MuJoCo body name (must match the MJCF <body name="...">) |
wrench.wrench.force |
geometry_msgs/Vector3 |
Linear force [N] expressed in the body (link) frame. Rotates with the body every simulation step. |
wrench.wrench.torque |
geometry_msgs/Vector3 |
Angular moment [N·m] expressed in the body (link) frame. Rotates with the body every simulation step. |
application_point |
geometry_msgs/Point |
Force application point in the body (link) frame (relative to body frame origin, metres). Zero → apply at the body frame origin. |
duration |
builtin_interfaces/Duration |
How long the wrench remains active. Zero → single simulation step. |
ramp_down_duration |
builtin_interfaces/Duration |
Duration over which the wrench linearly ramps from full magnitude to zero at the end of duration. Zero → no ramp-down. |
Service response fields
| Field | Type | Description |
|---|---|---|
success |
bool |
false if any body name was not found in the model |
message |
string |
Human-readable status or error description |
Example: apply a 10 N push along X for 2 seconds at a 10 cm offset, with a 0.5 s ramp-down
This applies a constant force of 10 N for 1.5 seconds and then decays linearly over the next 0.5 seconds.
ros2 service call /external_wrench/apply_wrench \
mujoco_ros2_control_msgs/srv/ApplyExternalWrench \
"{
wrenches: {
external_wrenches: [
{
wrench: {
header: {frame_id: 'base_link'},
wrench: {
force: {x: 10.0, y: 0.0, z: 0.0},
torque: {x: 0.0, y: 0.0, z: 0.0}
}
},
application_point: {x: 0.1, y: 0.0, z: 0.0},
duration: {sec: 2, nanosec: 0},
ramp_down_duration: {sec: 0, nanosec: 500000000}
}
]
}
}"
Example: apply two simultaneous wrenches in a single call
```bash
ros2 service call /mujoco_ros2_control/my_plugin/apply_wrench
mujoco_ros2_control_msgs/srv/ApplyExternalWrench
“{
wrenches: {
external_wrenches: [
{
wrench: {header: {frame_id: ‘link_a’}, wrench: {force: {x: 5.0, y: 0.0, z: 0.0}}},
duration: {sec: 1, nanosec: 0}
},
{
wrench: {header: {frame_id: ‘link_b’}, wrench: {force: {x: 0.0, y: -3.0, z: 0.0}}},
duration: {sec: 1, nanosec: 0}
}
File truncated at 100 lines see the full file
Changelog for package mujoco_ros2_control_plugins
0.0.2 (2026-03-17)
- [Feature] MuJoCo ros2 control plugins (#133)
- Contributors: Sai Kishor Kothakota, Erik Holum
0.0.1 (2026-02-24)
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| backward_ros | |
| mujoco_vendor | |
| rclcpp | |
| realtime_tools | |
| ros2_control_cmake | |
| pluginlib | |
| std_msgs | |
| geometry_msgs | |
| visualization_msgs | |
| mujoco_ros2_control_msgs |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mujoco_ros2_control |
Launch files
Messages
Services
Plugins
Recent questions tagged mujoco_ros2_control_plugins at Robotics Stack Exchange
|
mujoco_ros2_control_plugins package from mujoco_ros2_control repomujoco_ros2_control mujoco_ros2_control_demos mujoco_ros2_control_msgs mujoco_ros2_control_plugins mujoco_ros2_control_tests |
ROS Distro
|
Package Summary
| Version | 0.0.2 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/ros-controls/mujoco_ros2_control.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-29 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Nathan Dunkelberger
- Erik Holum
- Bence Magyar
- Denis Štogl
- Christoph Froehlich
- Sai Kishor Kothakota
Authors
- Sai Kishor Kothakota
mujoco_ros2_control_plugins
This package provides a plugin interface for extending the functionality of mujoco_ros2_control.
Overview
The mujoco_ros2_control_plugins package is designed to contain plugins that extend the capabilities of the main mujoco_ros2_control package. This separation allows for modular development and optional features without adding complexity to the core package.
[!NOTE] This interface provides flexibility for accessing information from the MuJoCo model and data. Users are responsible for handling that data correctly and avoiding changes to critical information.
Available Plugins
HeartbeatPublisherPlugin
A simple demonstration plugin that publishes a heartbeat message every second to the /mujoco_heartbeat topic.
| Topic |
mujoco_heartbeat (std_msgs/String) |
| Rate | 1 Hz |
| Message format | "MuJoCo ROS2 Control Heartbeat #N \| Simulation time: Xs" |
ExternalWrenchPlugin
Applies one or more external wrenches (force + torque) to named MuJoCo bodies for configurable durations via a ROS 2 service. Multiple wrenches can be submitted in a single call and each expires independently.
| Service |
~/apply_wrench (mujoco_ros2_control_msgs/srv/ApplyExternalWrench) |
| Topic |
~/wrench_markers (visualization_msgs/msg/MarkerArray) |
Service request
The request contains a single wrenches field of type mujoco_ros2_control_msgs/ExternalWrenchArray, which holds an array of ExternalWrench messages. All wrenches in the array are validated atomically — if any body name is unknown the entire request is rejected and nothing is applied.
Each ExternalWrench in the array has:
| Field | Type | Description |
|---|---|---|
wrench.header.frame_id |
string |
MuJoCo body name (must match the MJCF <body name="...">) |
wrench.wrench.force |
geometry_msgs/Vector3 |
Linear force [N] expressed in the body (link) frame. Rotates with the body every simulation step. |
wrench.wrench.torque |
geometry_msgs/Vector3 |
Angular moment [N·m] expressed in the body (link) frame. Rotates with the body every simulation step. |
application_point |
geometry_msgs/Point |
Force application point in the body (link) frame (relative to body frame origin, metres). Zero → apply at the body frame origin. |
duration |
builtin_interfaces/Duration |
How long the wrench remains active. Zero → single simulation step. |
ramp_down_duration |
builtin_interfaces/Duration |
Duration over which the wrench linearly ramps from full magnitude to zero at the end of duration. Zero → no ramp-down. |
Service response fields
| Field | Type | Description |
|---|---|---|
success |
bool |
false if any body name was not found in the model |
message |
string |
Human-readable status or error description |
Example: apply a 10 N push along X for 2 seconds at a 10 cm offset, with a 0.5 s ramp-down
This applies a constant force of 10 N for 1.5 seconds and then decays linearly over the next 0.5 seconds.
ros2 service call /external_wrench/apply_wrench \
mujoco_ros2_control_msgs/srv/ApplyExternalWrench \
"{
wrenches: {
external_wrenches: [
{
wrench: {
header: {frame_id: 'base_link'},
wrench: {
force: {x: 10.0, y: 0.0, z: 0.0},
torque: {x: 0.0, y: 0.0, z: 0.0}
}
},
application_point: {x: 0.1, y: 0.0, z: 0.0},
duration: {sec: 2, nanosec: 0},
ramp_down_duration: {sec: 0, nanosec: 500000000}
}
]
}
}"
Example: apply two simultaneous wrenches in a single call
```bash
ros2 service call /mujoco_ros2_control/my_plugin/apply_wrench
mujoco_ros2_control_msgs/srv/ApplyExternalWrench
“{
wrenches: {
external_wrenches: [
{
wrench: {header: {frame_id: ‘link_a’}, wrench: {force: {x: 5.0, y: 0.0, z: 0.0}}},
duration: {sec: 1, nanosec: 0}
},
{
wrench: {header: {frame_id: ‘link_b’}, wrench: {force: {x: 0.0, y: -3.0, z: 0.0}}},
duration: {sec: 1, nanosec: 0}
}
File truncated at 100 lines see the full file
Changelog for package mujoco_ros2_control_plugins
0.0.2 (2026-03-17)
- [Feature] MuJoCo ros2 control plugins (#133)
- Contributors: Sai Kishor Kothakota, Erik Holum
0.0.1 (2026-02-24)
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| backward_ros | |
| mujoco_vendor | |
| rclcpp | |
| realtime_tools | |
| ros2_control_cmake | |
| pluginlib | |
| std_msgs | |
| geometry_msgs | |
| visualization_msgs | |
| mujoco_ros2_control_msgs |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mujoco_ros2_control |
Launch files
Messages
Services
Plugins
Recent questions tagged mujoco_ros2_control_plugins at Robotics Stack Exchange
|
mujoco_ros2_control_plugins package from mujoco_ros2_control repomujoco_ros2_control mujoco_ros2_control_demos mujoco_ros2_control_msgs mujoco_ros2_control_plugins mujoco_ros2_control_tests |
ROS Distro
|
Package Summary
| Version | 0.0.2 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/ros-controls/mujoco_ros2_control.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-29 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Nathan Dunkelberger
- Erik Holum
- Bence Magyar
- Denis Štogl
- Christoph Froehlich
- Sai Kishor Kothakota
Authors
- Sai Kishor Kothakota
mujoco_ros2_control_plugins
This package provides a plugin interface for extending the functionality of mujoco_ros2_control.
Overview
The mujoco_ros2_control_plugins package is designed to contain plugins that extend the capabilities of the main mujoco_ros2_control package. This separation allows for modular development and optional features without adding complexity to the core package.
[!NOTE] This interface provides flexibility for accessing information from the MuJoCo model and data. Users are responsible for handling that data correctly and avoiding changes to critical information.
Available Plugins
HeartbeatPublisherPlugin
A simple demonstration plugin that publishes a heartbeat message every second to the /mujoco_heartbeat topic.
| Topic |
mujoco_heartbeat (std_msgs/String) |
| Rate | 1 Hz |
| Message format | "MuJoCo ROS2 Control Heartbeat #N \| Simulation time: Xs" |
ExternalWrenchPlugin
Applies one or more external wrenches (force + torque) to named MuJoCo bodies for configurable durations via a ROS 2 service. Multiple wrenches can be submitted in a single call and each expires independently.
| Service |
~/apply_wrench (mujoco_ros2_control_msgs/srv/ApplyExternalWrench) |
| Topic |
~/wrench_markers (visualization_msgs/msg/MarkerArray) |
Service request
The request contains a single wrenches field of type mujoco_ros2_control_msgs/ExternalWrenchArray, which holds an array of ExternalWrench messages. All wrenches in the array are validated atomically — if any body name is unknown the entire request is rejected and nothing is applied.
Each ExternalWrench in the array has:
| Field | Type | Description |
|---|---|---|
wrench.header.frame_id |
string |
MuJoCo body name (must match the MJCF <body name="...">) |
wrench.wrench.force |
geometry_msgs/Vector3 |
Linear force [N] expressed in the body (link) frame. Rotates with the body every simulation step. |
wrench.wrench.torque |
geometry_msgs/Vector3 |
Angular moment [N·m] expressed in the body (link) frame. Rotates with the body every simulation step. |
application_point |
geometry_msgs/Point |
Force application point in the body (link) frame (relative to body frame origin, metres). Zero → apply at the body frame origin. |
duration |
builtin_interfaces/Duration |
How long the wrench remains active. Zero → single simulation step. |
ramp_down_duration |
builtin_interfaces/Duration |
Duration over which the wrench linearly ramps from full magnitude to zero at the end of duration. Zero → no ramp-down. |
Service response fields
| Field | Type | Description |
|---|---|---|
success |
bool |
false if any body name was not found in the model |
message |
string |
Human-readable status or error description |
Example: apply a 10 N push along X for 2 seconds at a 10 cm offset, with a 0.5 s ramp-down
This applies a constant force of 10 N for 1.5 seconds and then decays linearly over the next 0.5 seconds.
ros2 service call /external_wrench/apply_wrench \
mujoco_ros2_control_msgs/srv/ApplyExternalWrench \
"{
wrenches: {
external_wrenches: [
{
wrench: {
header: {frame_id: 'base_link'},
wrench: {
force: {x: 10.0, y: 0.0, z: 0.0},
torque: {x: 0.0, y: 0.0, z: 0.0}
}
},
application_point: {x: 0.1, y: 0.0, z: 0.0},
duration: {sec: 2, nanosec: 0},
ramp_down_duration: {sec: 0, nanosec: 500000000}
}
]
}
}"
Example: apply two simultaneous wrenches in a single call
```bash
ros2 service call /mujoco_ros2_control/my_plugin/apply_wrench
mujoco_ros2_control_msgs/srv/ApplyExternalWrench
“{
wrenches: {
external_wrenches: [
{
wrench: {header: {frame_id: ‘link_a’}, wrench: {force: {x: 5.0, y: 0.0, z: 0.0}}},
duration: {sec: 1, nanosec: 0}
},
{
wrench: {header: {frame_id: ‘link_b’}, wrench: {force: {x: 0.0, y: -3.0, z: 0.0}}},
duration: {sec: 1, nanosec: 0}
}
File truncated at 100 lines see the full file
Changelog for package mujoco_ros2_control_plugins
0.0.2 (2026-03-17)
- [Feature] MuJoCo ros2 control plugins (#133)
- Contributors: Sai Kishor Kothakota, Erik Holum
0.0.1 (2026-02-24)
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| backward_ros | |
| mujoco_vendor | |
| rclcpp | |
| realtime_tools | |
| ros2_control_cmake | |
| pluginlib | |
| std_msgs | |
| geometry_msgs | |
| visualization_msgs | |
| mujoco_ros2_control_msgs |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mujoco_ros2_control |
Launch files
Messages
Services
Plugins
Recent questions tagged mujoco_ros2_control_plugins at Robotics Stack Exchange
|
mujoco_ros2_control_plugins package from mujoco_ros2_control repomujoco_ros2_control mujoco_ros2_control_demos mujoco_ros2_control_msgs mujoco_ros2_control_plugins mujoco_ros2_control_tests |
ROS Distro
|
Package Summary
| Version | 0.0.2 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/ros-controls/mujoco_ros2_control.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-29 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Nathan Dunkelberger
- Erik Holum
- Bence Magyar
- Denis Štogl
- Christoph Froehlich
- Sai Kishor Kothakota
Authors
- Sai Kishor Kothakota
mujoco_ros2_control_plugins
This package provides a plugin interface for extending the functionality of mujoco_ros2_control.
Overview
The mujoco_ros2_control_plugins package is designed to contain plugins that extend the capabilities of the main mujoco_ros2_control package. This separation allows for modular development and optional features without adding complexity to the core package.
[!NOTE] This interface provides flexibility for accessing information from the MuJoCo model and data. Users are responsible for handling that data correctly and avoiding changes to critical information.
Available Plugins
HeartbeatPublisherPlugin
A simple demonstration plugin that publishes a heartbeat message every second to the /mujoco_heartbeat topic.
| Topic |
mujoco_heartbeat (std_msgs/String) |
| Rate | 1 Hz |
| Message format | "MuJoCo ROS2 Control Heartbeat #N \| Simulation time: Xs" |
ExternalWrenchPlugin
Applies one or more external wrenches (force + torque) to named MuJoCo bodies for configurable durations via a ROS 2 service. Multiple wrenches can be submitted in a single call and each expires independently.
| Service |
~/apply_wrench (mujoco_ros2_control_msgs/srv/ApplyExternalWrench) |
| Topic |
~/wrench_markers (visualization_msgs/msg/MarkerArray) |
Service request
The request contains a single wrenches field of type mujoco_ros2_control_msgs/ExternalWrenchArray, which holds an array of ExternalWrench messages. All wrenches in the array are validated atomically — if any body name is unknown the entire request is rejected and nothing is applied.
Each ExternalWrench in the array has:
| Field | Type | Description |
|---|---|---|
wrench.header.frame_id |
string |
MuJoCo body name (must match the MJCF <body name="...">) |
wrench.wrench.force |
geometry_msgs/Vector3 |
Linear force [N] expressed in the body (link) frame. Rotates with the body every simulation step. |
wrench.wrench.torque |
geometry_msgs/Vector3 |
Angular moment [N·m] expressed in the body (link) frame. Rotates with the body every simulation step. |
application_point |
geometry_msgs/Point |
Force application point in the body (link) frame (relative to body frame origin, metres). Zero → apply at the body frame origin. |
duration |
builtin_interfaces/Duration |
How long the wrench remains active. Zero → single simulation step. |
ramp_down_duration |
builtin_interfaces/Duration |
Duration over which the wrench linearly ramps from full magnitude to zero at the end of duration. Zero → no ramp-down. |
Service response fields
| Field | Type | Description |
|---|---|---|
success |
bool |
false if any body name was not found in the model |
message |
string |
Human-readable status or error description |
Example: apply a 10 N push along X for 2 seconds at a 10 cm offset, with a 0.5 s ramp-down
This applies a constant force of 10 N for 1.5 seconds and then decays linearly over the next 0.5 seconds.
ros2 service call /external_wrench/apply_wrench \
mujoco_ros2_control_msgs/srv/ApplyExternalWrench \
"{
wrenches: {
external_wrenches: [
{
wrench: {
header: {frame_id: 'base_link'},
wrench: {
force: {x: 10.0, y: 0.0, z: 0.0},
torque: {x: 0.0, y: 0.0, z: 0.0}
}
},
application_point: {x: 0.1, y: 0.0, z: 0.0},
duration: {sec: 2, nanosec: 0},
ramp_down_duration: {sec: 0, nanosec: 500000000}
}
]
}
}"
Example: apply two simultaneous wrenches in a single call
```bash
ros2 service call /mujoco_ros2_control/my_plugin/apply_wrench
mujoco_ros2_control_msgs/srv/ApplyExternalWrench
“{
wrenches: {
external_wrenches: [
{
wrench: {header: {frame_id: ‘link_a’}, wrench: {force: {x: 5.0, y: 0.0, z: 0.0}}},
duration: {sec: 1, nanosec: 0}
},
{
wrench: {header: {frame_id: ‘link_b’}, wrench: {force: {x: 0.0, y: -3.0, z: 0.0}}},
duration: {sec: 1, nanosec: 0}
}
File truncated at 100 lines see the full file
Changelog for package mujoco_ros2_control_plugins
0.0.2 (2026-03-17)
- [Feature] MuJoCo ros2 control plugins (#133)
- Contributors: Sai Kishor Kothakota, Erik Holum
0.0.1 (2026-02-24)
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| backward_ros | |
| mujoco_vendor | |
| rclcpp | |
| realtime_tools | |
| ros2_control_cmake | |
| pluginlib | |
| std_msgs | |
| geometry_msgs | |
| visualization_msgs | |
| mujoco_ros2_control_msgs |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mujoco_ros2_control |
Launch files
Messages
Services
Plugins
Recent questions tagged mujoco_ros2_control_plugins at Robotics Stack Exchange
|
mujoco_ros2_control_plugins package from mujoco_ros2_control repomujoco_ros2_control mujoco_ros2_control_demos mujoco_ros2_control_msgs mujoco_ros2_control_plugins mujoco_ros2_control_tests |
ROS Distro
|
Package Summary
| Version | 0.0.2 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/ros-controls/mujoco_ros2_control.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-29 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Nathan Dunkelberger
- Erik Holum
- Bence Magyar
- Denis Štogl
- Christoph Froehlich
- Sai Kishor Kothakota
Authors
- Sai Kishor Kothakota
mujoco_ros2_control_plugins
This package provides a plugin interface for extending the functionality of mujoco_ros2_control.
Overview
The mujoco_ros2_control_plugins package is designed to contain plugins that extend the capabilities of the main mujoco_ros2_control package. This separation allows for modular development and optional features without adding complexity to the core package.
[!NOTE] This interface provides flexibility for accessing information from the MuJoCo model and data. Users are responsible for handling that data correctly and avoiding changes to critical information.
Available Plugins
HeartbeatPublisherPlugin
A simple demonstration plugin that publishes a heartbeat message every second to the /mujoco_heartbeat topic.
| Topic |
mujoco_heartbeat (std_msgs/String) |
| Rate | 1 Hz |
| Message format | "MuJoCo ROS2 Control Heartbeat #N \| Simulation time: Xs" |
ExternalWrenchPlugin
Applies one or more external wrenches (force + torque) to named MuJoCo bodies for configurable durations via a ROS 2 service. Multiple wrenches can be submitted in a single call and each expires independently.
| Service |
~/apply_wrench (mujoco_ros2_control_msgs/srv/ApplyExternalWrench) |
| Topic |
~/wrench_markers (visualization_msgs/msg/MarkerArray) |
Service request
The request contains a single wrenches field of type mujoco_ros2_control_msgs/ExternalWrenchArray, which holds an array of ExternalWrench messages. All wrenches in the array are validated atomically — if any body name is unknown the entire request is rejected and nothing is applied.
Each ExternalWrench in the array has:
| Field | Type | Description |
|---|---|---|
wrench.header.frame_id |
string |
MuJoCo body name (must match the MJCF <body name="...">) |
wrench.wrench.force |
geometry_msgs/Vector3 |
Linear force [N] expressed in the body (link) frame. Rotates with the body every simulation step. |
wrench.wrench.torque |
geometry_msgs/Vector3 |
Angular moment [N·m] expressed in the body (link) frame. Rotates with the body every simulation step. |
application_point |
geometry_msgs/Point |
Force application point in the body (link) frame (relative to body frame origin, metres). Zero → apply at the body frame origin. |
duration |
builtin_interfaces/Duration |
How long the wrench remains active. Zero → single simulation step. |
ramp_down_duration |
builtin_interfaces/Duration |
Duration over which the wrench linearly ramps from full magnitude to zero at the end of duration. Zero → no ramp-down. |
Service response fields
| Field | Type | Description |
|---|---|---|
success |
bool |
false if any body name was not found in the model |
message |
string |
Human-readable status or error description |
Example: apply a 10 N push along X for 2 seconds at a 10 cm offset, with a 0.5 s ramp-down
This applies a constant force of 10 N for 1.5 seconds and then decays linearly over the next 0.5 seconds.
ros2 service call /external_wrench/apply_wrench \
mujoco_ros2_control_msgs/srv/ApplyExternalWrench \
"{
wrenches: {
external_wrenches: [
{
wrench: {
header: {frame_id: 'base_link'},
wrench: {
force: {x: 10.0, y: 0.0, z: 0.0},
torque: {x: 0.0, y: 0.0, z: 0.0}
}
},
application_point: {x: 0.1, y: 0.0, z: 0.0},
duration: {sec: 2, nanosec: 0},
ramp_down_duration: {sec: 0, nanosec: 500000000}
}
]
}
}"
Example: apply two simultaneous wrenches in a single call
```bash
ros2 service call /mujoco_ros2_control/my_plugin/apply_wrench
mujoco_ros2_control_msgs/srv/ApplyExternalWrench
“{
wrenches: {
external_wrenches: [
{
wrench: {header: {frame_id: ‘link_a’}, wrench: {force: {x: 5.0, y: 0.0, z: 0.0}}},
duration: {sec: 1, nanosec: 0}
},
{
wrench: {header: {frame_id: ‘link_b’}, wrench: {force: {x: 0.0, y: -3.0, z: 0.0}}},
duration: {sec: 1, nanosec: 0}
}
File truncated at 100 lines see the full file
Changelog for package mujoco_ros2_control_plugins
0.0.2 (2026-03-17)
- [Feature] MuJoCo ros2 control plugins (#133)
- Contributors: Sai Kishor Kothakota, Erik Holum
0.0.1 (2026-02-24)
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| backward_ros | |
| mujoco_vendor | |
| rclcpp | |
| realtime_tools | |
| ros2_control_cmake | |
| pluginlib | |
| std_msgs | |
| geometry_msgs | |
| visualization_msgs | |
| mujoco_ros2_control_msgs |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mujoco_ros2_control |
Launch files
Messages
Services
Plugins
Recent questions tagged mujoco_ros2_control_plugins at Robotics Stack Exchange
|
mujoco_ros2_control_plugins package from mujoco_ros2_control repomujoco_ros2_control mujoco_ros2_control_demos mujoco_ros2_control_msgs mujoco_ros2_control_plugins mujoco_ros2_control_tests |
ROS Distro
|
Package Summary
| Version | 0.0.2 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/ros-controls/mujoco_ros2_control.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-29 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Nathan Dunkelberger
- Erik Holum
- Bence Magyar
- Denis Štogl
- Christoph Froehlich
- Sai Kishor Kothakota
Authors
- Sai Kishor Kothakota
mujoco_ros2_control_plugins
This package provides a plugin interface for extending the functionality of mujoco_ros2_control.
Overview
The mujoco_ros2_control_plugins package is designed to contain plugins that extend the capabilities of the main mujoco_ros2_control package. This separation allows for modular development and optional features without adding complexity to the core package.
[!NOTE] This interface provides flexibility for accessing information from the MuJoCo model and data. Users are responsible for handling that data correctly and avoiding changes to critical information.
Available Plugins
HeartbeatPublisherPlugin
A simple demonstration plugin that publishes a heartbeat message every second to the /mujoco_heartbeat topic.
| Topic |
mujoco_heartbeat (std_msgs/String) |
| Rate | 1 Hz |
| Message format | "MuJoCo ROS2 Control Heartbeat #N \| Simulation time: Xs" |
ExternalWrenchPlugin
Applies one or more external wrenches (force + torque) to named MuJoCo bodies for configurable durations via a ROS 2 service. Multiple wrenches can be submitted in a single call and each expires independently.
| Service |
~/apply_wrench (mujoco_ros2_control_msgs/srv/ApplyExternalWrench) |
| Topic |
~/wrench_markers (visualization_msgs/msg/MarkerArray) |
Service request
The request contains a single wrenches field of type mujoco_ros2_control_msgs/ExternalWrenchArray, which holds an array of ExternalWrench messages. All wrenches in the array are validated atomically — if any body name is unknown the entire request is rejected and nothing is applied.
Each ExternalWrench in the array has:
| Field | Type | Description |
|---|---|---|
wrench.header.frame_id |
string |
MuJoCo body name (must match the MJCF <body name="...">) |
wrench.wrench.force |
geometry_msgs/Vector3 |
Linear force [N] expressed in the body (link) frame. Rotates with the body every simulation step. |
wrench.wrench.torque |
geometry_msgs/Vector3 |
Angular moment [N·m] expressed in the body (link) frame. Rotates with the body every simulation step. |
application_point |
geometry_msgs/Point |
Force application point in the body (link) frame (relative to body frame origin, metres). Zero → apply at the body frame origin. |
duration |
builtin_interfaces/Duration |
How long the wrench remains active. Zero → single simulation step. |
ramp_down_duration |
builtin_interfaces/Duration |
Duration over which the wrench linearly ramps from full magnitude to zero at the end of duration. Zero → no ramp-down. |
Service response fields
| Field | Type | Description |
|---|---|---|
success |
bool |
false if any body name was not found in the model |
message |
string |
Human-readable status or error description |
Example: apply a 10 N push along X for 2 seconds at a 10 cm offset, with a 0.5 s ramp-down
This applies a constant force of 10 N for 1.5 seconds and then decays linearly over the next 0.5 seconds.
ros2 service call /external_wrench/apply_wrench \
mujoco_ros2_control_msgs/srv/ApplyExternalWrench \
"{
wrenches: {
external_wrenches: [
{
wrench: {
header: {frame_id: 'base_link'},
wrench: {
force: {x: 10.0, y: 0.0, z: 0.0},
torque: {x: 0.0, y: 0.0, z: 0.0}
}
},
application_point: {x: 0.1, y: 0.0, z: 0.0},
duration: {sec: 2, nanosec: 0},
ramp_down_duration: {sec: 0, nanosec: 500000000}
}
]
}
}"
Example: apply two simultaneous wrenches in a single call
```bash
ros2 service call /mujoco_ros2_control/my_plugin/apply_wrench
mujoco_ros2_control_msgs/srv/ApplyExternalWrench
“{
wrenches: {
external_wrenches: [
{
wrench: {header: {frame_id: ‘link_a’}, wrench: {force: {x: 5.0, y: 0.0, z: 0.0}}},
duration: {sec: 1, nanosec: 0}
},
{
wrench: {header: {frame_id: ‘link_b’}, wrench: {force: {x: 0.0, y: -3.0, z: 0.0}}},
duration: {sec: 1, nanosec: 0}
}
File truncated at 100 lines see the full file
Changelog for package mujoco_ros2_control_plugins
0.0.2 (2026-03-17)
- [Feature] MuJoCo ros2 control plugins (#133)
- Contributors: Sai Kishor Kothakota, Erik Holum
0.0.1 (2026-02-24)
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| backward_ros | |
| mujoco_vendor | |
| rclcpp | |
| realtime_tools | |
| ros2_control_cmake | |
| pluginlib | |
| std_msgs | |
| geometry_msgs | |
| visualization_msgs | |
| mujoco_ros2_control_msgs |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mujoco_ros2_control |