JdeRobot / JdeRobot/RoboticsInfrastructure

Add support for microduck

Open
#807 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
65
Forks
75
Avg merge
4h 9m
Merged PRs (30d)
8

Description

@mshooter and I would like to add an example to Robotics Academy using Pollen Robotics’ [microduck](https://github.com/pollen-robotics/microduck). To do that, @jmplaza advised to first add support for microduck in this repo.

In this issue, we would like to confirm with the community that our understanding and approach is correct. We have been doing a bit of research but we are new to robotics, so feel free to correct any understanding that may be off!

## RoboticsInfrastructure and RoboticsAcademy

RoboticsInfrastructure is where the robots and worlds live. RoboticsAcademy is where exercise code and documentation live. RoboticsAcademy pulls the RoboticsInfrastructure repo as a dependency.

The RoboticsInfrastructure repository holds robots not included in the official ROS or Gazebo packages. Most (or is it all?) of the RoboticsAcademy examples rely on Gazebo as the “backend” simulator. The examples show the student a live view of the simulated robot in the browser. That view is produced by Gazebo and piped through the existing plumbing

## microduck policies may need re-validating

The microduck runs policies trained in MuJoCo (specifically, mjlab see [here](https://github.com/pollen-robotics/microduck_rl)). If I understand correctly, this means that even though a URDF for the duck exists (see [here](https://github.com/adityakamath/microduck_description) for example) and the geometry converts easily, physics may not. In particular, [the linked repo](https://github.com/adityakamath/microduck_description) seems to aim for visualisation in Gazebo, not simulation. In practice, this means that the MuJoCo-trained policies provided by Pollen Robotics may need re-validating for Gazebo.

Since re-validating all current and future microduck shipped policies would mean a significant effort (and affect long-term sustainability), we were wondering: is there a way to quickly assess how likely this risk is?

Claude suggested loading [the duck URDF](https://github.com/adityakamath/microduck_description) in Gazebo and try running one of the shipped policies against it. Is this what you would recommend?

## Non-Gazebo backend

Alternatively, is a non-Gazebo backend something you'd consider, given the policies are MuJoCo-trained? Maybe supporting MuJoCo-based approaches would expand the space of possible exercises.

However, it seems that a MuJoCo exercise would need to render frames in a way that does not rely on Gazebo, and get them into the browser. Is there a simple way to do this?

Would it be worth it to draft a standalone demo? E.g. the duck walking in MuJoCo, streamed to a browser, driven by Robotics Academy-style Python with `HAL.setVelocity()`. This was suggested by Claude too.

I understand that even on the MuJoCo route we'd likely still touch RoboticsInfrastructure, because launchers and the database registration live here (and probably the MJCF and the ONNX policy too?).

Let us know what you think about these two possible paths. We are happy to try a few things before committing to one of the two.

Btw @jmplaza also suggested checking the Unitree case as a reference, but I couldn’t find it in the repo. Would you mind pointing us to it?

Thanks!

Contributor guide

Open the contributing guide

Research direction

No implementation file or test is named. Start by reviewing how RoboticsInfrastructure registers robots, launchers, URDF/MJCF assets, and policies, then inspect the existing Unitree case if it can be located. Done means the community has selected and documented a supported Gazebo or MuJoCo path, including how a policy is validated and how frames reach the browser.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, python
Domain
robotics
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.