jrl-umi3218 / lipm_walking_controller

Walking controller based on linear inverted pendulum tracking
BSD 2-Clause "Simplified" License
18 stars 11 forks source link

ZMP reference for MPC #33

Open Saeed-Mansouri opened 3 years ago

Saeed-Mansouri commented 3 years ago

Hi there,

The ZMPref in ModelPredictiveControl::computeZMPRef() is calculated based on the ankle position. I think that the foot center's position should be considered to have a better reference for the ZMP. For your robot, the ankle offsets are zero in both lateral and sagittal planes. So you didn't have any problem with it.

stephane-caron commented 3 years ago

There are two common solutions depending on the robot's most prominent constraint:

The appropriate solution depends on your system. On HRP robot, there is one extra reason for keeping the ZMP at the ankle frame: it reduces the restoring wrench of the foot flexibility mechanism (Fig. 3.11 of Introduction to Humanoid Robotics, Kajita et al., 2014) and thus the deflection of the unobserved joint between the ankle frame and the ground.