Close

A New Optimal Controller

A project log for Blackbird Bipedal Robot

A low-cost, high-performance bipedal walking robot

Nathan BoydNathan Boyd 09/22/2019 at 05:470 Comments

What's better than one way to control a biped? That's right, two ways to control it... and a longish log post to summarize the top level of the new one. 

We've recently created an optimal Model Predictive Controller (MPC) that can also be used to control Blackbird. Now the robot can walk compliantly using SLIP dynamics or Floating body dynamics. These two options have led us to some interesting results and while I can't compare them at the moment, I wanted to show off the new controller we developed. This log will cover the super high level concepts of the control system. That all being said, what did we do, why did we do it, and how did we do it? You can read through the finer details and math in the pre-print for our ICRA 2020 submission. Here are some of the basic sim result videos, but we are holding off on showing the walking of the physical robot with this controller for right now. There are still some little kinks to work out.

We did some disturbance testing and basic walking tests in order to verify that the controller works well. You can watch the video at the top of the log to see what they looked like visually. Basic walking testing was done to make sure the controller worked at reasonable speeds (Fig 1), The second major test we did was exerting a 100N force on the robot from the front to make sure it would keep it's balance (Fig 2).  You can see that the robot is able to recover after about 1 meter of travel, but does not fall over. 

Fig 1. Body following a desired speed.

Fig. 2 Response to a force at the body.

One of the main inspirations that brought this project into being was the phenomenal work by Jonathan Hurst, Christian Hubicki, and Mikhail Jones on the CASSIE and ATRIAS robots. They helped pioneer modern compliant locomotion using reduced SLIP models for bipeds to mimic human dynamics. Offshoots of this research has led to some interesting results using hybrid and optimal solutions from Michigan Robotics and AMBER Lab in Caltech respectively. 

On the other side of the spectrum you have incredibly dynamic multi-legged robots such as MIT Cheetah 3/Mini (Songbae Kim, Ben Katz, Gerardo Beldt, and Jared Di Carlo) or ETH Zurich's ANYmal (by ANYbotics). We've also had some long chats with the folks over at Boston Dynamics and how they use Model Predictive Control for both Atlas and SpotMini. Who have been bringing on new formulations for simple and effective multi-layered Model Predictive Control with computed torque control. 

So first of all. What is Model Predictive Control? For those that don't know (I wouldn't be surprised because this is College Graduate Level Math), MPC is a form of Optimal Control, where you basically tie an optimizer to a robust closed loop control system to determine your outputs. We love it because it can control your plant (robot) really really well if you can characterize it's dynamics properly. 

Image result for model predictive control

We pose the dynamics of the robot in two stages. The body of the robot just acts as a floating mass a distance from the ground. The MPC is only responsible for optimizing the motion of the state of the body mass in space based on the force each foot exerts on the ground. Basically the mathematical model boils down this: the feet are at a specific place based on the walking gait and have to exert a force that keeps the body balanced (counteracting all that inertial force from the body) and moving based on the desired body trajectory. Based on the desired forces that the optimizer determines the feet have to exert, you can do the Jacobian math to transform the foot force into leg joint torques. Note that this prediction only works if your leg's are light and have little inertia, because we just abstract them away to simplify the model.

The second layer of the robot is the leg swing dynamics. Hooray for more force control!!! The MPC is only used when the legs are on the ground. When the legs are in swing, we predict the leg dynamics  (feedforward control PID control) using inverse dynamics in operational space to determine the torque each joint has to exert based on the desired position, velocity, and acceleration of the leg. 

[source]

Now here is the cool part about leg dynamics. When you have relatively high bandwidth actuators (like Series Elastic Actuators [Gil Pratt] or Quasi Direct Drives [Songbae Kim/Kalouche]) you can do something called Impedence Control. Impedence Control (virtual spring control) is basically where you set all your PID gains for exerting a force based on an imaginary spring/damper. This allows the legs to act compliantly exactly like a spring to dampen the impact of the foot when it makes contact! Take the basic spring equation, F=kx, and basically make your Kp=k and your basic damper equation, F=cv, and make your Kd=c, then let run your control algorithm super super fast (we run ours at 1kHz). 

That's it for the control! Two layers. Optimal (MPC) for balancing and impedance control for foot trajectory tracking and impact mitigation. Then you tie those two heavy math models with all your gait dynamics and ta-da you got yourself a well controlled walking robot. 

Discussions