Thankfully, I’m now at the point where I’m fixing actual dynamics problems on the robot. Doubly thankfully I have a robot which is pretty robust and keeps working! That said, it is still, shall we say, “non-ideal”, to be testing code for the first time ever on a real robot.
Back with my HerkuleX based Super Mega MicroBot, I had a working DART based simulation which was decently accurate. However, the actuators for that machine were so limited that it didn’t really make sense to do any work in simulation. The only way to be effective with that machine was to tweak and tweak on the real platform and rely on exactly the right amount of bouncing and wiggling that would get it moving smoothly.
Now that I can accurately control force at 400Hz and beyond, that isn’t a problem anymore, so I’m working to resurrect the bitrotted simulator. In the end though, it turned out to be a complete re-write as basically nothing of the original made sense to use.
Here’s a video of the very first time it moved around in sim (which means there are still many problems left!)
After I restructured my control laws to take advantage of high rate force feedback for the pronking experiments, I haven’t actually managed to port the walking gait yet. Now that I have a brand new robot, it seemed like a good time!
This gait is basically the same thing as I ran on the quad A0 in principle. The opposing feet are picked up according to a rigid schedule, and moved to a point opposite their “idle” position based on the current movement speed. Any feet that are completely placed on the ground just move with the inverse of the robot’s velocity.
What differs now is that the leg positions and forces are controlled in 3D at a high rate, 400Hz for now. At each time step, the position and velocity of all 12 joints is measured. The gait algorithm calculates a desired 3D position, velocity, and force. Feedforward force is currently only used to control the weight supporting legs. Then, those 3D parameters are transformed into a joint position, velocity, and force based on the current joint position, and the command is sent out.
While not conceptually too different, just controlling the system in 3D at a high rate gives significantly improved results for a range of walking parameters. There is still a lot left to do, but it is a good start!
(also, a limited number of the qdd100 servos are now open for sale to beta testers at shop.mjbots.com, https://shop.mjbots.com/product/qdd100-beta-developer-kit/)