机器人学中的数学基础

Published: by Creative Commons Licence

关于符号表示: $s\theta=\sin\theta, c\theta=\cos\theta$

1. 位置和姿态的表示

位置矢量】对于直角坐标系${A}$,空间任一点$p$的位置可用$3\times 1$的列矢量 $^A{p}$ 表示:

\[^Ap=\begin{bmatrix} p_x\\ p_y\\ p_z \end{bmatrix}\tag{1.1}\]

旋转矩阵】对于物体的方位(orientation),我们可由某个固接于此物体的坐标系描述。为了规定空间某刚体 $B$ 的方位,设置一直角坐标系 ${B}$ 与此刚体固接。用坐标系 ${B}$ 的三个单位主矢量 $x_B,y_B,z_B$ 相对于参考坐标系 ${A}$ 的方向余弦组成的 $3\times3$ 矩阵:

\[^A_BR=\begin{bmatrix} ^Ax_B&^Ay_B&^Az_B \end{bmatrix}=\begin{bmatrix} r_{11}&r_{12}&r_{13}\\ r_{21}&r_{22}&r_{23}\\ r_{31}&r_{32}&r_{33} \end{bmatrix}\tag{1.2}\]

来表示刚体 $B$ 相对于坐标系 ${A}$ 的方位,其中 $^A_BR$ 称为旋转矩阵。

上标 $A$ 表示代表参考坐标系 ${A}$ ,下标 $B$ 表示被描述的坐标系 ${B}$ 。其中,$^A_BR$ 的三个列矢量 $^Ax_B,^Ay_B,^Az_B$ 都是单位矢量两两垂直

旋转矩阵 $^A_BR$ 正交,且满足条件

\[\begin{matrix} ^A_BR^{-1}={}^A_BR^{T};&\vert ^A_BR\vert =1 \end{matrix}\tag{1.3}\]

因为其正交性质 $(1.3)$ ,我们有

\[^B_AR={}^A_BR^{-1}={}^A_BR^{T}\tag{1.4}\]

对于轴 $x,y,z$ 作转角为 $\theta$ 的旋转变换,其旋转矩阵分别为:

\[\begin{matrix} R(x,\theta)=\begin{bmatrix} 1&0&0\\ 0&c\theta&-s\theta\\ 0&s\theta&c\theta \end{bmatrix},& R(y,\theta)=\begin{bmatrix} c\theta&0&-s\theta\\ 0&1&0\\ s\theta&0&c\theta \end{bmatrix},& R(z,\theta)=\begin{bmatrix} c\theta&-s\theta&0\\ s\theta&c\theta&0\\ 0&0&1 \end{bmatrix} \end{matrix}\tag{1.5}\]

位姿描述】首先选取 ${B}$ 的坐标原点(一般选择物体 $B$ 的特征点,如质心上)。相对参考系 ${A}$ ,刚体 $B$ 的位姿由坐标系 ${B}$ 来表述(其中包括刚体 $B$ 特征点的位置矢量 $^Ap_{B_O}$ 和旋转矩阵 $^A_BR$ ),即有

\[\{B\}=\{\begin{matrix} ^A_BR&^Ap_{B_O} \end{matrix}\}\]

【手爪坐标系】为了描述手爪的位置和姿态(位姿),规定一坐标系与手抓固结,称手爪坐标系。其 $z$ 轴设在手指接近物体的方向,称接近矢量 $a$ (approach);$y$ 轴设在两手指的联线方向,称为方位矢量 $o$ (orientation);$x$ 轴由右手法则确定:$n=o\times a$,$n$ 称为法向矢量(normal)。如此,手爪的方位由旋转矩阵 $R$ 所规定,即

\[R=[n,o,a]\]

三个单位正交矢量 $n,o,a$ 描述了手爪的姿态。而手爪的位置由位置矢量 $p$ 规定,它代表手爪坐标系的原点。因此,手爪的位姿由四个矢量 ${n,o,a,p}$ 来描述,记为

\[\{T\}=\{n,o,a,p\}\]

2. 坐标变换

坐标平移方程

\[^Ap={}^Bp+{}^Ap_{B_O}\tag{2.1}\]

