Skip to content

Motion Control

Zichong Li edited this page Feb 15, 2023 · 1 revision

Motion control

For the motion, there are mainly three types of motions that can be requested:

  • Walking
  • Kicking
  • SpecialActions

Walking

The WalkingEngine mainly contains two different WalkingEngine. The rUNSWift WalkingEngine, which is currently the default module for the walk and the DortmundWalkingEngine. In the rUNSWift WalkingEngine, the NAO modeled as an invented pendulum and the controller is mainly stabilized using two sources of feedback. On the one hand, the controller observes the rotational speed during walking, and then will try to stabilize the pose using its AnkleRoll and AnklePitch of the support foot. On the other hand, the controller utilizes the information from the foot pressure sensor to determine the switching condition into the next phase. For the original implementation, please refer to rUNSWift Team Report 2014

The DortmundWalkingEngine was incorporated into the code base in 2017. Different from the rUNSWift WalkingEngine, the DortmundWalkingEngine is fully close-loop controlled and uses an ZMP controller and observer for the planning to the CoM position. For the full description, please refer to the original Nao Devils Team Report 2014

Kick

The KickEngine generate the desired kick trajectories using the reference point provided by the *.kmc files. Those reference points are generated by the BikeEngine. These files contain some high-level property description about the kick, initial end effector configuration, including the PID parameter for the CoM reference tracking, as well as, for each phase, the desired position for each end effector. Each phase required a duration and two pair of parameter set (translation and rotation) for all end effectors: (head, left/right foot, left/right arm and CoM). The specified two point is required in order to generate the quadratic bezier curve. example For the original implementation, please refer to the Bhuman2013CodeRelease

Omni-directional Kick

The omni-directional is an extension to the KickEngine that is capable to adapt its trajectory to the ball position and hit it with the foot in such a way that the ball goes into a requested direction and power. The implementation was done inside the existing KickEngine and the omni-directional kick also utilizes the same kmc file like the other kicks. Only the swing back and kick phase's reference points of the kick leg are dynamically adjusted to achieve the desired omni-directional kick motion. For stability during the balancing phase. An preview controller is used to generate the reference motion and an PD controller is applied to the arm to maintain balance. For the original implementation please refer to Semester Project:

SpecialActions

SpecialActions are fixed and hand-crafted motion file containing an sequence of reference position for all individual joints. And list of the all special actions can be found in mof. Specific semantic rules needs to be followed in order to create a new special action. For details please refer to chapter 6.2.2 in Bhuman2013CodeRelease

Clone this wiki locally