google-deepmind / mujoco_mpc

Real-time behaviour synthesis with MuJoCo, using Predictive Control
https://github.com/deepmind/mujoco_mpc
Apache License 2.0
898 stars 130 forks source link

implemented humanoid bench tasks with unitree H1 robot in mujoco mpc #328

Open MoritzMeser opened 1 month ago

google-cla[bot] commented 1 month ago

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

thowell commented 1 month ago

Thanks for the contribution! It looks like these tasks are based on HumanoidBench? What kinds of success are you seeing with these tasks using MJPC?

MoritzMeser commented 1 month ago

That's right, it's based on HumanoidBench.

The success of tasks like standing and walking is very good. In terms of reward, these tasks are as good as solved, even if the behavior seems very unrealistic. (Like jumping on one leg).

However, there is no success in more complicated tasks, where the robot has to interact with objects.

thowell commented 1 month ago

This is excellent work!

We should think about the best way to manage merging all of this code since the PR is quite large (+2000 file changes). I think the best route is to open an issue where we can have all discussion about this set of humanoid benchmark tasks. We can then work on smaller PRs consisting of a single task (or a small number). This makes reviews more manageable.

I had a number of thoughts/comments (in no particular order) as I looked at code:

  1. We should prioritize merging in tasks that are "solved" with MJPC. This could be with any of the planners.
  2. We should (re-)formulate the HumanoidBench rewards for MJPC's cost functions. This will enable gradient-based planners to work better.
  3. The reward/cost weights should be made available in the GUI.
  4. The robot and scene assets should be fetched instead of directly added to MJPC. HumanoidBench can be added like MuJoCo Menagerie to the CMakelists.txt and then assets can be copied to and modified in the tasks directory.
  5. Where possible, we should make the tasks agnostic to the humanoid model. Ideally, we could swap models for the Unitree G1.

As next steps:

Sound good?

MoritzMeser commented 1 month ago

Thanks for taking the time to review my pull request. Your plan sounds like a good approach to manage this integration.

I will reach out to you once the steps you mention are implemented.

Thanks again for your guidance. I look forward to our collaboration.