旋转矩阵、指数表示法与旋量

1  旋转矩阵

1.1  二维

\begin{bmatrix} x\\ y \end{bmatrix}在平面上的平移可以表示为点的坐标加上一个向量,点绕原点的旋转可以表示为点的坐标左乘一个方阵\begin{bmatrix} a & b\\ c& d \end{bmatrix}\in SO(2)

具体过程如下:

平移:\begin{bmatrix} x\\ y \end{bmatrix}+ \begin{bmatrix} v_{x}\\ v_{y} \end{bmatrix}=\begin{bmatrix} x^{'}\\ y^{'} \end{bmatrix}

旋转:\begin{bmatrix} Cos\theta &-Sin\theta \\ Sin\theta& Cos\theta \end{bmatrix}.\begin{bmatrix} x\\ y \end{bmatrix}=\begin{bmatrix} xCos\theta -ySin\theta \\ xSin\theta +yCos\theta \end{bmatrix} = \begin{bmatrix} x^{'}\\ y^{'} \end{bmatrix}

\begin{bmatrix} x\\ y \end{bmatrix}为刚体上某个点初始的坐标,\begin{bmatrix} x^{'}\\ y^{'} \end{bmatrix}为变换后的坐标。

后续解释SO(2)的含义。

上图红点平移(2,2)得到黑点,红点左乘R1矩阵得到蓝点。

(刚体上任意两点间的距离在旋转或平移后保持不变。以此可以用旋转刚体的特征点(例如长方形的角点)并按之前的顺序连接旋转后的角点,来表征长方形的旋转)

矩阵\begin{bmatrix} a &b \\ c& d \end{bmatrix}的第一行和第二行分别表示该坐标系下x,y轴方向的单位向量。如果它们不能互相表达(即线性无关,例如\begin{bmatrix} 1 & 0\\ 0 & 1 \end{bmatrix},简记I,称为单位矩阵),那么他们的组合可以表示平面内的任意位置,平面为它们张成的空间,它们被称为空间的基。

基不一定互相垂直,例如\begin{bmatrix} 1 & 0\\ 1 & 1 \end{bmatrix},相同坐标的图形在不同的基下形状不同。下图中黑色平行四边形为正方形在\begin{bmatrix} 1 & 0\\ 1 & 1 \end{bmatrix}空间的形状。

