Skip to content

Arm Motions

For arm only motions the ArmKeyFrameEngine is used. It can only be active while walking or standing. We only use this engine to move the arm on the back to avoid colliding other robots.

Arm motions are configured in the file Config/Robots/Default/armKeyFrameEngine.cfg.


An example is listed below

allMotions = [
  id = back;
  states = [
      angles = [119.5deg, 10deg, 75deg, -10deg, -90deg, 0deg]; // ShoulderPitch, ShoulderRoll, ElbowYaw, ElbowRoll, WristYaw, Hand
      stiffness = [90, 60, 80, 90, 90, 90];
      duration = 800;
      interpolation = linear;
  • allMotions: Contains the list of all arm motions, except reverse.
  • id: The name of the arm motions.
  • states: The keyframes
  • angles: The target joints.
  • stiffness: The stiffness values.
  • duration: Interpolation duration.
  • interpolation: The interpolation type, like linear or sinus.

Adding new Arm Motions

Despite the available motions, you may add further ones to the file following the same structure under a new id. The new id has to be appended to the end of the enumeration ArmKeyFrameId within the representation Src/Representation/MotionControl/ArmKeyFrameRequest.h. The new id must be listed after default but before reverse.

It is important to know that all motions will only be declared for the left arm.

Last update: October 13, 2023