第三讲 三维空间刚体运动

本文介绍了三维空间中刚体运动的不同描述方法,如旋转矩阵、变换矩阵、四元数和欧拉角,以及如何使用Eigen库操作矩阵和几何模块。此外,还探讨了旋转向量、欧拉角的使用及其奇异性,以及四元数的优势。最后提及了类似Pangolin库的安装问题和相关变换的概念。
摘要由CSDN通过智能技术生成

目标:理解三维空间的刚体运动描述方式:旋转矩阵、变换矩阵、四元数和欧拉角;掌握Eigen库的矩阵、几何模块的使用方法。

1、旋转矩阵

  • 刚体运动:两个坐标系之间的运动由一个旋转加上一个平移组成,这种运动成为刚体运动。

  • 欧式变换:由旋转和平移组成。

  • 向量运算

    • 向量内积:a\cdot b=a^Tb=\sum_{3}^{i=1}a_ib_i=|a||b|cos<a,b>

    • 向量外积:\boldsymbol{a}\times \boldsymbol{b}=\begin{Vmatrix} \boldsymbol{e_1} & \boldsymbol{e_2}& \boldsymbol{e_3}\\ a_1 & a_2& a_3\\ b_1 & b_2& b_3 \end{Vmatrix} = \begin{bmatrix} a_2b_3- a_3b_2\\ a_3b_1-a_1b_3\\ a_1b_2-a_2b_1 \end{bmatrix}=\begin{bmatrix} 0 & -a_3& a_2\\ a_3 & 0 & -a_1\\ -a_2 & a_1& 0 \end{bmatrix}\boldsymbol{b}=\boldsymbol{a}^{\wedge}\boldsymbol{b}

      • 外积的结果是一个向量,方向垂直于a,b两个向量,大小为|a||b|sin<a,b>,是两个向量张成的四边形的有向面积。对外积计算,我们引入^符号,把a写成一个矩阵,事实上是一个反对称矩阵

      • 可以将^记成一个反对称符号,这样把两个向量外积a×b写成矩阵与向量的乘法a^b,把它变成了线性运算。该符号是一个一一映射,意味着任意向量都对应着唯一个反对称矩阵

      • a^{\wedge}=\begin{bmatrix} 0 & -a_3& a_2\\ a_3 & 0 & -a_1\\ -a_2 & a_1& 0 \end{bmatrix}\cdot

      • 对于任意反对称矩阵,我们也能找到唯一与之对应的向量,把这个运算用符号{}^\vee表示。

  • 旋转矩阵:刻画了旋转前后同一个向量的坐标变换关系,也叫方向弦矩阵。事实上,是一个行列式为1的正交矩阵。

  • 特殊正交群SO(n)=R \in \mathbb{R}^{n\times n}|RR^{T}=I,det(R)=1

  • 向量a在两个坐标系下的坐标为a1,a2,它们之间的关系应该是:a_1=R_{12}a_2+t_{12}R_{12}代表把坐标系2的向量变换到坐标系1中,t_{12}对应的是坐标系1原点指向坐标系2原点的向量。)

  • 变换矩阵与齐次坐标

    • 齐次坐标:在三维向量末尾添加1,将其变成四维向量,成为齐次坐标。

    • 变换矩阵:对于四维向量,可以将旋转和平移写在一个矩阵里,使整个关系变成线性关系。

  • 特殊欧式群SE(3)=\left \{ T=\begin{bmatrix} R & t \\ 0^{T} & 1 \end{bmatrix} \in \mathbb{R}^{4\times 4}| R \in SO(3), t \in \mathbb{R}^{3} \right \}

  • 矩阵相关知识

    • 反对称矩阵A满足A^{T}=-A

    • 正交矩阵即逆为自身转置的矩阵。

    • 正定矩阵:A是n阶方阵,若对任何非零向量x,都有x^TAx>0,就称A为正定矩阵。

    • 半正定矩阵:设A是实对称矩阵,如果对任意的实非零列向量x有x^TAx>=0,就称A为半正定矩阵。

    • 特征值与特征向量:给定方阵A,若存在一个非零向量v和一个标量\lambda,使Av=\lambda v。其中\lambda是矩阵A的特征值,而v是对应特征值\lambda的特征向量。特征值表示了在特征向量上的伸缩倍数,特征向量表示了在变换中保持方向不变的向量。

