top of page

The EvoDog Balancing

01

Problems

  • The IMU on the EvoDog was originally mounted upside down, which caused some values to be reversed. This caused values like robot_top_pos to be reversed.

    • Solution: put a negative sign on all values read by the IMU because it was originally reversed

    • Reverse the signs on all references of robot_top_pos

  • Clamp function

    • When robot_top_pos is calculated to be a significantly unrealistic, the motors can’t actually actuate to reach that position

    •  Offsets are applied to the position, compounding the error and causing the robot to not return to the same position every time it walkS

02

Gaits

STING THE GAIT

  • Modifying parameters in trot_gait or gait_trot like:

    • Amplitude

      • Changed from 30 to 40, then back to 30

    • Clip_min %

      • modified gait_trot y array clipmax% from 20 to 40, then changed back to 20

    • Clip_max %

  • To slightly change the gait such that:

    • The EvoDog’s trot is lengthened such that the legs are on the ground for longer, allowing it to stabilize for longer

    • Or, by allowing the leg to raise for more, because the legs aren’t able to lift an equal amount when on the hill

03

Implementation

  • Implemented a few new global variables which do the following:

    • Store the previous value of the IMU reading in a temp variable

    • Create equivalents for velocity like velocity_body_rot and velocity_foot_offsets which undergo the same transformations as body_rot and foot_offsets

    • Modify the derivation of robot_top_pos such that (foot_offset - body_top) is multiplied by constant Kp, and the velocity equivalents are multiplied by constant Kd

    • We decided to subtract the velocity product from the angle product, but maybe we can try switching this around to get a different result

    • This is a very basic form of a PD loop

  • We then tuned the constants to get our desired results seen in the third sheet on

04

Results

  • Results:

    • I don’t know if this directly related to our change, but the robot seemed to be able to recover better from staggering.

    • It also seemed to have better grip on a surface, whereas no balance resulted in the feet slipping on the surface

    • Slight errors in 90’ing caused the robot to veer left, but this is to our knowledge unrelated.

    • We implemented a PID but the goal wasn’t necessarily to keep the velocity at zero

bottom of page