# How the rotation is possible applied onto derivatives?

After reading kinematics of mobile robot or the rigid-body, I get something not quite undersand why it it possible.

Suppose that coordinate system $$A$$ is the global or the reference frame, in which a robot with a rigid-body frame or local coordinate system $$B$$ is working.

$$\theta$$ is the angle between $$X_A$$ and $$X_B$$. Point $$P_B(x_B, y_B, \theta)$$ is assumed to be center of mass of the robot. $$R(\theta) = \begin{bmatrix} \cos(\theta) & \sin(\theta) & 0 \\ -\sin(\theta) & \cos(\theta) & 0 \\ 0 & 0 & 1\end{bmatrix}$$ is the rotation matrix mapping $$P_B$$ to $$P_A(x_A, y_A, \theta)$$. This is the rotation of pose and is clear. The tutorial does not give this. Instead, it gives a rotation between velocities from $$A$$ to $$B$$ which I don't understand cause it is derivative like $$[\dot{x_B} \quad \dot{y_B} \quad \dot{\theta}] = R(\theta) [\dot{x_A} \quad \dot{y_A} \quad \dot{\theta}]$$.

How the rotation is possible applied onto derivatives?

• This appears to be a planar projection of motion twists resolved on two different points A and B. – John Alexiou Dec 11 '20 at 5:31

I think it is important first to understand what does a term like $$\boldsymbol{v}_A = \pmatrix{ \dot{x}_A \\ \dot{y}_A \\ \dot{\theta} }$$ means in terms of rigid body motions. It represents the motion of the entire body, expressed at point A as a motion twist. It is composed of the velocity vector $$\vec{v}_A$$ of whatever particle on the body is passing under A at the time, and the rotational vector $$\vec{\omega}$$ of the body. Those two vectors are combined and projected to the plane to give $$\boldsymbol{v}_A$$. But it is a heck of a lot easier to understand the kinematic equations (twist algebra) when expressed in 3D.

As such, we have the 6×1 motion twist at A as $$\boldsymbol{v}_A = \pmatrix{ \vec{v}_A \\ \vec{\omega} }$$ and we want to express the motion of the body at a different point B. Let us define $$\vec{r} = \pmatrix{x \\ y \\ 0}$$ the relative location of B w.r.t. A, and $$\mathrm{R}$$ the 3×3 rotation matrix of the frame at B relative to A.

Note that $$R(\theta)$$ in the question is not a rotation matrix but rather a twist transformation that represents a rotation.

The rotation matrix for an angle $$\theta$$ about the z-axis is $$\mathrm{R} = \begin{vmatrix} \cos \theta & -\sin \theta & 0 \\ \sin \theta & \cos \theta & 0 \\ 0 & 0 & 1 \end{vmatrix}$$

Expressed in the local coordinate system B the rotational velocity vector of the body is $$\vec{\omega}^B = \mathrm{R}^\top \vec{\omega}$$. But the translational velocity is a bit more complex with $$\vec{v}_B^B = \mathrm{R}^\top ( \vec{v}_A + \vec{\omega} \times \vec{r} ) = \mathrm{R}^\top \vec{v}_A + \vec{\omega}_B^B \times (\mathrm{R}^\top \vec{r})$$

So in term of linear algebra you have

$$\boldsymbol{v}_B = \pmatrix{ \vec{v}_B^B \\ \vec{\omega}^B} = \pmatrix{\mathrm{R}^\top \vec{v}_A - (\mathrm{R}^\top \vec{r}) \times (\mathrm{R}^\top \vec{\omega}) \\ \mathrm{R}^\top \vec{\omega} } = \begin{bmatrix} \mathrm{R}^\top & - (\mathrm{R}^\top \vec{r}) \times \\ 0 & \mathrm{R}^\top \end{bmatrix} \boldsymbol{v}_A$$

project this to the plane and you have

$$\pmatrix{\dot{x}_B^B \\ \dot{y}_B^B \\ \dot{\theta} } =\underbrace{ \begin{bmatrix} \cos \theta & \sin \theta & x \sin \theta - y \cos \theta \\ -\sin \theta & \cos \theta & x \cos \theta + y \sin \theta \\ 0 & 0 & 1 \end{bmatrix}}_{\text{transformation world to local}} \pmatrix{\dot{x}_A \\ \dot{y}_A \\ \dot \theta}$$

also note the inverse

$$\pmatrix{\dot{x}_A \\ \dot{y}_A \\ \dot{\theta} } =\underbrace{ \begin{bmatrix} \cos \theta & -\sin\theta & y \\ \sin \theta & \cos \theta & -x \\ 0 & 0 & 1 \end{bmatrix}}_{\text{transformation local to world}} \pmatrix{\dot{x}_B^B \\ \dot{y}_B^B \\ \dot \theta}$$

• awesome. John, thank you. – arifle Dec 12 '20 at 15:48
• Hello, @John Alexiou. I have to ask another question about your answer. The derivation you gave here is dependent on the "twist". For me, there was a mistake in typing the question which is the pose of $P_B$. The one corrected should be $P_B=(x_B,y_B, 0)$. On the other hand, the velocity vector in the world frame is actually the derivative of $P_A$ w.r.t time $t$. $R(\theta)$ is still the rotation matrix mapping the velocity vector to the frame of the body. Is my understanding correct. Thank you. – arifle Dec 14 '20 at 13:52
• In 3D the velocity twist is not the derivative of the pose. It happens to be so in 2D because of a few coincidences. Also, the velocity vector at B is the derivative of the position vector of B, But the derivative of the 3D rotation matrix $R$ is $$\dot{R} = \vec{\omega} \times R$$ – John Alexiou Dec 15 '20 at 0:12