坐标旋转方程

\[^Ap={}^A_BR^Bp\tag{2.2}\]

一般情况(平移和旋转的复合)

\[^Ap={}^A_BR^Bp+{}^Ap_{B_O}\tag{2.3}\]

3. 齐次坐标变换

【齐次变换形式】式子 $(2.3)$ 对于点 $^Bp$ 而言非齐次,若要齐次,做如下变形:

\[\begin{bmatrix} ^Ap\\ 1 \end{bmatrix}=\begin{bmatrix} ^A_BR&^Ap_{B_O}\\ 0&1 \end{bmatrix}\begin{bmatrix} ^Bp\\ 1 \end{bmatrix}\tag{3.1}\]

其中,$4\times 1$ 的列矢量表示三位空间的点,称为点的齐次坐标,仍然记为齐次坐标,仍然记为 $^Ap$ 或 $^Bp$。于是上式可写为矩阵形式

\[\begin{matrix} ^Ap={}^A_BT^Bp,&while&^A_BT=\begin{bmatrix} ^A_BR&^Ap_{B_O}\\ 0&1 \end{bmatrix} \end{matrix}=\begin{bmatrix} n_x&o_x&a_x&p_x\\ n_y&o_y&a_y&p_y\\ n_z&o_z&a_z&p_z\\ 0&0&0&1 \end{bmatrix}\tag{3.2}\]

空间某点 $p$ 的直角坐标描述和齐次坐标描述分别为:

\[\begin{matrix} p=\begin{bmatrix} x\\ y\\ z \end{bmatrix},&p=\begin{bmatrix} x\\ y\\ z\\1 \end{bmatrix}=\begin{bmatrix} \omega x\\\omega y\\\omega z\\\omega \end{bmatrix} \end{matrix}\]

其中,$\omega$为非零常数,为【坐标比例系数】。

坐标原点的矢量,即零矢量表示为 $[0,0,0,1]^T$。矢量 $[0,0,0,0]^T$ 没有定义。具有形如 $[a,b,c,0]$ 的矢量表示无限远矢量(无穷远点),用来表示方向,我们把包括无穷远点的空间称为扩大空间,而把第4个元素非零的点称为非无穷远点。$[1,0,0,0],[0,1,0,0],[0,0,1,0]$ 分别表示 $x,y,z$ 轴的方向。

点积和交积

两矢量的点积(标量):

\[a\cdot b=a_xb_x+a_yb_y+a_zb_z\]

交积(矢量):

\[a\times b=\left\vert\begin{array}{ccc} i& j &k\\ a_x& a_y &a_z\\ b_x& b_y&b_z \end{array}\right\vert\]

平移齐次坐标系

\[Trans(a,b,c)=\begin{bmatrix} 1&0&0&a\\ 0&1&0&b\\ 0&0&1&c\\ 0&0&0&1\\ \end{bmatrix}\]

非零常数乘以变换矩阵的每个元素,不改变该变换矩阵的特性。

旋转齐次坐标变换

改造 $(1.5)$,可以得到对应于轴 $x,y,z$ 作转角为 $\theta$ 的旋转变换,分别可得

\[\begin{matrix} Rot(x,\theta)=\begin{bmatrix} 1&0&0&0\\ 0&c\theta&-s\theta&0\\ 0&s\theta&c\theta&0\\ 0&0&0&1 \end{bmatrix},& Rot(y,\theta)=\begin{bmatrix} c\theta&0&-s\theta&0\\ 0&1&0&0\\ s\theta&0&c\theta&0\\ 0&0&0&1 \end{bmatrix},& Rot(y,\theta)=\begin{bmatrix} c\theta&-s\theta&0&0\\ s\theta&c\theta&0&0\\ 0&0&1&0\\ 0&0&0&1 \end{bmatrix} \end{matrix}\]

变换矩阵左乘和右乘的解释

矩阵的乘法不具有交换性质,即 $AB\ne BA$

  • 变换顺序“从右向左”,指明运动是相对固定坐标系而言;
  • 变换顺序“从左向右”,指明运动是相对运动坐标系而言。

