Skip to main content
Rotation representations described a body’s orientation, angular velocity, and finite rotation. This section adds position. A pose pairs a rotation with a translation. A twist pairs an angular velocity with a linear velocity. A screw motion is the exponential of a twist. In Lie I, these are the group SE(3)SE(3), its Lie algebra se(3)\mathfrak{se}(3), and the exponential between them. The general case is in three dimensions. Paragraphs marked In the plane. give the special case. The presentation follows section 3.3 of Lynch and Park (Kevin M. Lynch, 2017).

Poses in SE(3)

A homogeneous transformation matrix describes a pose: T=[Rp01]∈SE(3).T = \begin{bmatrix} R & \mathbf{p} \\ 0 & 1 \end{bmatrix} \in SE(3) . The matrix encodes both rotation and translation. It acts on homogeneous coordinates. A point (x,1)(\mathbf{x}, 1) is rotated and then translated. A free vector (v,0)(\mathbf{v}, 0) is only rotated because its zero cancels p\mathbf{p}. The same matrix therefore handles both kinds of object. The inverse of a homogeneous transformation matrix is T−1=[RT−RTp01],T^{-1} = \begin{bmatrix} R^T & -R^T \mathbf{p} \\ 0 & 1 \end{bmatrix} , and transformations compose by matrix multiplication, Tac=TabTbcT_{ac} = T_{ab} T_{bc}. Composing two poses shows the interaction between translation and rotation: T1T2=[R1p101][R2p201]=[R1R2p1+R1p201].T_1 T_2 = \begin{bmatrix} R_1 & p_1 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} R_2 & p_2 \\ 0 & 1 \end{bmatrix} = \begin{bmatrix} R_1 R_2 & p_1 + R_1 p_2 \\ 0 & 1 \end{bmatrix} . The orientations combine by multiplying their rotations. The first rotation acts on the second translation, producing the term R1p2R_1 p_2. As a manifold, SE(3) looks like R3×SO(3)\mathbb{R}^3 \times SO(3), a position paired with an orientation. Its group structure also includes the action of rotation on translation. This structure is called a semidirect product and is written SE(3)=R3⋊SO(3)SE(3) = \mathbb{R}^3 \rtimes SO(3). In the plane. The pose is a 3×33 \times 3 matrix, and the configuration is the triple (θ,x,y)(\theta, x, y): T=[R(θ)p01]=[cos⁡θ−sin⁡θxsin⁡θcos⁡θy001]∈SE(2).T = \begin{bmatrix} R(\theta) & \mathbf{p} \\ 0 & 1 \end{bmatrix} = \begin{bmatrix} \cos\theta & -\sin\theta & x \\ \sin\theta & \cos\theta & y \\ 0 & 0 & 1 \end{bmatrix} \in SE(2) . For a differential-drive robot such as the TurtleBot, (x,y)(x, y) is the position of the chassis and θ\theta is its heading. The headings θ\theta and θ+2π\theta + 2\pi are identical. The matrix R(θ)R(\theta) converts coordinates between the robot and world frames. A velocity vb=(v,0)v_b = (v, 0) along the robot’s heading becomes vs=R(θ) vb=(vcos⁡θ,vsin⁡θ)v_s = R(\theta)\,v_b = (v\cos\theta, v\sin\theta) in the world frame. SE(2) is the semidirect product R2⋊SO(2)\mathbb{R}^2 \rtimes SO(2).

Twists

A twist combines the angular and linear velocity of a body in one six-dimensional vector: V=[ωv]∈R6,[V]=[[ω]v00]∈se(3).\mathcal{V} = \begin{bmatrix} \omega \\ v \end{bmatrix} \in \mathbb{R}^6 , \qquad [\mathcal{V}] = \begin{bmatrix} [\omega] & v \\ 0 & 0 \end{bmatrix} \in \mathfrak{se}(3) . se(3)\mathfrak{se}(3) is the Lie algebra of SE(3)SE(3). As with angular velocity, you can express a twist in two frames. The body twist comes from [Vb]=T−1T˙[\mathcal{V}_b] = T^{-1}\dot{T}. The space twist comes from [Vs]=T˙T−1[\mathcal{V}_s] = \dot{T} T^{-1}.
  • vb=R⊤p˙v_b = R^\top \dot{\mathbf{p}} is the velocity of the body-frame origin, written in the coordinates of {b}\{b\}.
  • vs=p˙−ωs×pv_s = \dot{\mathbf{p}} - \omega_s \times \mathbf{p} is the velocity of the point of the body currently at the origin of {s}\{s\}, written in {s}\{s\}. That point may lie outside the physical body. You can imagine extending the body far enough to contain it.
