Multi-Contact Whole-Body Force Control for Position-Controlled Robots
Quentin Rouxel, Serena Ivaldi, Jean-Baptiste Mouret
TL;DR
The paper addresses the challenge of regulating contact forces on position-controlled robots during multi-contact tasks by modeling whole-body flexibility and deriving a derivative-based linearization of the quasi-static equilibrium. It introduces SEIKO, a two-stage, SQP-based pipeline consisting of SEIKO Retargeting (feasible posture and contact-wrench targets) and SEIKO Controller (QP to compute flexible-state corrections and commanded joint positions), enabling indirect control of contact forces via joint commands. The authors demonstrate real-time operation on the Talos humanoid at 500 Hz, with pushing, far-reaching, stair-climbing, and sloped-surface tasks, and show robustness to model errors through deliberate mass/load perturbations and contacting-mode transitions. This framework broadens the practical deployment of multi-contact strategies on existing position-controlled platforms by leveraging joint flexibility to achieve stable, safe, and aggressive contact behaviors.
Abstract
Many humanoid and multi-legged robots are controlled in positions rather than in torques, which prevents direct control of contact forces, and hampers their ability to create multiple contacts to enhance their balance, such as placing a hand on a wall or a handrail. This letter introduces the SEIKO (Sequential Equilibrium Inverse Kinematic Optimization) pipeline, and proposes a unified formulation that exploits an explicit model of flexibility to indirectly control contact forces on traditional position-controlled robots. SEIKO formulates whole-body retargeting from Cartesian commands and admittance control using two quadratic programs solved in real-time. Our pipeline is validated with experiments on the real, full-scale humanoid robot Talos in various multi-contact scenarios, including pushing tasks, far-reaching tasks, stair climbing, and stepping on sloped surfaces. Code and videos are available at: https://hucebot.github.io/seiko_controller_website/