4. 物体的变换及逆变换

物体位置描述

如果我们想对一个坐标系内的多个点进行变换,我们可以将这多个点的点坐标作为列坐标组合得到一个矩阵,然后可以“快乐搞批发”。

\[[{}^Ap_{1},{}^Ap_{2},...,{}^Ap_{n}]={}^A_BT[{}^Bp_{1},{}^Bp_{2},...,{}^Bp_{n}]\tag{4.1}\]

复合变换

\[^A_CT={}^A_BT{}^B_CT=\begin{bmatrix} ^A_BR&^Ap_{B_O}\\ 0&1 \end{bmatrix}\begin{bmatrix} ^B_CR&^Ap_{C_O}\\ 0&1 \end{bmatrix}=\begin{bmatrix} ^A_BR{}^B_CR&^A_BR^Bp_{C_O}+^Ap_{B_O}\\ 0&1 \end{bmatrix}\tag{4.2}\]

齐次变换的逆变换

方法有二,一种是直接对 $4\times 4$ 的齐次变换矩阵 $^A_BT$ 求逆;另一种是利用齐次变换矩阵的特点,简化矩阵求逆运算。

正交法

对于

\[^A_BT=\begin{bmatrix} ^A_BR&^Ap_{B_O}\\ 0&1 \end{bmatrix}\]

我们有

\[^B_AT={}^A_BT^{-1}=\begin{bmatrix} ^A_BR^T&-^A_BR^T{}^Ap_{B_O}\\ 0&1 \end{bmatrix}\tag{4.3}\]

证明如下:

直接法

\[T=\begin{bmatrix} n_x&o_x&a_x&p_x\\ n_y&o_y&a_y&p_y\\ n_z&o_z&a_z&p_z\\ 0&0&0&1 \end{bmatrix}\]

则其逆变换为

\[T^{-1}=\begin{bmatrix} n_x&n_y&n_z&-p\cdot n\\ o_x&o_y&o_z&-p\cdot o\\ a_x&a_y&a_z&-p\cdot a\\ 0&0&0&1 \end{bmatrix}\tag{4.4}\]

5. 通用旋转变换

研究某个绕着从原点出发的任一矢量(轴)$f$ 旋转 $\theta$ 角时的旋转矩阵。

通用旋转变换公式

通过 $f$ 和 $\theta$ 去求旋转变换矩阵。

假设 $f$ 为坐标系 ${C}$ 的 $z$ 轴上的单位矢量,即

\[C=\begin{bmatrix} n_x&o_x&a_x&0\\ n_y&o_y&a_y&0\\ n_z&o_z&a_z&0\\ 0&0&0&1 \end{bmatrix}\\ f=a_xi+a_yj+a_zk\]

于是绕矢量 $f$ 旋转相当于绕坐标系 ${C}$ 的 $z$ 轴旋转,即有

\[Rot(f,\theta)=Rot(c_z,\theta)\tag{5.1}\]

而通过推导和化简,可以得到

\[Rot(f,\theta)=\begin{bmatrix} f_xf_xvers\theta+c\theta&f_yf_xvers\theta-f_zs\theta&f_zf_xvers\theta+f_ys\theta&0\\ f_xf_yvers\theta+f_zs\theta&f_yf_yvers\theta+c\theta&f_zf_yvers\theta-f_xs\theta&0\\ f_xf_zvers\theta+f_zs\theta&f_yf_zvers\theta+f_xs\theta&f_zf_zvers\theta+c\theta&0\\ 0&0&0&1 \end{bmatrix}\tag{5.2}\]

等效转角与转轴

通过旋转变换矩阵求解其等效的转轴与等效转角,是上一小部分的反向问题。

由任一旋转变换,能够通过式 $(5.2)$ 求得等效旋转角 $\theta$ 的转轴。

对于旋转变换:

