A rigid body is a solid body in which deformation is negligibly small. Consequently, the distance between any two points on a rigid body is assumed to remain constant in time during any motion. Owing to this assumption, a rigid body motion is a combination of *rotation* and *translation*. Therefore, there are two essential kinematic properties of a rigid body: *(i) position*, *(ii) orientation*. A *homogeneous transformation matrix* combines a rotation matrix with a displacement vector to represent those two properties simultaneously. Understanding rigid motions allow robot programmers to describe the position and orientation of the end effector of a robot. This chapter introduces mathematical representations of positions and vectors, rotations and displacements. Finally, it presents homogeneous transformations.

## 2.1. Representing Positions and Vectors

A robot has several special points on its body such as the center of mass, the tip of its end effector, etc. To accomplish certain tasks, engineers need to represent the positions and the velocities of those special points. Furthermore, representing the forces and the torques is essential to analyze and design robots. The mathematical representation of those entities requires the choice of a reference coordinate frame. A coordinate frame consists of an origin (a single point in space), and two or three orthogonal coordinate axes, for two- and three-dimensional spaces, respectively.

A *point* is a geometric entity which corresponds to a specific location in the space. Mathematically, the position of a point p can be represented as n-tuple such that p \in \mathbb{R}^n where n = 2 or 3. The following script specifies the coordinates of a point p with respect to two different coordinate frames o_0 x_0 y_0 and o_1x_1y_1 on the two-dimensional space. Note that p^0 and p^1 point to the same location although p^0 \neq p^1 due to the choice of different coordinate frames.

The position of the point p with respect to two different coordinate systems are given below. Click on canvas to change the point location which is shown by red dot. The coordinates are rounded to one decimal place. Observe that o_1^{0} = \left[ 30, 5 \right]^T and o_0^{1} = \left[ -27, 14 \right]^T .

A *vector* specifies a direction and magnitude. An example of a vector is the wind. The wind has a direction and magnitude, however, it does not have a specific location, unlike the point. One can still feel the wind if he changes his position. Therefore, a vector can be moved to any location in space. Two vectors are equal if they have the same direction and the same magnitude. Mathematically, a vector can be represented as n-tuple such that p \in \mathbb{R}^n where n = 2 or 3 similar to a point. The following script illustrates representing a vector with respect to two different coordinate frames.

The position of the point p with respect to two different coordinate systems are given below. Click on canvas to change the point location which is shown by red dot. The coordinates are rounded to one decimal place. Observe that o_1^{0} = \left[ 30, 5 \right]^T and o_0^{1} = \left[ -27, 14 \right]^T .