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