\[R=\begin{bmatrix} n_x&o_x&a_x&0\\ n_y&o_y&a_y&0\\ n_z&o_z&a_z&0\\ 0&0&0&1 \end{bmatrix}=\begin{bmatrix} f_xf_xvers\theta+c\theta&f_yf_xvers\theta-f_zs\theta&f_zf_xvers\theta+f_ys\theta&0\\ f_xf_yvers\theta+f_zs\theta&f_yf_yvers\theta+c\theta&f_zf_yvers\theta-f_xs\theta&0\\ f_xf_zvers\theta+f_zs\theta&f_yf_zvers\theta+f_xs\theta&f_zf_zvers\theta+c\theta&0\\ 0&0&0&1 \end{bmatrix}\]

等效转角

\[\tan\theta=\frac{s\theta}{c\theta}=\frac{\sqrt{(o_z-a_y)^2+(a_x-n_z)^2+(n_y-o_x)^2}}{n_x+o_y+a_z-1}\]

等效转轴

\[f=(f_x,f_y,f_z),while\begin{cases} f_x=(o_z-a_y)/2s\theta\\ f_y=(a_x-n_z)/2s\theta\\ f_z=(n_y-o_x)/2s\theta \end{cases}\]

6. 欧拉角与RPY角

绕固定轴 $x-y-z$ 轴旋转($RPY$角)

  • Roll:绕$z$轴的旋转($\alpha$角)
  • Pitch: 绕$y$轴的旋转($\beta$角)
  • Yaw: 绕$x$轴的旋转($\gamma$角)

描述坐标系 ${B}$ 的法则】${B}$ 的初始方位与参考系 ${A}$ 重合。首先将 ${B}$ 绕 $z_A$ 转 $\gamma$ 角,再绕 $y_A$ 转 $\beta$ 角,最后绕 $z_A$ 转 $\alpha$ 角。

求旋转矩阵

因为三次旋转都是相对于固定坐标系 \(\{A\}\) 而言,所以按照“从右向左”原则,得到相应的旋转矩阵

\[^A_BR_{xyz}(\gamma,\beta,\alpha)=R(z_A,\alpha)R(y_A,\beta)R(x_A,\gamma)\tag{6.1}\]

最后可得

\[^A_BR_{xyz}(\gamma,\beta,\alpha)=\begin{bmatrix} c\alpha~c\beta&c\alpha~s\beta~s\gamma-s\alpha~c\gamma&c\alpha~s\beta~c\gamma+s\alpha~s\gamma\\ s\alpha~c\beta&s\alpha~s\beta~s\gamma+c\alpha~c\gamma&s\alpha~s\beta~c\gamma-c\alpha~s\gamma\\ -s\beta&c\beta~s\gamma&c\beta~c\gamma \end{bmatrix}\tag{6.2}\]

RPY角反解

对于旋转矩阵

\[^A_BR_{xyz}(\gamma,\beta,\alpha)=\begin{bmatrix} r_{11}&r_{12}&r_{13}\\ r_{21}&r_{22}&r_{23}\\ r_{31}&r_{32}&r_{33} \end{bmatrix}\tag{6.3}\]

由式 $(6.2)$ 和 $(6.3)$,我们可以求得

\[cos\beta=\sqrt{r_{11}^2+r_{21}^2}\]

如果 $\cos\beta\ne0$,

\[\begin{cases} \beta=A\tan2(-r_{31},\sqrt{r_{11}^2+r_{21}^2})\\ \alpha=A\tan2(r_{21}.r_{11})\\ \gamma=A\tan2(r_{32},r_{33}) \end{cases}\tag{6.4}\]

关于 $A\tan2(y,z)$ 见附录。

如果 $\beta=90^\circ$,

\[\begin{cases} \beta=90^\circ\\ \alpha=0\\ \gamma=A\tan2(r_{12},r_{22}) \end{cases}\]

如果 $\beta=-90^\circ$,

\[\begin{cases} \beta=-90^\circ\\ \alpha=0\\ \gamma=-A\tan2(r_{12},r_{22}) \end{cases}\]

$z-y-x$ 欧拉角

描述坐标系 ${B}$ 的法则】${B}$ 的初始方位与参考系 ${A}$ 相同。首先使 ${B}$ 绕 $z_B$ 转 $\alpha$ 角,再绕 $y_B$ 转 $\beta$ 角,最后绕 $x_B$ 转 $\gamma$ 角。