2、实践:Eigen

3、旋转向量和欧拉角

  • 任意旋转都可以用一个旋转轴和一个旋转角来刻画。

  • 旋转向量:我们可以使用一个向量,其方向与旋转轴一致,而长度等于旋转角,这种向量成为旋转向量。\theta n可以描述这个旋转。

    • 旋转向量到旋转矩阵的转换过程由罗德里格斯公式表名,转换结果:

    • R=cos\theta I + (1-cos\theta )nn^T+sin\theta n^{\land}

    • \theta=arccos{tr(R)-1 \over 2}

    • 旋转向量也有奇异性,发生在转角\theta超过2π而产生周期性时。

  • 欧拉角:使用3个分离的转角,把一个旋转分解成3次绕不同轴的旋转。

    • 欧拉角一种常用的方式:偏航-俯仰-翻滚(yaw-pitch-roll)。

      • 绕物体的Z轴旋转,得到偏航角yaw;

      • 绕旋转之后的Y轴旋转,得到俯仰角pitch;

      • 绕旋转之后的X轴旋转,得到翻滚角roll

    • 万向锁问题(在俯仰角为±90°时,第一次旋转和第三次旋转将使用同一个轴,使得系统丢失了一个自由度,这被称为奇异性问题。)

4、四元数

  • 旋转矩阵用9个量描述3自由度的旋转,具有冗余性;欧拉角和选择向量是紧凑的,但是有奇异性。四元数是一种扩展的复数,它是紧凑且没有奇异性,但不够直观且运算复杂。

  • 二维情况下,旋转可以用单位复数来描述:e^{i\theta}=cos\theta + i sin\theta(复平面的向量旋转\theta

  • 三维,可以由单位四元数描述:q=q_0+q_1 i +q_2 j + q_3 k,i,j,k是四元数的三个虚部,满足以下关系式:

    • i^2=j^2=k^2=-1

    • ij =k, ji = -k

    • jk = i, kj = -i

    • ki = j, ik = -j

  • 也可以用一个标量和一个向量表达四元数:

    q = [s, v]^T , s = q_0 \in \mathbb{R}, v = [q_1, q_2, q_3]^T \in \mathbb{R}
  • 若一个四元数的虚部为0,则成为实四元数;反之,若它的实部为0,则成为虚四元数。

  • 四元数运算

    • 两个四元数乘积的模即模的乘积。\|q_aq_b\|=\|q_a\|\|q_b\|

    • 四元数的共轭是把虚部取成相反数。四元数共轭与其本身相乘,会得到一个实四元数,其实部为模长的平方。

    • 四元数和自己的逆的乘积为实四元数1.

  • 四元数标识旋转

    • 空间三维点:p=[x,y,z] \in \mathbb{R}^{3},用一个虚四元数描述:p=[0,v]^T

    • 旋转后的点p':p'=Rp,也可以:p'=qpq^{-1}不明白为什么?

    • 四元数到旋转向量的转换公式:

5、其他变化:相似、仿射、射影变换

变换名称矩阵形式自由度不变性质
欧式变换\begin{bmatrix} R & t \\ 0^{T} & 1 \end{bmatrix}6长度、夹角、体积
相似变换\begin{bmatrix} sR & t \\ 0^{T} & 1 \end{bmatrix}7体积比
仿射变换\begin{bmatrix} A & t \\ 0^{T} & 1 \end{bmatrix}12平行性、体积比
射影变换\begin{bmatrix} A & t \\ a^{T} & v \end{bmatrix}15

接触平面的相交和相切

  • 三维相似变换的几何叫相似变换群,记作Sim(3)

  • 仿射变换,只要求A是可逆矩阵,不必是正交矩阵

6、安装第三方库报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值