视觉SLAM十四讲——第三讲三维空间刚体运动

@ 《视觉SLAM十四讲》知识点与习题

《视觉SLAM十四讲》第三讲知识点整理+习题

正在学习SLAM相关知识,将一些关键点及时记录下来。

知识点整理

本讲主要介绍V-SLAM基本问题之一:一个刚体在三维空间中的运动是如何描述的。其中,介绍了旋转矩阵、四元数、欧拉角的意义。以及线性代数库Eigen。

  1. 刚体:有位置还有自身的姿态
  2. 向量与坐标:向量是不依赖于坐标系而存在的,且向量不会随着坐标系的旋转而发生运动。仅在指定3D空间中的某个坐标系时,才可以谈论向量在此坐标系下的坐标
  3. 内积和外积:内积a.b=|a||b|cos<a,b>; 外积axb=a^b,垂直于这两个向量,大小为|a||b|sin<a,b>。这里引入了反对称符号,可以将向量a转换为一个反对称矩阵。外积只对三维向量存在定义,还能用外积表示向量的旋转
  4. 旋转向量:对于右手系而言,从a旋转到b时,用右手的4个指头从a转向b,大拇指指向就是旋转向量的法向量,大小由a和b之间的夹角决定
  5. 欧式变换:保证同一个向量在各个坐标系下的长度和夹角都不会发生变化。
  6. 旋转矩阵:是一个行列式为1的正交矩阵,反之也成立。R^T刻画了与R相反的旋转。
  7. 变换矩阵与齐次坐标:在一个三维向量的末尾添加1,将其变成了四维向量,称为齐次坐标。在齐次坐标中,某个点x的每个分量同乘一个非零常数k后,仍然表示同一个点。引入变换矩阵可以使得整个关系变成线性关系

Eigen线性代数库

提供了快速的有关矩阵的线性代数运算,还包括解方程等功能。Eigen是一个纯用头文件搭建起来的库,在使用时只需要引入Eigen的头文件即可,不需要链接库文件。

	//Eigen基础
	//稠密矩阵的代数运算(逆、特征值等)
	#include <Eigen/Dense>
----------------------------------------------------------------------------------------------------
	Eigen::Matrix<float, 2, 3> matrix_23;//参数依次为类型、行数、列数
	Eigen::Vector3d v_3d;
	//可以直接使用<<来向矩阵中输入数据,且用()来访问元素,在()中指定行号和列号
	//不同类型的矩阵不能直接相乘,需要转换类型
	Eigen::Matrix<double, 2, 1> result=matrix_23.cast<double>() * v_3d;
----------------------------------------------------------------------------------------------------
	// 特征值
    // 实对称矩阵可以保证对角化成功
    Eigen::SelfAdjointEigenSolver<Eigen::Matrix3d> eigen_solver ( matrix_33.transpose()*matrix_33 );
    cout << "Eigen values = \n" << eigen_solver
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值