STRIDE - Wheeled Biped V2
New robot!
A few months ago I decided to build a new wheeled biped to address some of the shortcomings of the first version I built about 2 years ago. The two biggest changes were adding an additional degree of freedom to the legs, and significantly increasing the wheel diameter.
The wheel diameter was an easy hardware change which allows for easier locomotion over all sorts of terrain. The previous robot has ~1” of ground clearance between the leg frame and the ground and so I never attempted any traversal of terrain like rocks and grass. With the new wheels and a relatively simple control scheme, the robot is already able to traverse rocks, grass, shrubs, and various nature I could find where I live.
A minor change was moving the wheel motor to the wheel. The first version of the robot had the wheel motor coaxial with the hip motor and used two stages of belts to remotely drive the wheel. This was done to contain all the electronics within the body (no external cables), and to reduce leg inertia. In the interest of mechanical robustness/simplicity, and the fact that I realized there is actually some benefit to having higher inertia feet (example getting a reaction torque while in the air for correcting pitch), I opted to mount the motors directly at the wheels. We’ll see if this change stays for version 3! Currently the robot has done quite a bit of flailing and aggressive testing and the cables going to the wheels have been fine. I haven’t used the reaction torque yet because the 2dof legs also allow you to place the legs under the body so pitch control is slightly less important in the air.
The addition of a leg degree of freedom was done (at the expense of increased cost, complexity, and J’F) in order to allow the robot more flexibility. The additional dof allows for easier and more consistent fall recovery (especially important for when the robot falls in unideal situations like on a hill or against a wall), improved control during dynamic motions like jumping, and allows for a new mode I call ‘gimbal’ mode (I didn’t invent it, but I just don’t know what other people call it). Rather than pitching the body to balance, with a 2dof leg, the body can be translated in X, so the body can retain its angle which can be useful if carrying a payload or a camera. It also helps decouple the pitch controller from the position controller which is nice for gain tuning.
I opted for a serial leg (rather than a parallel linkage) because having knees on both sides makes stairs difficult, and the actuator torque is not a limiting factor with the current design. If I wanted to cost optimize and use smaller actuators, I would consider spring based gravity compensation again like I did on version 1.
One uncertainty I have for future 2dof leg versions is if the invertible knee is worth it. Belts inherently have a little more mechanical complexity than a linkage based transmission but allow the ability to invert the knee which could be useful in certain situations (climbing stairs forward and backward without turning around or fall recovery come to mind). However, in the jump testing I’ve done which is force based, the knee does invert and currently all my position control uses the IK solution of the non inverted knee. Nothing some better software can’t fix but I am considering a linkage knee solution for the next version.
Internally, the robot control now occurs on an UP Board (rather than on a micro like on V1) running Jared’s famous Mini Cheetah software stack. It was surprisingly portable to this totally different robot and I basically just created a new controller and didn’t need to touch any of the infrastructure code.
Overall I am incredibly happy with the current performance of the robot (I spent a good month babying it before I decided on a whim to test it outdoors and was pleasantly surprised with its stability (I had only ever tuned and tested the controls on carpet and tile)). The hardware is definitely more capable than what my current software utilizes so it should only get better with time!
The video also shows some initial stepping behavior that’s just a high frequency open loop swing leg trajectory, but I’m starting to work on some better heuristic based walking.
I didn’t post any clips of jumping yet but it can take off fine, just landing has been the tricky part!