单位矩阵\begin{bmatrix} 1 & 0\\ 0 & 1 \end{bmatrix}表示不做任何变换。旋转矩阵\begin{bmatrix} Cos\theta &-Sin\theta \\ Sin\theta& Cos\theta \end{bmatrix}旋转矩阵将图形绕原点旋转。它的两行分别是旋转前的基在旋转后的坐标系下的表示。或者说,为了将刚体旋转x度,需要把坐标系旋转-\theta度:原来的x轴变为x'=\vec{x}=(Cos\theta, -Sin\theta),原来的y轴变为y'=\vec{y'}=(Sin\theta, Cos\theta)

1.2  群

群(Group)是一种集合加上一种运算的代数结构。

我们把集合记作 A,运算记作\cdot, 那么群可以记作G=(A,\cdot )。群要求改运算满足以下四条件:

1. 封闭性:如果a1、a2在A中,那么a1\cdota2也在a中。

2. 结合律: 如果a1、a2、a3在A中,那么a1\cdota2\cdota3=a1\cdot(a2\cdota3)。

3. 幺元:存在a0,使得对于A中任意的a,都有a0\cdota=a。

4. 逆: 对于A中任意的a,都有a^{-1}\cdot a=a_{0}

所有的二维旋转矩阵构成一个群,记为SO(2):

1.矩阵a_{1}=\begin{bmatrix} Cos\alpha &-Sin\alpha \\ -Sin\alpha & Cos\alpha \end{bmatrix}作用为旋转\alpha度,矩阵a_{2}=\begin{bmatrix} Cos\beta &-Sin\beta \\ -Sin\beta & Cos\beta \end{bmatrix}作用为

旋转\beta度,那么

a1\cdot a2=\begin{bmatrix} Cos\alpha Cos\beta -Sin\alpha Sin\beta &-Cos\beta Sin\alpha -Cos\alpha Sin\beta \\ Cos\beta Sin\alpha +Cos\alpha Sin\beta & Cos\alpha Cos\beta -Sin\alpha Sin\beta \end{bmatrix}=\begin{bmatrix} Cos(\alpha +\beta ) &-Sin(\alpha +\beta ) \\ Sin(\alpha +\beta ) & Cos(\alpha +\beta ) \end{bmatrix}

即旋转\alpha度,再旋转\beta度与旋转(\alpha +\beta )度效果相同。

2.假定a_{1},a_{2},a_{3}分别为旋转\alpha ,\beta ,\gamma角度的矩阵,那么不同作用顺序的结合不影响最终的结果。

注意不是不同顺序的结合。\cdot运算可能不满足交换律,但是满足结合律。

3.维旋转矩阵的幺元为\begin{bmatrix} 1 & 0\\ 0 & 1 \end{bmatrix}。(对角线上的元素均为1,其他位置的元素均为0的矩阵被称为单位矩阵,记作I)

4.对于任意旋转\alpha的矩阵,都存在旋转-\alpha的矩阵作为它的逆矩阵。

SO(2)意为Special Orthogonal (2),特殊正交的意思,特殊指这个变换满足右手坐标系,即矩阵的行列式为1,正交指这个矩阵的两个基互相垂直,2指这是二维空间的群。\begin{bmatrix} \cos\theta&\sin\theta\\\sin\theta&-\cos\theta \end{bmatrix}是满足左手坐标系的正交群,他的行列式为-1。

1.3  齐次矩阵

将旋转矩阵和平移矩阵拼接可以得到齐次变换矩阵,二维下所有齐次变换矩阵构成SE(2)群,换言之,齐次变换矩阵是对应维度下表示所有刚体运动的群。

\left.T=\left[\begin{array}{cc}R&p\\0&1\end{array}\right.\right]=\left.\left[\begin{array}{ccc}r_{11}&r_{12}&p_1\\r_{21}&r_{22}&p_2\\0&0&1\end{array}\right.\right]=\left[\begin{array}{ccc}\cos\theta&-\sin\theta&p_1\\\sin\theta&\cos\theta&p_2\\0&0&1\end{array}\right]

意为左乘R旋转,再沿p向量平移。

由于齐次变换矩阵拓展了一个维度(SE(2)是个3*3的矩阵,SE(3)是个4*4的矩阵,无法直接和对应维数下的坐标相乘),规定向量和点的坐标格式如下,以便数学计算:

q点坐标:\begin{bmatrix}q_1\\q_2\\1\end{bmatrix},原点坐标\begin{bmatrix}0\\0\\1\end{bmatrix},向量v=\begin{bmatrix}v_1\\v_2\\0\end{bmatrix}

规则总结如下:

  1. 向量的和与差仍然是向量。
  2. 向量与点的和是一个点。
  3. 两个点之间的差是一个向量。
  4. 两个点的和没有意义。

将计算结果的最后一位舍掉,即可得到变换后的坐标:

\begin{bmatrix} Cos\theta &-Sin\theta & p1\\ Sin\theta &Cos\theta &p2 \\ 0&0 &1 \end{bmatrix}.\begin{bmatrix} x\\ y \\ 1 \end{bmatrix}=\begin{bmatrix} p1+xCos\theta -ySin\theta \\ p2+yCos\theta +xSin\theta \\ 1 \end{bmatrix}=\begin{bmatrix} x'\\ y' \\ 1 \end{bmatrix}

连续的变换可以约化,下面是一些运算规则:

R_{ab}R_{bc}=R_{ac}\newline R_{ab}p_{b}=p_{a}\left ( p_{a},p_{b} \quad is\quad a \quad cordinate \right ) \newline T_{ac}=T_{ab}T_{bc}=\begin{bmatrix} R_{ab}R_{bc}& R_{ab}p_{b}+p_{a}\\ 0& 1 \end{bmatrix} \newline T^{-1}=\begin{bmatrix} R &p \\ 0& 1 \end{bmatrix}^{-1}=\begin{bmatrix} R^{T} &-R^{T}p \\ 0& 1 \end{bmatrix}

PS:平面内的所有运动都可以表示为刚体绕某一轴的转动。

1.3  三维

 给定向量x=\begin{bmatrix} x_{1}\\x_{2} \\ x_{3} \end{bmatrix}(\left \| x \right \|=x\tfrac{2}{1}+x\tfrac{2}{2}+x\tfrac{2}{3}=1),其反对称矩阵为

\begin{bmatrix} x \end{bmatrix}=\begin{bmatrix} 0 & -x_{3} &x_{2} \\ x_{3}& 0&-x_{1} \\ -x_{2}& x_{1} & 0 \end{bmatrix}\in SO(3)

规定向量的点积和差积如下:

x = {x1, x2, x3};\newline\newline b = {b1, b2, b3};\newline \newline x\cdot b=b1 x1 + b2 x2 + b3 x3=Number\newline \newline x\times b= \begin{bmatrix} b3 x2 - b2 x3\\ -b3 x1 + b1 x3 \\ b2 x1 - b1 x2 \end{bmatrix}=Vector

(向量的叉乘,也称为向量的叉积或矢量积,是一种在三维空间中计算两个向量之间的运算。它返回一个新的向量,它们的叉乘结果 𝐀 × 𝐁 的大小等于以 𝐀 和 𝐁 为邻边所构成的平行四边形的面积。方向垂直于这个平行四边形,且满足右手法则)

有如下运算规则

x\times b=[x]b\newline [x]^{T}=-[x]=[x]^{3}

三维旋转矩阵见2.1节。

2  指数表示法

2.1  罗德里格斯公式

 

向量p_{0}绕单位旋转轴\hat{w}以单位角速度旋转t时间到p_{(t)}=p_{\theta }

\dot{p}=\hat{w}\times p=[\hat{w}]p\newline,初始条件p_{(t=0)}=p_{(0)}。积分得到:

P\left ( \theta \right )=e^{[\hat{w}]\theta }p\left ( 0 \right ),展开e^{[\hat{w}]}

e^{[\hat{\omega}]\theta}\quad=\quad I+[\hat{\omega}]\theta+[\hat{\omega}]^2\frac{\theta^2}{2!}+[\hat{\omega}]^3\frac{\theta^3}{3!}+\cdots\newline =\quad I+\left(\theta-\frac{\theta^3}{3!}+\frac{\theta^5}{5!}-\cdots\right)[\hat{\omega}]+\left(\frac{\theta^2}{2!}-\frac{\theta^4}{4!}+\frac{\theta^6}{6!}-\cdots\right)[\hat{\omega}]^2

将下式带入:

\begin{matrix}\sin\theta&=&\theta-\dfrac{\theta^3}{3!}+\dfrac{\theta^5}{5!}-\cdots\\\cos\theta&=&1-\dfrac{\theta^2}{2!}+\dfrac{\theta^4}{4!}-\cdots\end{matrix}

得到罗德里格斯公式:

Rot\left ( \hat{w} ,\theta \right )=e^{[\hat{w}]}=I+sin\theta [\hat{w}]+ \left ( 1-cos\theta \right ) [\hat{w}]^2

\hat{w}替换为\hat{x}=\begin{bmatrix}1\\0 \\0\end{bmatrix}, \hat{y}=\begin{bmatrix}0\\1\\0\end{bmatrix}, \hat{z}=\begin{bmatrix}0\\0\\1\end{bmatrix},可以得到

\left.\mathrm{Rot}(\hat{\mathrm{x}},\theta)=\left[\begin{array}{ccc}1&0&0\\0&\cos\theta&-\sin\theta\\0&\sin\theta&\cos\theta\end{array}\right.\right]\newline \left.\mathrm{Rot}(\hat{y},\theta)=\left[\begin{array}{ccc}\cos\theta&0&\sin\theta\\0&1&0\\-\sin\theta&0&\cos\theta\end{array}\right.\right]\newline \left.\mathrm{Rot}(\hat{\mathrm{z}},\theta)=\left[\begin{array}{ccc}\cos\theta&-\sin\theta&0\\\sin\theta&\cos\theta&0\\0&0&1\end{array}\right.\right]

此三个旋转矩阵分别将被作用物体绕x、y、z轴旋转\theta度。

对于任意的单位向量\hat{w}=(\hat{w_{1}},\hat{w_{2}},\hat{w_{3}})(||\hat{w}||=1),带入公式可得

\left.\left[\begin{array}{ccc}\mathrm{c}_\theta+\hat{\omega}_1^2(1-\mathrm{c}_\theta)&\hat{\omega}_1\hat{\omega}_2(1-\mathrm{c}_\theta)-\hat{\omega}_3\mathrm{s}_\theta&\hat{\omega}_1\hat{\omega}_3(1-\mathrm{c}_\theta)+\hat{\omega}_2\mathrm{s}_\theta\\\hat{\omega}_1\hat{\omega}_2(1-\mathrm{c}_\theta)+\hat{\omega}_3\mathrm{s}_\theta&\mathrm{c}_\theta+\hat{\omega}_2^2(1-\mathrm{c}_\theta)&\hat{\omega}_2\hat{\omega}_3(1-\mathrm{c}_\theta)-\hat{\omega}_1\mathrm{s}_\theta\\\hat{\omega}_1\hat{\omega}_3(1-\mathrm{c}_\theta)-\hat{\omega}_2\mathrm{s}_\theta&\hat{\omega}_2\hat{\omega}_3(1-\mathrm{c}_\theta)+\hat{\omega}_1\mathrm{s}_\theta&\mathrm{c}_\theta+\hat{\omega}_3^2(1-\mathrm{c}_\theta)\end{array}\right.\right]

其中c_{\theta }Cos\theta,其中s_{\theta }Sin\theta

三维旋转矩阵属于群SO(3)

给定 R ∈ SO(3),总能找到一个 θ ∈ [0, π] 和一个单位旋转轴 \hat{w} ∈ R3,其中 \left \| \hat{w} \right \|= 1,使得R=e^{[\hat{w}]\theta }

向量\hat{w}\theta是 R 的指数坐标,而反对称矩阵[\hat{w}]\theta \in se(3)则是 R 的矩阵对数。

已知\hat{w},\theta,使用罗德里格斯公式求旋转矩阵R。

已知R,可以求\hat{w},\theta

解为以下三种情况之一:

i.如果R = I,那么θ = 0,\hat{w}任取。

ii.如果R的际(对角线元素之和)tr R=-1,那么 \theta = \pi,\hat{w}取以下三者之一:

\left.\hat{\omega}=\frac1{\sqrt{2(1+r_{33})}}\left[\begin{array}{c}r_{13}\\r_{23}\\1+r_{33}\end{array}\right.\right] \newline \left.\hat{\omega}=\frac1{\sqrt{2(1+r_{22})}}\left[\begin{array}{c}r_{12}\\1+r_{22}\\r_{32}\end{array}\right.\right] \newline \left.\hat{\omega}=\frac1{\sqrt{2(1+r_{11})}}\left[\begin{array}{c}1+r_{11}\\r_{21}\\r_{31}\end{array}\right.\right]

iii.其它情况,

\theta=\cos^{-1}\left(\frac{1}{2}(\operatorname{tr}R-1)\right)\in[0,\pi)\newline [\hat{\omega}]=\frac1{2\sin\theta}(R-R^\mathrm{T})

三维空间的齐次变换矩阵形式如下:

\left.T=\left[\begin{array}{cc}R&p\\0&1\end{array}\right.\right]=\left[\begin{array}{cccc}r_{11}&r_{12}&r_{13}&p_{1}\\r_{21}&r_{22}&r_{23}&p_{2}\\r_{31}&r_{32}&r_{33}&p_{3}\\0&0&0&1\end{array}\right]\in SE(3)

2.2  旋量

给定一个固定的坐标系{s},一个物体坐标系{b},以及一个可微齐次变换T_{sb}\left ( t \right )\in SE\left ( 3 \right ),其中

T_{sb}\left ( t \right )=T\left ( t \right )=\begin{bmatrix} R\left ( T \right )& p\left ( T \right )\\ 0& 1 \end{bmatrix}表示{b}相对于{s}的位形。

\dot{T}左乘T^{-1},得到

T^{-1}\dot{T}=\begin{bmatrix} R(t)&-R(t)p \\ 0& 1 \end{bmatrix}\begin{bmatrix} \dot{R}&\dot{p} \\ 0 & 1 \end{bmatrix}=\begin{bmatrix} R^{T} \dot{R}&R^{T}\dot{p}\\ 0& 0 \end{bmatrix}=\begin{bmatrix} [{w_{b}}]&v _{b} \\ 0 & 0 \end{bmatrix}

\dot{T}右乘T^{-1},得到

\dot{T}T^{-1}= \begin{bmatrix} \dot{R}&\dot{p} \\ 0 & 1 \end{bmatrix}\begin{bmatrix} R(t)&-R(t)p \\ 0& 1\end{bmatrix} =\begin{bmatrix} \dot{R}R^{T}&\dot{p}-\dot{R}R^{T}\dot{p}\\0&0\end{bmatrix}= \begin{bmatrix} [{w_{s}}]&v _{s} \\ 0 & 0 \end{bmatrix}

w _{b}是表示在{b}中的角速度,v _{b}是表示在{b}中与{b}原点重合的点的线速度,

w _{b}是表示在{s}中的角速度,v _{s}是表示在{s}中与{s}系原点重合的点的线速度。

可以将w,v组合得到一个六维向量,记作旋量\nu_{*}=\begin{bmatrix} w_{*}\\ v_{*}\end{bmatrix}(*=s,b).

T_{sb}^{-1}\dot{T}_{sb}=[\nu _{b}]=\begin{bmatrix} [w_{b}] &\nu _{b} \\ 0&0 \end{bmatrix}\in SE\left ( 3 \right )物体运动旋量的矩阵表示形式。

\dot{T}_{sb}T_{sb}^{-1}=[\nu _{s}]=\begin{bmatrix} [w_{s}] &\nu _{s} \\ 0&0 \end{bmatrix}\in SE\left ( 3 \right )空间运动旋量的矩阵表示形式。

如图,运动旋量可以与旋进运动对应:

\left.\mathcal{V}=\left[\begin{array}{c}\omega\\v\end{array}\right.\right]=\left[\begin{array}{c}\hat{s}\dot{\theta}\\-\hat{s}\dot{\theta}\times q+h\hat{s}\dot{\theta}\end{array}\right]。其中h\hat{s}\dot{\theta}为沿着螺旋轴前进的速度,-\hat{s}\dot{\theta}\times q为转动速度。

由于此种表示方法中h可能无穷大,而q可能不唯一,需要一个将\nu正则画表达的方法,记作S:

S=\begin{bmatrix} w\\ v \end{bmatrix}\newline [S]=\begin{bmatrix} [w]&v \\ 0 & 0 \end{bmatrix}\in SE(3),[w]\in SO(3),其中:

i.如果\left \| w \right \|=1,则v=-w\times q+hw,q为轴上任意一点;

ii.如果\left \| w \right \|=0,\left \| v \right \|=1,则h无穷打,旋量为纯移动。

Chasles-Mozzi定理:任何刚体运动都可通过绕空间一固定轴S的旋进运动实现。

给定任意的(R,p)\in SE(3),总能找到对应的螺旋轴S=(w,v)和标量\theta,满足\begin{bmatrix} R &p \\ 0& 1 \end{bmatrix}=e^{[S] \theta }。计算过程如下:

i.若R=I,则w=0,v=p/\left \| p \right \|,\theta =\left \| p \right \|

ii.利用2.2节公式先求w,\theta(w被写作\hat{w}),然后v=G^{-1}(\theta)p\newline G^{-1}(\theta)=\frac1\theta I-\frac12[\omega]+\left(\frac1\theta-\frac12\cot\frac\theta2\right)[\omega]^2

已知S,也可以求w,\theta。过程如下:

展开e^{[S]\theta},得到e^{[\mathcal{S}]\theta}\quad=\quad I+[\mathcal{S}]\theta+[\mathcal{S}]^2\frac{\theta^2}{2!}+[\mathcal{S}]^3\frac{\theta^3}{3!}+\cdots \newline =\left.\left[\begin{array}{cc}e^{[\omega]\theta}&G(\theta)v\\0&1\end{array}\right.\right],其中\begin{aligned}G(\theta)\quad&=\quad I\theta+[\omega]\frac{\theta^2}{2!}+[\omega]^2\frac{\theta^3}{3!}+\cdots\\&=\quad I\theta+\left(\frac{\theta^2}{2!}-\frac{\theta^4}{4!}+\frac{\theta^6}{6!}-\cdots\right)[\omega]+\left(\frac{\theta^3}{3!}-\frac{\theta^5}{5!}+\frac{\theta^7}{7!}-\cdots\right)[\omega]^2\\&=\quad I\theta+(1-\cos\theta)[\omega]+(\theta-\sin\theta)[\omega]^2\end{aligned}

于是,若:

i.\left \| w \right \|=1,则\left.e^{[\mathcal{S}]\theta}=\left[\begin{array}{cc}e^{[\omega]\theta}&\left(I\theta+(1-\cos\theta)[\omega]+(\theta-\sin\theta)[\omega]^2\right)v\\0&1\end{array}\right.\right]

ii.w=0,\left \| v \right \|=1,则\left.e^{[\mathcal{S}]\theta}=\left[\begin{array}{cc}I&v\theta\\0&1\end{array}\right.\right]

向量\begin{aligned}\mathcal{S}\theta\in\mathbb{R}^6\end{aligned} 是 T的指数坐标,而矩阵[\mathcal{S}]\theta\in se(3)则是T的矩阵对数。

2.3  使用指数积公式建立正运动学模型

对于如图所示的机械臂,末端坐标系相对于固定坐标系{0}可以表示成T_{04}=T_{01}T_{12}T_{23}T_{34},T为齐次变换矩阵,其中

\left.T_{01}=\left[\begin{array}{cccc}\cos\theta_1&-\sin\theta_1&0&0\\\sin\theta_1&\cos\theta_1&0&0\\0&0&1&0\\0&0&0&1\end{array}\right.\right]\newline T_{12}=\left[\begin{array}{cccc}\cos\theta_2&-\sin\theta_2&0&L_1\\\sin\theta_2&\cos\theta_2&0&0\\0&0&1&0\\0&0&0&1\end{array}\right]\newline \left.T_{23}=\left[\begin{array}{cccc}\cos\theta_3&-\sin\theta_3&0&L_2\\\sin\theta_3&\cos\theta_3&0&0\\0&0&1&0\\0&0&0&1\end{array}\right.\right]\newline T_{34}=\left[\begin{array}{cccc}1&0&0&L_3\\0&1&0&0\\0&0&1&0\\0&0&0&1\end{array}\right],使用指数积(PoE)公式则可以写成T_{04}=e^{[\mathcal{S}_1]\theta_1}e^{[\mathcal{S}_2]\theta_2}e^{[\mathcal{S}_3]\theta_3}M,其中

\left.[\mathcal{S}_1]=\left[\begin{array}{cccc}0&-1&0&0\\1&0&0&0\\0&0&0&0\\0&0&0&0\end{array}\right.\right]\newline \left.[\mathcal{S}_2]=\left[\begin{array}{cccc}0&-1&0&0\\1&0&0&-L_{1}\\0&0&0&0\\0&0&0&0\end{array}\right.\right]\newline \left.[\mathcal{S}_3]=\left[\begin{array}{cccc}0&-1&0&0\\1&0&0&-(L_{1}+L_{2})\\0&0&0&0\\0&0&0&0\end{array}\right.\right]\newline \left.M=\left[\begin{array}{cccc}1&0&0&L_1+L_2+L_3\\0&1&0&0\\0&0&1&0\\0&0&0&1\end{array}\right.\right].相较于D-H方法而言,使用指数积方法建立正运动学模型无需使用连杆坐标系,在运动学中还能发现PoE方法的更多优点。

  • 38
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值