四旋翼三--四旋翼运动学


本系列文章是以Vijay Kumar老师在coursera上的课程Robotics: Aerial Robotics为参考,进行归纳整理。

关于旋转矩阵,欧拉角这部分内容可以看我之前的文章,这里做一些补充说明。

旋转矩阵的性质

  • 正交矩阵,即$RR^T=RR^{-1}=I$
  • 行列式等于+1
  • 任意两个旋转矩阵相乘依然是旋转矩阵
  • 旋转矩阵的逆矩阵仍然是旋转矩阵

沿任意向量旋转的旋转矩阵

叉乘转换

两个向量叉乘可以写成一个矩阵和一个向量点乘的形式,如下:
$$
\begin{bmatrix}
a_1 \\ a_2 \\ a_3
\end{bmatrix} \times \begin{bmatrix}
b_1 \\ b_2 \\ b_3
\end{bmatrix} = \begin{bmatrix}
a_2b_3-a_3b_2 \\ a_3b_1-a_1b_3 \\ -a_2b_1+a_1b_2
\end{bmatrix} = \begin{bmatrix}
0&-a_3&a_2 \\ a_3&0&-a_1 \\ -a_2&a_1&0
\end{bmatrix}\begin{bmatrix}
b_1 \\ b_2 \\ b_3
\end{bmatrix}
$$为了以示区别,将那个展开的矩阵写为$\hat a$,所有就有了:
$$
\vec a \times \vec b = \hat a \vec b
$$

沿任意向量旋转

沿任意向量旋转的旋转矩阵如下,其中$u$是旋转轴,$\phi$是旋转角度。
$$
Rot(u,\phi) = Icos\phi+uu^T(1-cos\phi)+\hat usin\phi
$$

旋转以及角速度

旋转矩阵的导数

已知有一个旋转矩阵$R(t)$,因为它是正交矩阵所以有:
$$
R^T(t)R(t)=I \\
R(t)R(t)^T=I
$$
对它进行求导后得到:
$$
\dot R^TR+R^T\dot R=0 \\
R\dot R^T+\dot RR^T=0
$$其中$R^T\dot R$和$\dot RR^T$是斜对称矩阵,所以它们就可以转换为一个向量叉乘的形式。

旋转的角速度

假设刚体上有一点$p$经过旋转之后变成了点$q$,那么它们俩之间的关系可以写成$q(t)=R(t)p$,对两边同时求导就得到了$\dot q=\dot Rp$,其中$p$是在body frame下的位置,$\dot q$是在inertial frame下的速度。经过转换我们可以得到以下两个式子:
$$
\begin{aligned}
&R^T\dot q=R^T\dot Rp \\
&\dot q=\dot RR^Tq
\end{aligned}
$$在第一个式子中,点$p$左乘$R^T\dot R$后就得到了它在body frame下的速度,因此可以将$R^T\dot R$看作一个角速度记为$\hat w^b$,用来得到在body frame下某个点的速度。在第二个式子中,点$q$左乘$\dot RR^T$后就得到了它在inertial frame下的速度,因此可以将$\dot RR^T$看作一个角速度记为$\hat w^s$,用来得到在inertial frame下某个点的速度。

举例

如下图,点$p=[1,0,0]^T$绕z轴旋转到点$q=[0,1,0]^T$,求出在inertial frame和body frame的速度。

首先我们算出$\hat w^b$和$\hat w^s$如下:

在转动的过程中$q$点的坐标为$[cos\theta, sin\theta,0]^T$,可以得到在inertial frame的速度为:
$$
\begin{aligned}
\dot q&=\dot RR^Tq \\
&=\begin{bmatrix}
-sin\theta \\ cos\theta \\ 0
\end{bmatrix}\dot \theta
\end{aligned}
$$而在body frame里,因为刚体自身坐标系会随着刚体转动,所以点$p$的速度方向相当于点$q$在$\theta=0$时的方向,通过计算也可以得到答案:
$$
\begin{aligned}
R^T\dot q &=R^T\dot Rp \\
&=\begin{bmatrix}
0 \\ 1 \\0
\end{bmatrix} \dot \theta
\end{aligned}
$$


文章作者: Xiao Bai
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Xiao Bai !
评论
  目录