-
Notifications
You must be signed in to change notification settings - Fork 4
State representation library
The state_representation library is the base library used to represent state of the robot and its environment to be shared among the different modules. It comes in a c++ and a python version.
Three types of representation are currently available: Cartesian, Joints and Dual Quaternions.
Cartesian states are used to represent transformations in space. The base representation is the Pose:
A pose P
represents the coordinates of a frame located at position [x,y,z]
with [qw,qx,qy,qz]
quaternion orientation. A pose is always named and expressed in the coordinate of another frame (by default world), its reference frame. We note wPo
a frame o
expressed in w
.
Algebraic operations are defined when they are meaningful:
The multiplication between two frames corresponds to a changing of reference frames. aPb * bPc
will result in the frame aPc
. If this operation has no physical meaning it throws an error (e.g. aPb * cPd
)
A vector V = [vx,vy,vz]
can be multiplied by a pose wP
. This results in a vector expressed in the reference frame of P
(here w
).
The addition between two pose wPa + wPb
is only valid if the two poses are expressed in the same reference frame and results in a new pose wPc
. Same goes for subtracting two poses.
The inverse of a pose wPo
represent the inverse transformation oPw
.
A twist represents the velocity of a frame, both linear [vx,vy,vz]
and angular [wx, wy, wz
]. Similarly to the pose, it also has a reference frame. Addition and subtraction between two twists are defined, so is the multiplication with a scalar. A twist can also be clamped to a maximum magnitude.
A wrench represents the force [fx,fy,fz]
and torque [tx,ty,tz]
expressed in its reference frame.
Joint state represent the angle values of the joints of a robot. Positions, velocities and torques can be represented with their specific implementation.