0. 内容

C++没有矩阵的运算,用别人的库来进行矩阵运算,其中Eigen库能够进行刚体运动的一些计算,由3部分构成:

  • Core:矩阵的表达;
  • Dense:稠密矩阵的计算,矩阵求逆,稠密矩阵的分解等;
  • Geometry:旋转矩阵,欧拉角,四元数等。

1. 点与坐标系

三维空间常用正交基来表示(常用右手系),一个向量是基底的线性组合,其系数就是这个向量在此空间的坐标
这个手真有意思
内积(点积)的结果是标量,
外积(叉积)的结果是向量

在这里插入图片描述
axb可以按行列式来写,也可以按照 a^ 来理解,写成a^b.若两向量平行,则叉积为0,此处的a^是一个反对称矩阵(罗德里格斯公式)

在SLAM中,坐标系有世界坐标系,机器人坐标系(不同传感器有各自的坐标系)

2. 旋转矩阵

在这里插入图片描述

R称为旋转矩阵

  • R是一个正交矩阵:R−1=RTR^{-1}=R^TR1=RT, RTR=IR^TR=IRTR=I
  • det(R)=1det(R)=1det(R)=1
    在这里插入图片描述
    SO:Sepcial Orthogonal Group特殊正交群。

2->1的旋转:a1=R12a2a_1 = R_{12}a_2a1=R12a2,其中R12R_{12}R12表示从2->1的旋转矩阵,从右读。(PPT上写错了)
在这里插入图片描述
在这里插入图片描述

RRR是[3,3]的向量,ttt是[3,1]的向量
在这里插入图片描述
为方便运算,构造向量
a~=[a1]\tilde{a}= \begin{bmatrix} a\\ 1\\ \end{bmatrix} a~=[a1]

a′~=[a′1]=[Rt0T1]a~=Ta~ \tilde{a^{'}}= \begin{bmatrix} a^{'}\\ 1 \end{bmatrix}= \begin{bmatrix} R&t\\ 0^T&1 \end{bmatrix}\tilde{a}=T\tilde{a} a~=[a1]=[R0Tt1]a~=Ta~
T叫变换矩阵。同理构造b~=T1a~\tilde{b}=T_1\tilde{a}b~=T1a~c~=T2b~\tilde{c}=T_2\tilde{b}c~=T2b~,其中T1T_1T1T2T_2T2在这里是[4,4]矩阵,可以进行运算,所以由a->c就可以简化表示为:
c~=T2T1a~\tilde{c}=T_2T_1\tilde{a}c~=T2T1a~

在这里插入图片描述
平移不是简单取反,还有旋转部分的逆的关系。(这里也算是个小坑,当时用四元数+平移来验证变换矩阵时踩了坑。)

齐次坐标乘以任意非零常数后仍然表达同一坐标。上面构造的转换矩阵TTT属于特殊欧式群SE(3)SE(3)SE(3)(下一讲介绍)

SE(3)=[R3∗3a3∗10T1] SE(3)= \begin{bmatrix} R_{3*3}& a_{3*1}\\ 0^T& 1 \end{bmatrix} SE(3)=[R330Ta311]

3. 旋转向量和欧拉角

在这里插入图片描述
旋转向量的每个量都是一个角度和一个轴组成,旋转向量性质如下:
在这里插入图片描述
转换
θ∗n\theta*nθn(旋转向量)->旋转矩阵RRR:罗德里格斯公式
旋转矩阵RRR->θ∗n\theta*nθn旋转矩阵转向量的公式(也可以使用对数映射,但是不常用)
nnn可以看作RRR的特征值为1的特征向量。
在这里插入图片描述

在这里插入图片描述
yaw-pitch-roll的定义有很多种(跟我之前做的陀螺仪加速度计的四元数姿态解算很密切),用之前要清楚到底是按照原来的轴转还是绕着旋转之后的轴转。

在这里插入图片描述
如上图,当pitch=90时,yaw和roll重叠了,只剩下两个自由度,这种情况叫做万向锁,可以证明,任何3自由量来描述3维旋转的情况都会碰到奇异点,任意一种欧拉角都会有奇异点,只是不同的定义方式下出现的情况不同。
在这里插入图片描述

4. 四元数(Quarterian)

在这里插入图片描述
由二维的单位复数扩展到3维的多个复数(3个虚部)
虚部的运算:和自己像复数,和别人算像叉积。
在这里插入图片描述
用实部和虚部部分组成一个向量来表示四元数

  1. 上图中qaqbq_aq_bqaqb展开式的最后一行中应该是+(sazb+xayb−xbya+zasb)k+(s_az_b+x_ay_b-x_by_a+z_as_b)k+(sazb+xaybxbya+zasb)k。第三项错了。
    按照[sava][s_a v_a][sava][sbvb][s_b v_b][sbvb]的形式更好理解qaqbq_aq_bqaqb,标量乘向量不变,,再加上个向量的叉积(见第1节)
  2. 定义共轭(虚部相反)
  3. 定义四元数范数
  4. 求逆,若是单位四元数,则其逆是其共轭
  5. 数乘
  6. element wise乘法

四元数乘法可以写成矩阵乘法,详见作业第5题:
在这里插入图片描述

接下来是四元数<->角轴
在这里插入图片描述
四元数如何使用呢?(如何表示一个空间点的旋转呢?)
在这里插入图片描述
用此三维点的坐标和0来构建一个虚四元数ppp,假设旋转后为p′p^{'}p,可以证明p′p^{'}p仍然是一个纯虚的四元数(到时候见作业)。实践中四元数用得较多,只用4个数,且没有歧义。

5. 实践–Eigen的初步使用

在这里插入图片描述
这里不太懂,等复习一下线性代数和矩阵论的知识后再来看看。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