2021@SDUSC
2021年11月17日星期三——2021年11月19日星期五
一、背景简介:
经过上一周对于代码的阅读,我发现自己在这几个开源库函数和cpp常用的代码技巧方面还存在着问题,对于前置的知识也不甚了解。因此我决定暂停一下阅读的进度,专门结合这些开源函数和代码技巧进行补习。也能趁机提升一下自己的cpp编程水平。
本着实用的原则,学习的范围先暂定在前面三次学习中的代码,库函数包括Eigen和open cv两块。学习的顺序由新到旧,逐步回顾。
二、代码分析及问题解答:
1、initial_alignment
-
主要涉及到的是Eigen库 计算线性代数 在分析这里的代码时,关于计算的部分已经研究过了,这里就不再重复了,包含矩阵的转置、ldlt分解计算、块操作等等。
-
在头文件中出现的odomCur是
nav_msgs::Odometry odomCur;
,是视觉里程计的信息,里面的pose,linear指的分别是:位姿信息,线速度信息;
而twist指的则是一种消息类型,包含了linear线速度信息和angular角速度信息。
如截取:
odometry_channel[10] = odomCur.twist.twist.linear.z;
odometry_channel[11] = odomCur.pose.covariance[1];
- Eigen::Quaterniond,是Eigen中四元数的初始化,包含这样的三种方式
Eigen::Quaterniond q1(w, x, y, z);// 第一种方式
Eigen::Quaterniond q2(Vector4d(x, y, z, w));// 第二种方式
Eigen::Quaterniond q2(Matrix3d(R));// 第三种方式
- 注意这里的数据结构ImageFrame,定义在头文件当中给出了,包含了reset_id、旋转度、速度、加速度偏差、陀螺仪偏差、重力