-
Notifications
You must be signed in to change notification settings - Fork 2
Coordinate Systems
Robotic systems consist of many parts (links) connected with revolute, prismatic, fixed, floating, or planar joints. The configuration of each link can be represented with a set of 6 coordinates, three coordinates for translation and three coordinates for orientation. It is common practice to associate each link with a coordinate frame rigidly attached to a point on the body.
Often we want to transform the coordinates of a point between coordinate systems. Let A and B be two arbitrary coordinate systems. Let pB be the coordinates of a point p with respect to coordinate system B.
The coordinates of p with respect to the coordinate system A are then given by
Symbol | Code | Meaning |
---|---|---|
TAB | T_A_B |
Transformation matrix that transforms points from frame B to frame A. |
RAB | R_A_B |
Rotation matrix that rotates points from coordinate system B to coordinate system A. |
tAB | t_A_B |
Position of frame B with respect to coordinate system A. |
pA | p_A |
Position of point p with respect to coordinate system A. |
Name | Description |
---|---|
world | Fixed world reference frame, mostly used in simulation. |
task | Dynamically defined reference frame for a manipulation task, e.g. corner of a table. |
base | Base coordinate system located at the base of the robot. |
tool0 | Robot tool mounting point. |
TCP | Center point of the tool. |
scipy.spatial.transform
URDF
The Universal Robot Description Format is commonly used in the ROS stack to represent a robot model. The joint
element describes the kinematics of a joint between two links as illustrated in the following image.
<joint name="my_joint" type="floating">
<origin xyz="..." rpy="..."/>
<parent link="parent"/>
<child link="child"/>
</joint>
Here the origin
tag defines the position and orientation of child
w.r.t. parent
, i.e. T_parent_child
. Note that the rpy
tag expects rotations to be specified as Euler angles. This can be achieved by calling the as_euler("xyz")
method when working with SciPy's Rotation
class.
ROS geometry
The tf and tf2 packages contain useful utilities to keep track of transformations between the robot links over time.
The transform between frame A
and frame B
can be looked up using the following command
rosrun tf tf_echo A B