The adjoint converts between the two: [AdT]=[R0[p]RR],Vs=[AdT] Vb.[\mathrm{Ad}_T] = \begin{bmatrix} R & 0 \\ [\mathbf{p}]R & R \end{bmatrix} , \qquad \mathcal{V}_s = [\mathrm{Ad}_T]\,\mathcal{V}_b . Calculus on Lie groups derives this matrix.
Spatial-velocity conventions differ across systems, so integration may require conversion. Warp orders a spatial vector as (angular, linear). PhysX reports the linear velocity of the center of mass and the angular velocity, both in the world frame. The Newton twist conventions compare these and other engines side by side.
In the plane. A twist has three numbers, V=(ω,vx,vy)∈R3\mathcal{V} = (\omega, v_x, v_y) \in \mathbb{R}^3, and both matrix forms belong to se(2)\mathfrak{se}(2): T−1T˙=[[ωb]vb00],T˙T−1=[[ωs]vs00],ωb=ωs=θ˙.T^{-1} \dot T = \begin{bmatrix} [\omega_b] & \mathbf{v}_b \\ 0 & 0 \end{bmatrix}, \qquad \dot T T^{-1} = \begin{bmatrix} [\omega_s] & \mathbf{v}_s \\ 0 & 0 \end{bmatrix}, \qquad \omega_b = \omega_s = \dot\theta . The linear parts are vb=R⊤p˙\mathbf{v}_b = R^\top \dot{\mathbf{p}} and vs=p˙−[ω]p=(x˙+θ˙ y, y˙−θ˙ x)\mathbf{v}_s = \dot{\mathbf{p}} - [\omega]\mathbf{p} = (\dot x + \dot\theta\, y,\ \dot y - \dot\theta\, x). The body twist is related to the rate of change of the configuration q=(θ,x,y)q = (\theta, x, y) by Vb=[ωbvbxvby]=[1000cos⁡θsin⁡θ0−sin⁡θcos⁡θ][θ˙x˙y˙].\mathcal{V}_b = \begin{bmatrix} \omega_b \\ v_{bx} \\ v_{by} \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\theta & \sin\theta \\ 0 & -\sin\theta & \cos\theta \end{bmatrix} \begin{bmatrix} \dot\theta \\ \dot x \\ \dot y \end{bmatrix} .

Screw motion

Exponential coordinates extend from rotations to poses. Let S=(ω,v)∈R6\mathcal{S} = (\omega, v) \in \mathbb{R}^6 be a screw axis. The displacement by θ\theta along it is e[S]θ=[e[ω]θG(θ)v01],G(θ)=Iθ+(1−cos⁡θ)[ω]+(θ−sin⁡θ)[ω]2.e^{[\mathcal{S}]\theta} = \begin{bmatrix} e^{[\omega]\theta} & G(\theta)v \\ 0 & 1 \end{bmatrix} , \qquad G(\theta) = I\theta + (1 - \cos\theta)[\omega] + (\theta - \sin\theta)[\omega]^2 . Here G(θ)G(\theta) is Lynch and Park’s notation. It is unrelated to the generator GG of Lie I. Given a transformation T=(R,p)T = (R, \mathbf{p}), the matrix logarithm reverses this map. First, log⁡R\log R gives [ω]θ[\omega]\theta. Then v=G(θ)−1pv = G(\theta)^{-1} \mathbf{p}. Thus [S]θ=log⁡T[\mathcal{S}]\theta = \log T. Every pose can be reached by one screw motion, a rotation about an axis combined with a translation along it. In the plane. Any planar displacement is a rotation about a fixed point s\mathbf{s}. The figure shows such a motion. Planar screw motion. (a) The frame {d}\{d\} is fixed to an elliptical rigid body and initially coincides with {s}\{s\}. A rotation by RR followed by a translation by p\mathbf{p} moves it to {d′}\{d'\}, which coincides with the stationary frame {b}\{b\}. The pair (R,p)(R, \mathbf{p}) represents {b}\{b\} in {s}\{s\}. The same transformation takes the frame {c}\{c\}, also attached to the rigid body, to {c′}\{c'\}. Transformation 1 rotates {c}\{c\} about the origin of {s}\{s\}. Transformation 2 translates the frame by p\mathbf{p}, expressed in {s}\{s\}. (b) The rotation and translation can occur simultaneously. The displacement is then a rotation of β=90∘\beta = 90^\circ about a fixed point s\mathbf{s}. Two motions produce the same displacement. In the first, the body rotates by RR about the origin of {s}\{s\} and then translates by p\mathbf{p}. In the second, it rotates by β=90∘\beta = 90^\circ about s=(0,2)\mathbf{s} = (0, 2). Both motions end at the same pose. The three screw coordinates (β,sx,sy)(\beta, s_x, s_y) parametrize the displacement. Here, (sx,sy)=(0,2)(s_x, s_y) = (0, 2) gives the coordinates of the point s\mathbf{s} in the fixed frame {s}\{s\}. This point is the screw axis out of the page.

