1 of 15

Terrain Stability Estimation on a Quadruped

By Sarthak Bhatnagar, Dylan Chow, Scott Durand, Andrew Suk

1

2 of 15

Overview and goals

Problem:

Unstable terrain can cause a quadruped robot to lose balance and potentially fall over.

Solution:

Use joint and force sensors on the quadruped legs to probe a foothold, evaluate its stability, and maneuver around the foothold if it is deemed unstable.

2

3 of 15

Implementation

  1. Balance on 3 legs
  2. Probe foothold using the 4th leg and get contact force readings
  3. Estimate stability
  4. Avoid foothold or walk over it

A1 Unitree Quadruped

3

4 of 15

Balancing on 3 legs

Allow one leg to move arbitrarily while the other 3 balance.

4

FootA

FootB

FootC

CoM Position

Desired CoM Position

  1. Derive Foot Positions using Forward Kinematics
  2. Derive Desired Center of Mass (CoM)
  3. Actuate Stance Joints to Recenter CoM
    1. PID Control to Determine Target Foot Position
    2. IK Reposition to Target Foot Position

5 of 15

Probing Foothold & Estimating Stability

  • Use force sensor from foot to detect contact with terrain and begin stability test
  • Record velocity of foot while performing force test
  • Calculate linear regression models for x, y, and z velocities and use models to classify terrain as stable or not

5

STABLE

NOT STABLE

NOT STABLE

6 of 15

Walking

  • Used the motion imitation library by Google Research to walk the robot.
  • Uses reinforcement learning to develop a policy for walking the A1 quadruped.
  • We’re using the provided MPC controllers to generate a stable gait.

6

7 of 15

Simulation: stable terrain

7

8 of 15

Simulation: unstable terrain

8

9 of 15

Simulation: PID Three Legged Controller

9

10 of 15

Sim-to-real

  • Foot forces in simulation are normal to the force direction terrain applies on the foot

  • Foot forces in hardware are more confusing...
    • Resolution, Accuracy, Drift

10

11 of 15

Hardware: stable terrain

11

12 of 15

Hardware: unstable terrain

12

13 of 15

Difficulties faced

  • Implementing Elevation Mapping (C++)
  • Running the motion imitation library and resolving dependencies
  • Balancing on 3 legs and implementing setting motor angles based off CoM estimator
  • Only the foot position relative to the robot’s center is known
  • Simulating non-rigid terrains in PyBullet (soft bodies)

13

14 of 15

Future goals & ideas

  • Vision
    • Estimate world position of foot, height/shape of terrain
    • SLAM to model the environment
    • Develop a path-planning algorithm to navigate to a destination
  • Speed up stability test
  • Ability to probe/test with multiple legs

14

15 of 15

Acknowledgements

Thank you to Ayush and Sunay for their mentorship on this project!

Libraries used:

Libraries not yet implemented:

15