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?

  • $\begingroup$ This appears to be a planar projection of motion twists resolved on two different points A and B. $\endgroup$ – 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} $$

  • 1
    $\begingroup$ awesome. John, thank you. $\endgroup$ – arifle Dec 12 '20 at 15:48
  • $\begingroup$ 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. $\endgroup$ – arifle Dec 14 '20 at 13:52
  • $\begingroup$ 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$$ $\endgroup$ – John Alexiou Dec 15 '20 at 0:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.