Making A Robotic Dog Better By Adding Springiness Without Springs

Getting a legged robot to stay upright, especially a quadruped or biped, can be a challenging undertaking. To experiment with different approaches, [James Bruton] built robot dog test platform and is playing with “dynamic compliant simulated springs“, or in other words, using the motors to act as though they were springs and dampers..

When robotic legs are kept stiff, they tend to reduce the stability of the platform due to the sudden erratic movements of the robot, especially on uneven surfaces. With a back drivable joint arrangement, [James] is using limited holding current on the motor, and the position of the motor shaft is monitored using an encoder. When a leg experiences a resisting force, with will have some “give” and then the motor will return it to it’s intended position more slowly. Using a IMU on top of the robot, it can detect when it start leaning to a side, and then temporarily soften the other side to balance the robot.

This is quite a common technique in legged robots, but [James] does an excellent job of explaining just how it works. He hopes to use the lessons learned from the test platform to improve or redesign his already impressive OpenDog.

We’ve seen a number of quadruped robots on Hackaday recently. Including Boston Dynamics’ very expensive Spot as well as a low cost robot dog that giving its big brothers a run for their money, and doing some back flips in the process. Check out James’ video after the break.

5 thoughts on “Making A Robotic Dog Better By Adding Springiness Without Springs

  1. don’t those trinamic stepper drivers that are used in newer 3D printers have a circuit for variable detection of physical resistance through increased voltage passthrough? in 3D printers it’s used on an on/off basis to replace backstop switches. but can’t this and other trinamic features be used in robotics to create this desired characteristic of controlled springyness?

    1. I have spend a good amount of time using the Trinamic TMC2130 with a robotic gripping system. While I only used it to detect stall conditions, Stallgaurd2 does allow for a more analog load detection. With proper calibration, I don’t see why it couldn’t be used to achieve a similar effect.

  2. Sorry I haven’t watched it all the way through, so I hope I am not “stating the obvious” here.
    Couple of thoughts/ideas to maybe help you.
    1 – I saw when the dog was “walking” it was also turning. (Yaw) This could be causing problems with leveling.
    2 – Though not needed, why not add some code so if the dog falls over, it stops trying to walk?
    3 – Some legs weaker than others. Sure. So the IMU will detect this and *try* to use the weaker legs. It fails because (as you said) these legs may not be strong enough.
    Alternative: If it tries this and it doesn’t fix the problem: Don’t assert the opposite legs as much. That way the weaker legs aren’t loaded as much.
    Eg:
    The left side drops. Try to force left legs to restore level.
    If that works, all good.
    If it fails, reduce the force on the right legs, and lower the right side until level.
    If that works, when level, assert all legs to raise body.
    If it fails, well, sorry. I’m out of ideas.
    Hope some of this is helpful to you.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.