Hi everyone! ![]()
I’ve been working on bringing Microduck into the ROS 2 ecosystem, and I’m excited to share that the integration is now open source!
What does it do?
The integration allows Microduck policies to run in MuJoCo while exposing the simulated robot through standard ROS 2 interfaces.
Some of the key features include:
-
Policy execution: Runs existing policies from
microduck-policieswithout modifying the original policies. -
Actuator simulation: Uses the BAM XL330 actuator model.
-
Observation validation: Verified observations against
infer_policy.pywith an error tolerance of 1e-6. -
ROS 2 interfaces:
-
/cmd_velfor velocity commands -
Joint states
-
IMU data
-
TF and URDF
-
Head camera feed, visualized in RViz
-
-
Skill integration: Existing skills such as kicks, roulade, ground pick, and sit/stand are exposed as ROS 2 services.
-
Manifest compatibility: Skill execution follows the rules defined in the robot’s manifest, consistent with
robotdbehavior.
Why this integration?
The goal is to make Microduck easier to work with using standard ROS 2 tools and workflows, while retaining the existing policy implementations.
This also provides a foundation for extending the platform with ROS 2 navigation, perception, and higher-level autonomy capabilities.
What’s next?
I’m currently planning to integrate Nav2 and explore how the ROS 2 stack can be extended to support autonomous navigation.
Looking for feedback!
I’d particularly appreciate feedback from developers who have:
-
Worked with ROS 2 and MuJoCo integrations.
-
Experimented with Microduck or the real duck hardware.
-
Integrated learned locomotion policies with ROS 2.
-
Worked on Nav2 integration for legged or humanoid robots.
I’ve attached a short demonstration of the integration.
Would love to hear your thoughts, suggestions, and experiences. Especially interested in feedback from anyone who has tested ROS 2 with the real Microduck hardware!
Thanks! ![]()