When creating a command for a robot, much attention needs to be placed on
the space used to define the command, as a mistake in space could
lead to disastrous results.

FRAME_TORSO
: this is attached to the robot’s torso reference, so moves
with the robot as he walks and changes orientation as he leans. This space
is useful when you have very local tasks, that make sense in the
orientation of the torso frame.

FRAME_ROBOT
: this is average of the two feet positions projected around a
vertical z axis. This space is useful, because the x axis is always
forwards, so provides a natural ego-centric reference.

FRAME_WORLD
: this is a fixed origin that is never altered. It is left
behind when the robot walks, and will be different in z rotation after the
robot has turned. This space is useful for calculations which require an
external, absolute frame of reference.

When executing a task, the space is determined when the task begins,
and remains constant throughout the rest of the interpolation. i.e. the
interpolation, once defined, will not change as the reference changes
due to the legs moving or the torso orientation changing.

The axis mask is executed in the same space used to define your task.
It has the effect of liberating the constraint on each axis which is not
part of the mask. Note carefully that a mask in space
FRAME_WORLD
is likely
to be very different to one in space
FRAME_TORSO
.

Note

For the Torso, LLeg and RLeg effectors, the axes which are not part of
the mask will have a fixed position. i.e. they will not move while performing the task.

For the Head, LArm and RArm effectors, the axes which are not part of
the mask are not constrained. i.e. free to move in order to perform the task.

SE3 Interpolation is used for all interpolations that are defined in Cartesian Space.
It provides a spline-like interpolation which allows for initial speeds and
points of passage to be taken into account, ensuring smooth trajectories that
respect speed constraints.

Warning

If the desired motion is unfeasible, the robot can lose balance and fall.
All Cartesian motions should be tested in a simulator before being tried on the robot.

The goal of this example is to apply 15 degrees rotation around axis y to the Left Arm.
In this case, it is difficult to compute the desired target as a position6D,
from current
position6D
of
LArm
and rotation of 15 degrees around the Y axis.
We cannot add 15 degrees to the wy component.
In this general case,
Transform
is much simpler to use.