现代机器人学:角速度

若希望先建立图像直觉,可从新增的坐标、旋转与螺旋运动进入,那里用坐标滑杆和具体算例推导角速度,再连接到运动旋量。整套学习路线还包含运动学、力与动力学。

在了解角速度这块的时候,有必要了解一些基础的知识;

反对称矩阵

AT=−AA^T=-A

称其为反对称矩阵,将向量表示成反对称矩阵如下

[ω]=[0−ω3ω2ω30−ω1−ω2ω10][\omega]=\begin{bmatrix} 0 & -\omega_3 & \omega_2\\ \omega_3 & 0 & -\omega_1\\ -\omega_2 & \omega_1 & 0 \end{bmatrix}

后面用符号**[x]**来表示向量x的反对称矩阵,将所有的3*3反对称矩阵称为so(3), 其中so表示反对称矩阵,定义如下

so(n)={S∈Rn×n:ST=−S}so(n)=\left\{S\in\mathbb{R}^{n\times n}:S^T=-S\right\}

其中反对称矩阵so(3)称为SO(3)群的李代数,SO表示特殊正交(special orthogonal)的意思, 特殊在detR=+1,用于表示空间中的旋转矩阵,其SO的定义如下

SO(n)={R∈Rn×n:RRT=I,det⁡R=+1}SO(n)=\left\{R\in\mathbb{R}^{n\times n}:RR^T=I,\det R=+1\right\}

角速度表示

R可以表示空间中的旋转,那如果想知道空间旋转的角速度,是不是直接求导就行了?和他提出的疑问是一样的

姿态可以用旋转矩阵 RR 表示,但角速度不能直接简单地写成 R˙\dot{R},因为 RR 有 9 个元素,而角速度只需要 3 个量来描述。

当然不能直接求导,因为矩阵里面有9个变量,只希望用三个变量来表示角速度,我们知道,角速度可以通过一个旋转轴和对应的旋转速度来表示

空间角速度

这里假设了旋转轴为ωs\omega_s , 是一个相对于惯性坐标系,也可以称之为静止坐标系,为了单位的统一,这里可以假设旋转轴为单位旋转向量,其中单位向量的识别符为在上面加个帽子,即ω^s\hat{\omega}_s ,用单位旋转轴乘以其速率,即可得到角速度向量ωs\omega_s ,即

ωs=θ˙ ω^s\omega_s=\dot{\theta}\,\hat{\omega}_s

这样坐标系{b}在绕这个轴旋转时,其x轴方向将相对于s坐标系画一个圆,

不难得到,坐标系{b}的三个轴的速度可以表示为

x˙b=ωs×xb,y˙b=ωs×yb,z˙b=ωs×zb\dot{x}_b=\omega_s\times x_b,\qquad \dot{y}_b=\omega_s\times y_b,\qquad \dot{z}_b=\omega_s\times z_b

利用括号运算符(表示叉乘), 通过上式,就可以直接得到如下关系式了(比直接看机器人操作的数学导论更容易理解,那书中就直接定义了,也没给出解释,搞得有点懵)

R˙sb=[x˙by˙bz˙b]=[ωs]Rsb\dot{R}_{sb}=\begin{bmatrix}\dot{x}_b&\dot{y}_b&\dot{z}_b\end{bmatrix}=[\omega_s]R_{sb}

空间旋转轴的表示方法

相对于s坐标系的旋转矩阵一般可以省略下标,通过以上推导,就不难得到第一个重要的公式,即

[ωs]=R˙RT[\omega_s]=\dot{R}R^T

当然,这里给出的角速度是相对于空间坐标系的,当然可以相对于物体坐标系,通过下标对消规则,ωb\omega_b 可以表示为

ωb=Rbsωs=RsbTωs\omega_b=R_{bs}\omega_s=R_{sb}^T\omega_s

下面得到第二个重要公式前,需要知道一个定理,即

R[ω]RT=[Rω]R[\omega]R^T=[R\omega]

这样不难推导出第二个重要公式,即

[ωb]=[RTωs]=RT[ωs]R=RT(R˙RT)R=RTR˙[\omega_b]=[R^T\omega_s]=R^T[\omega_s]R=R^T(\dot{R}R^T)R=R^T\dot{R}

物体角速度的解释

值得注意的是:ωb\omega_b并不是相对动坐标系的角速度;确切地说,ωb\omega_b 表示的是相对静坐标系{b}的角速度,{b}只是与运动刚体随动坐标系瞬时重合。另外还需要注意一点,这里无论对 R˙\dot{R} 左乘还是右乘 RTR^T 都会得到有关角速度的一个反对称矩阵,只是相对的坐标系不同。

更容易理解的推导

根据坐标变换公式:

ps=Rpbp_s=Rp_b

对上式左右同时求导:

p˙s=R˙pb+Rp˙b\dot{p}_s=\dot{R}p_b+R\dot{p}_b

因为 p是附着在刚体上的, 所以p相对于刚体坐标系下的速度为0,故有

p˙s=R˙pb=R˙R−1ps\dot{p}_s=\dot{R}p_b=\dot{R}R^{-1}p_s

可以看出 R˙\dot{R}R−1R^{-1} 将点的位置变成了点的线速度。又有角速度和线速度的公式:

p˙s=[ωs]ps\dot{p}_s=[\omega_s]p_s

所以有空间角速度

[ωs]=R˙R−1=R˙RT[\omega_s]=\dot{R}R^{-1}=\dot{R}R^T

对于自己而言,这种方式推导出的结果,记忆效果最佳;

参考

[1] 现代机器人学

[2] 机器人学笔记——中科院软件所

知识共享许可协议