这种描述方法中,各次转动都是相对于运动坐标系的某轴进行的,而不是相对于固定的参考系 ${A}$。这样的三次转动称为欧拉角,有因转动的顺序是绕$z$轴、$y$轴和$x$轴,故这种描述法为 $z-y-x$ 欧拉角。

求zyx欧拉角

另外,因为“各次转动都是相对于运动坐标系的某轴进行的”,所以根据“从左向右”的原则来安排各次旋转对应的矩阵:

\[^A_BR_{zyx}(\alpha,\beta,\gamma)=R(z,\alpha)R(y,\beta)R(x,\gamma)\]

矩阵相乘得到

\[^A_BR_{zyx}(\alpha,\beta,\gamma)=\begin{bmatrix} c\alpha~c\beta&c\alpha~s\beta~s\gamma-s\alpha~c\gamma&c\alpha~s\beta~c\gamma+s\alpha~s\gamma\\ s\alpha~c\beta&s\alpha~s\beta~s\gamma+c\alpha~c\gamma&s\alpha~s\beta~c\gamma-c\alpha~s\gamma\\ -s\beta&c\beta~s\gamma&c\beta~c\gamma \end{bmatrix}\tag{6.5}\]

反解zyx欧拉角

我们可以发现式 $(6.5)$ 与式 $(6.2)$ 完全相同,故而角度 $\alpha,\beta,\gamma$ 的求解也可以使用式 $(6.4)$ 。

为什么相同的原因:绕固定轴旋转的顺序若与绕运动轴旋转的顺序相反,且旋转的角度也对应相等时,所得到的变换矩阵是相同的。因此,$z-y-x$ 欧拉角与固定轴 $x-y-z$ 转角描述坐标系 ${B}$ 是完全等价的。

$z-y-z$欧拉角

描述坐标系 ${B}$ 的法则】${B}$ 的初始方位与参考系 ${A}$ 重合。首先使 ${B}$ 绕 $z_B$ 转 $\alpha$ 角,再绕 $y_B$ 转 $\beta$ 角,最后绕 $z_B$ 转 $\gamma$ 角。

求zyz欧拉角的旋转矩阵

同样,因为转动相对于运动坐标系而言,所以使用“从左向右”原则,去求旋转矩阵:

\[^A_BR_{zyx}(\alpha,\beta,\gamma)=R(z,\alpha)R(y,\beta)R(z,\gamma) =\begin{bmatrix} c\alpha~c\beta~c\gamma-s\alpha~s\gamma&-c\alpha~s\beta~s\gamma-s\alpha~c\gamma&c\alpha~s\beta\\ s\alpha~c\beta~c\gamma+c\alpha~s\gamma&-s\alpha~c\beta~s\gamma+c\alpha~c\gamma&s\alpha~s\beta\\ -s\beta~c\gamma&s\beta~s\gamma&c\beta \end{bmatrix}\]

反解zyz欧拉角

令旋转矩阵如下

\[^A_BR_{zyz}(\alpha,\beta,\gamma)=\begin{bmatrix} r_{11}&r_{12}&r_{13}\\ r_{21}&r_{22}&r_{23}\\ r_{31}&r_{32}&r_{33} \end{bmatrix}\]

如果 $\sin\beta\ne0$,则

\[\begin{cases} \beta=A\tan2(\sqrt{r_{31}^2+r_{32}^2},r_{33})\\ \alpha=A\tan2(r_{23},r_{13})\\ \gamma=A\tan2(r_{32},-r_{31}) \end{cases}\]

如果 $\beta=0^\circ$,

\[\begin{cases} \beta=0\\ \alpha=0\\ \gamma=A\tan2(-r_{12},r_{11}) \end{cases}\]

如果 $\beta=180^\circ$,

\[\begin{cases} \beta=180^\circ\\ \alpha=0\\ \gamma=A\tan2(r_{12},-r_{11}) \end{cases}\]

附录

参考

[1] 蔡自兴. (2000). 机器人学 (1st ed.). 清华大学出版社.

[2] 熊有伦. (1996). 机器人技术基础. 华中科技大学出版社.