Skip to content

Whole-Body Humanoid MPC (wb_humanoid_mpc)

  • Software
  • Humanoids and robot learning
  • Library

A whole-body nonlinear model predictive controller for humanoid loco-manipulation, built on an extended version of ocs2, with a Unitree G1 example.

Source on GitHub: github.com/manumerous/wb_humanoid_mpc (opens in a new tab). Facts read at commit 6fb34bb (opens in a new tab).

Licenses

Code
BSD-3-Clause (opens in a new tab)

Read by Robotheca from LICENCE.txt (opens in a new tab) (BSD-3-Clause) at commit 6fb34bb (opens in a new tab), on 22 Oct 2026.

Commercial use
Yes

What it does

  • Optimizes humanoid motion in real time through full-order torque-level dynamics.
  • Offers a centroidal dynamics MPC that optimizes whole-body kinematics and center of mass dynamics, using either a single rigid body or full centroidal dynamics.
  • Offers a whole-body dynamics MPC that optimizes contact forces and joint accelerations, and can compute joint torques across the horizon.
  • Supports the Unitree G1 robot; a 1X Neo example is listed as coming soon.
  • Lets users command base velocity and root height via a robot base controller GUI or an Xbox joystick.
  • Provides Docker-based and local installation options built with colcon and ROS 2.

Written by Robotheca from the project's README (opens in a new tab) at commit 6fb34bb.

Getting started

Difficulty
Advanced
Hardware it needs, as the project states it
Building consumes significant RAM: 16 GiB system RAM with PARALLEL_JOBS=2 (default), 32 GiB with 4, and 64 GiB with 6. Runs on ROS 2; Jazzy is named in the install guide.

Maintenance

Status
Active: a commit in the last 90 days
Newest commit
18 Oct 2026 on main
Latest release
None published on GitHub

Checked on GitHub on 22 Oct 2026.

Robots that can run it

No robot on Robotheca is linked to it yet. Links come from a robot's robot.yaml, from its dependency files read as text, or from Robotheca's editors.

Robotheca lists software as a reference: nothing is hosted or run here, and every fact links to where it was read.