Cartpole with soft walls demo Cube pivoting demo

Graduate Research — DAIRLab, University of Pennsylvania — May 2025–Present

C3: Consensus Complementarity Control

C++ Python Drake Gurobi Contact-Implicit MPC CI/CD Bazel LCM

Making and breaking contact with the environment is one of the hardest problems in robotics. The moment a finger touches a box, a foot hits the ground, or a tool grips a surface, the system dynamics become nonsmooth — the physics jumps discontinuously. Traditional MPC and sampling-based controllers struggle here because they cannot reason across these contact transitions.

C3 (Consensus Complementarity Control) is a contact-implicit MPC framework, originally published by researchers at the DAIRLab, that solves this problem by reformulating contact as a complementarity constraint and using ADMM to decompose the resulting mixed-integer-like problem into parallel subproblems. The result is a controller that can plan through contact — deciding when and how to make or break contact as part of the trajectory optimization.

Plate balancing

Plate balancing via contact control

Push anything

Multi-object pushing from first sight

The algorithm was conceived and published by the DAIRLab research team (see publication below). My role is as lead developer and maintainer of the open-source reference implementation — responsible for turning the research prototype into a production-quality, contributor-ready codebase:

Current and upcoming work focuses on extending C3 to new hardware platforms and pushing toward a journal publication.

Related Publication: Push Anything

Hien B., Yufeiyang G., Haoran Y., Eric C., Siddhant M., Thomas Stephen Felix, Brian A., Bibit B., and Michael Posa.
Push Anything: Single- and Multi-Object Pushing From First Sight with Contact-Implicit MPC