Microduck ROS 2 Integration: Running Policies in MuJoCo with ROS 2

Hi everyone! :waving_hand:

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!

GitHub: GitHub - Arjunros/microduck_ros2: ROS 2 simulation, skills, Nav2 navigation and LLM/voice control for Pollen Robotics' Microduck biped, in MuJoCo with the real BAM actuator model · GitHub

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-policies without modifying the original policies.

  • Actuator simulation: Uses the BAM XL330 actuator model.

  • Observation validation: Verified observations against infer_policy.py with an error tolerance of 1e-6.

  • ROS 2 interfaces:

    • /cmd_vel for 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 robotd behavior.

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.

Repository: GitHub - Arjunros/microduck_ros2: ROS 2 simulation, skills, Nav2 navigation and LLM/voice control for Pollen Robotics' Microduck biped, in MuJoCo with the real BAM actuator model · GitHub

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! :rocket: