美文网首页
第三讲 三维空间的刚体运动

第三讲 三维空间的刚体运动

作者: mjwz5294 | 来源:发表于2018-01-22 19:30 被阅读0次

三维刚体运动,由平移和旋转构成。平移简单,旋转就麻烦些了。这一章的重点就是描述旋转,设计核心概念为:旋转矩阵,变换矩阵,四元数以及欧拉角。

一、旋转矩阵

1、向量的内积、外积及其几何意义

(1)内积a.b = |a|*|b|*cos,结果是一个数值而非向量,几何上表示向量间的投影关系

(2)外积a x b = a^b,结果是一个垂直于a,b向量构成的平面的向量,大小为|a|*|b|*sin,很容易注意到,其大小是a与b围成的三角形的面积,所以我们也把这样的结果叫做有向面积。显然,根据外积的值能推断出a到b的旋转角度,所以我们也可以用外积表示向量的旋转。

2、坐标系间的欧式变换

欧拉变换公式:a' = Ra + t

a'----物体位姿相对新坐标系的位姿

R----旋转矩阵,它是欧拉变换的关键

a----物体相对原坐标系的位姿

t----物体的平移

3、旋转矩阵的性质:

(1)它是一个行列式为1的正交矩阵(与其转置矩阵相乘结果为单位矩阵),反之行列式为1的正交矩阵也一定是旋转矩阵

(2)特殊正交群:SO(n) = {R|R*R' = I,det(R) = 1},其中R为一个nxn矩阵,R'是其转置矩阵,det(R)为其行列式。SO(n)就是n维空间中旋转矩阵的集合,当然我们讨论最多的就是SO(3)。

(3)有了旋转矩阵,我们描述相机位姿时,可以直接聊矩阵了,而无需从基(坐标系)开始。体现在欧拉变换公式上,公式右边的R和t都是绝对量,只有输入值(向量a)是一个相对量。就是说,我们用R和t两个参数,就完整的描述了坐标变换关系。

4、变换矩阵:如果坐标系经过多次变换,那么对应的欧拉变换式就会变得越来越复杂,所以我们引入了变换矩阵。这是一个数学技巧,它将旋转和平移都放入同一个矩阵(变换矩阵)中,使得多次变换对应的欧拉变换式依然是齐次的:C=T2*B = T2*T1*A。

二、Eigen实践

本节讲eigen的用法。这里有一份代码比较注释比较详细,就不写那么多了。我就在这里留点简介吧

1、eigen是一个流行的矩阵工具库,有了它,我们在进行矩阵、向量的计算时,就方便得多

2、作为一个软件工具库,它有个特点就是,只有h文件而没有.a、.so等二进制文件,所以在CMakeLists.txt中,我们只需要引入eigen库的头文件目录(include_directories,但更好的方式还是find_package),而无须链接库文件。

3、在mac上的使用步骤:

(1)先执行locate eigen3查看是否安装,ubuntu也可执行此命令

(2)homebrew安装eigen

(3)CMakeLists.txt中添加include_directories("/usr/include/eigen3"),ubuntu中也是这个默认路径。不同人默认路径可能不同,用find_package最好。

三、旋转向量与欧拉角:

1、意义:利用向量外积的定义,方向表示旋转方向(右手定则),大小表示旋转角度大小。

2、旋转向量与旋转矩阵之间有一个换算关系,背下来。

3、欧拉角:偏航-俯仰-滚转,很容易理解

四、四元数:

1、意义:对照复数来理解,实际上乘以虚数部分,就是旋转;

2、四元数与旋转的对应关系,背下来;

3、四元数的运算法则,只能理解加记忆了;

4、四元数与旋转向量、旋转矩阵的对应关系;

五、实践:visualizeGeometry

这里遇到的麻烦主要是pangolin的导入

1、跟着github地址上的步骤编译

2、执行sudo make install指令,成功后在/usr/local/include中生成了pangolin目录,将该目录添加到header search paths中,要报错,没解决

3、果断将跟着github上的https://github.com/gaoxiang12/slambook/tree/master/ch3/visualizeGeometry方式,使用cmake编译,运行成功!!

相关文章

  • 第三讲 三维空间的刚体运动

    三维刚体运动,由平移和旋转构成。平移简单,旋转就麻烦些了。这一章的重点就是描述旋转,设计核心概念为:旋转矩阵,变换...

  • 三维空间的刚体运动

    旋转矩阵 对于同一个向量a(向量并没有随着坐标系的旋转而发生运动) 旋转向量与欧拉角 旋转矩阵R有九个元素,但仅有...

  • 三维空间的刚体运动

    旋转矩阵 点,向量,坐标系 刚体不光有位置,还有自身的姿态.位置是指刚体在空间中的哪个地方,姿态是指刚体的朝向. ...

  • 第二讲 三维空间的刚体运动课后题

    [toc] 第二讲 三维空间的刚体运动 1、熟悉 Eigen 矩阵运算 设线性⽅程 ,在 A 为⽅阵的前提下,请回...

  • SLAM学习笔记3

    三维空间刚体运动,笔记内容有向量内积,向量外积,欧氏变换,旋转向量,欧拉角,旋转矩阵,四元数以及它们的转换关系,代...

  • Unity3D进阶教程(三)刚体运动,扭矩,物理更新,碰撞

    八 刚体的运动 刚体的运动物理系统的运动Force力Velocity速度Impulse冲量Accelaration...

  • Unity 刚体组件和碰撞器

    一,刚体组件 ADD添加刚体组件 定义 刚体一种组件,可让物理模拟现实物体的运动状态,添加刚体后物体将受重力影响,...

  • Modern Robotics — 刚体运动

    前言 在三维空间中,为了指定一个刚体的位置和姿态,至少需要6个数。本章通过一个附着到物体上的参考坐标系来描述它的位...

  • 角速度与线速度

    角速度 描述了刚体在做旋转运动时角度随时间变化的快慢。 线速度 描述了刚体运动过程中横纵坐标(位移)变化的快慢。 ...

  • 11_tanks_war

    Sprite来控制图片内容 要有碰撞效果的话,两个都要有碰撞器,运动的一方有刚体,如果经常不运动的话,刚体就会休眠...

网友评论

      本文标题:第三讲 三维空间的刚体运动

      本文链接:https://www.haomeiwen.com/subject/ydjraxtx.html