1

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?

Qmechanic
  • 201,751
arifle
  • 13

1 Answers1

0

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} $$

John Alexiou
  • 38,341
  • 1
    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 00:12