While not perfect, now that I have flux braking in place, I have now succesfully pronked around for a while without faulting! There are a number of outstanding problems that still need to be addressed:
- Sometimes the landing phase is erroneously cut short
- There is occasionally a grinding like noise that sounds like some controller is unstable
- I think the lateral movement is not working correctly
- The gait needs to be smarter about moving the legs past the center point when in mid-flight, and changing the gait period to achieve different speeds
- And probably a bunch of other problems I haven’t even identified yet
That said, it is still fun to watch it romp around!
Now that I can do controlled jumps, and have a UI which allows me to use the joystick, I finally started actually working towards pronking gaits. Too bad for you, this post doesn’t have any details, merely a video snapshot of my learning and debugging process…
Now that I have a full rate inverse kinematics and dynamics solution, I can begin to do more interesting things. A while ago I did the first jump on the quad A0 — in that video I used a limited technique just to verify that the platform was indeed capable of jumping. The joints were commanded in an open loop fashion, and really only at the transition points of the jump sequence, relying on the control loops in the servo to actually achieve each stage of the jump cycle. That resulted in the jump only being minimally controlled… tracking errors would result in the robot taking off from a not-level position and the timing was not super reliable to boot.
Now I’ve taken that demonstration to the next level by controlling the full position, velocity, and force profile of each of the 4 legs at 150Hz during the jump maneuver. In the launch phase, all four legs follow a constant acceleration trajectory while maintaining a level body. During the flight phase, the force is cut to the legs and the velocity of each leg is monitored. A few milliseconds after the legs have been detected as moving, the velocity is sampled and a controlled constant acceleration profile is selected which results in zero velocity when the robot reaches its initial takeoff point. After that, it just moves at a constant velocity back to the starting height.
Next up is chaining these together into a pronking gait.
To demonstrate the dynamic capability of the full rotation quadruped, I figured I would start by doing some full machine jump tests to a relatively low height, just to show that it was capable.
Thus, I rigged up an open loop script which squatted a small fraction of the available distance, and then powered up at a relatively small fraction of the available maximum speed. I don’t have the telemetry yet to extrapolate how high this will be able to go at maximum, but I think it should be a fair amount higher. For now, I want to do some more instrumentation and walking testing (and have more spares) before I manage to break things by jumping really high.