Skip to content

Pose and orientation

A pose is a position and an orientation together: where the tool is and which way it points. Six numbers: x, y, z in millimetres and three angles in degrees, [x, y, z, Rx, Ry, Rz], in the frame you name, the WRF unless you say TRF.

Position

The tool centre point's coordinates in the frame. For the standard pneumatic gripper the TCP is between the finger tips; for a selected tool in the API it is the tool's registered point, moved by any offset you set.

Orientation

Three angles describe how the tool frame is rotated relative to the reference frame. There are many conventions; PAROL6's software uses roll, pitch and yaw as rotations about X, Y and Z, which is what the commander shows as Rx, Ry, Rz and what the API's pose() returns and its motion commands take. The API's set_tcp_transform() takes its angles as intrinsic XYZ rotations, Rx · Ry · Rz; its collision shapes take extrinsic XYZ in radians. When a pose from one program goes into another, check the convention before trusting the numbers.

The same position can be reached with many orientations, and the orientation is what a program usually gets wrong first: a few degrees off puts a finger into the table. The Python API examples on this site use [90, 0, 90], the orientation the tool has after homing: horizontal, pointing forward, away from the base. A tool pointing down at the table has other angles; jog it there and read them.

The same position with two orientations
Figure 1: The same position with two orientations.

Reading a pose from the robot

Jog to where you want to be and read the pose: the commander's position display, or rbt.pose(). That is how poses are taught. A taught pose contains the tool's transform: taught with one tool, it is wrong for another.

Rotating about several axes

A rotation about X followed by one about Y is not the same as Y then X, and three angles at once are hard to predict. Rotate about one axis per command when you can, especially in the tool frame:

MoveCartRelTRF(0, 0, 0, 0, 45, 0)
MoveCartRelTRF(0, 0, 0, 0, 0, 45)

Comments


Found a mistake on this page? Edit it on GitHub · Report it · Get help · This page as Markdown · llms.txt · The whole manual as PDF