What follows is an opinion piece I wrote in 2019 after our team ran a demo of humanoid robots at an Airbus factory. It was displayed on the site's landing page for a while, and is now saved here as a memory of thoughts from that time.
Systems for planning and balancing¶
I'm always wondering why we don't have abler mobile machines around us already. One reason, I thought at first, is that their control algorithms are designed to track narrow trajectories and they are only as smart as we are good at planning these trajectories. Digging in this direction, with Adrien Escande, Leonardo Lanari and Bastien Mallein, we found ways to generate more general bipedal trajectories that reflect height variations of the center of mass, for example when the robot climbs stairs. We then turned these trajectories into a controller by model predictive control.
Meanwhile, I was developing a walking controller for the Airbus demonstration, where the focus on robustness and repeatability strongly favored control systems with the least critical parameters to tune. In that context, more general trajectories were not a game changer. What helped more was the simplification using quadratic programming of the robot's stabilizer, which is the reflexive part that decides how to react to disturbances (roll the ankle? shift the pelvis? maybe tilt the torso as well?). On HRP-4 all these balancing behaviors ended up implemented by hand-tuned control systems such as linear feedback and linear model predictive control. The end result looked like this:
This behavior worked repeatably both in the lab and on-site at the factory, yet soon we wanted the robot to act smarter under perturbations. What if it starts leaning to the side during climbing, can it reach our for additional support? Maybe grab the handrail? What if we want the robot to push a workload while climbing, can we include an external force observer in the pipeline? The answers to all these questions are positive, but a key limitation of control systems is that system complexity grows superlinearly with the number of components. The more these components interact with each other, the more superlinearly this complexity grows, and the more challenging hand tuning all their parameters becomes. Consequently, there are diminishing returns to adding people or time to scale up a project, and we are hitting an invisible limit to the richness of robot behaviors we implement in practice with control systems.
This observation does not mean our robots' future is bleak! Only that it is not 100% made of control systems. HRP-4 and its fellow robots have the potential to walk and recover from disturbances in general scenarios, carry loads, see and feel enough from the world to react in meaningful ways. How do we get them to the next level? How can we make legged robots walk better?
To go further¶
The tutorial on prototyping a walking pattern generator goes step by step through the higher-level components of the walking controller from the demo. If you are at the stage of building your intuition, this Python example is for you.
The stabilizer relies on linear feedback of the 3D divergent component of motion. In the course of 2019 (well after the Airbus demo), I realized we could get the height variations from the more general trajectories for cheap (cheaper, in engineering time and system complexity, than replacing the whole model predictive controller) by doing linear feedback on a 4D divergent component of motion instead. If you are a control theorist, the connection with exponential dichotomies is for you. Thank Leonardo Lanari for pointing it out.
Discussion ¶
Feel free to post a comment by e-mail using the form below. Your e-mail address will not be disclosed.