From velocity to motion

For rotations, angular velocity and the exponential form this sequence: R(t)→  differentiate  R˙→  R−1  [ω]→  exp⁡([ω]Δt)  R(t+Δt).R(t) \xrightarrow{\;\text{differentiate}\;} \dot R \xrightarrow{\;R^{-1}\;} [\omega] \xrightarrow{\;\exp([\omega]\Delta t)\;} R(t + \Delta t) . Multiplication by R−1R^{-1} extracts the local motion. The exponential converts that motion into a finite rotation. In rotation representations, an animation of a tangent plane on a sphere depicts the same wrapping process for the sphere S2S^2. For poses, the corresponding quantities are TT, the twist [Vb][\mathcal{V}_b], and e[Vb]Δte^{[\mathcal{V}_b]\Delta t}. A body with a constant twist moves along a screw. In the plane. Consider the TurtleBot pose from poses in SE(3).
  1. Velocity. The robot travels forward at speed vv and turns at rate ω\omega. Its wheels cannot slide sideways, so its velocity in the body frame is the twist Vb=(ω,v,0)\mathcal{V}_b = (\omega, v, 0). This order follows Lynch and Park: turning rate comes first, forward speed second, and sideways speed last. The sideways component is zero. In matrix form, the twist is [Vb]=[0−ωvω00000]∈se(2).[\mathcal{V}_b] = \begin{bmatrix} 0 & -\omega & v \\ \omega & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix} \in \mathfrak{se}(2) . This matrix belongs to the Lie algebra. In the notation of Lie I, [Vb][\mathcal{V}_b] is τ∧\tau^\wedge.
  2. Motion. During a short time interval Δt\Delta t, update the pose with Tk+1=Tkexp⁡([Vb] Δt).T_{k+1} = T_k \exp\big([\mathcal{V}_b]\,\Delta t\big) .
Wheeled robots derives (v,ω)(v, \omega) from the wheel speeds and applies this update to odometry. The chassis can point in any direction and reach any position. At each instant, the constraint vby=0v_{by} = 0 allows it to move only forward, backward, or turn.
The TurtleBot runs ROS 2, which stores the same quantities in a different form.
  • Pose. A geometry_msgs/Pose contains a position and an orientation quaternion instead of a matrix TT. A planar heading θ\theta becomes the unit quaternion (x,y,z,w)=(0,0,sin⁡θ2,cos⁡θ2)(x, y, z, w) = (0, 0, \sin\tfrac{\theta}{2}, \cos\tfrac{\theta}{2}). ROS lists the scalar part ww last.
  • Twist. A geometry_msgs/Twist lists the linear velocity before the angular velocity, which reverses the Lynch and Park order. A drive command sets linear.x to vv and angular.z to ω\omega and leaves the other four components at zero.
  • Odometry. A nav_msgs/Odometry message gives the pose in a fixed frame and the twist in the robot’s frame. Its twist is therefore the body twist Vb\mathcal{V}_b.
  • Frames. REP 103 makes every frame right handed, with xx forward, yy left, and zz up on the robot.

References

  • Kevin M. Lynch, F. (2017). Modern Robotics.

Found an error on this page? Report an issue.