ROS-3DSLAM(10):视觉部分学习 第四节 代码补习

本文详细分析ROS 3DSLAM项目中涉及的视觉部分代码,包括Eigen库的initial_alignment、OpenCV的solve_5pts等,探讨了Eigen和OpenCV在矩阵运算上的应用,并解释了为什么在不同场景下选择不同的库。此外,还讨论了C++11的新特性、SVD分解以及在阅读cpp代码时遇到的问题与解答。
摘要由CSDN通过智能技术生成

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、旋转度、速度、加速度偏差、陀螺仪偏差、重力
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值