
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
-