# Frames (Robotics)

A frame consists of an origin \(O\) and an orthogonal \(x,y,z\) axis, and is used to represent rigid body configurations. We assume all frames to be right-handed and stationary.

To represent the position and orientation of a rigid body in space, we first first a body frame \(\{b\}\) and a space/world frame \(\{s\}\). The configuration of the body is then given by:

- Origin of the body frame
- Directions of the coordinate axes of the body frame

Where **both of the above are expressed in the space frame coordinates**.

The position and orientation of an object's coordinate frame is referred to as its **pose**.

The **relative pose** of a frame \(\{A\}\) relative to \(\{B\}\), denoted \({}^A \xi_B\). Suppose we have a point \(\textbf{p}\), and represented relative to frame \(\{A\}, \{B\}\) denoted \({}^A\textbf{p}, {}^B\textbf{p}\) respectively. They are related by \({}^A\textbf{p} = {}^A \xi_{B} {}^B\textbf{p}\). More formally, \({}^A\xi_B\) is any mathematical object that can represent rigid body transformations.

In practical applications, one would have a frame for various entities for e.g. a frame for each joint of a robot, a frame for the camera of the robot and so on. This can be visualized as a collection of coordinate axes, with the world coordinate frame \(O\) fixed as the origin. The pose \(\xi_R\) would denote the pose of frame \(B\) relative to the world frame. This can also be visualized as a Directed Acyclic Graph, with each coordinate frame as the nodes, and the directed edges of the form \(O \rightarrow R\) is labelled with \(\xi_R\) and edges of the form \(A \rightarrow B\) labelled as \({}^A \xi_B\).

Below are the key aspects we need to represent with respect to frames:

- Orientations, represented via SO(n).
- Angular velocities, represented via so(3) or exponential coordinates.
- Rigid body transformations, represented via SE(n).
- Rigid body velocities, represented via twists.