1 基础
1.1 准备阶段
- 学习
《SLAM十四讲》
- 学习
ROS
的初学者教程 - 熟练使用
C++
和Linux命令行
操作 - 下载VINS-Mono,按教程跑起来
- 学习VINS-Mono的论文,学习大佬们的博客
1.2 SLAM相关学习链接
高翔的博客
贺一加的博客
《概率机器人》在线学习
SFM算法总结
1.3 VIO学习链接
VINS-MONO解析
VINS-Mono论文学习与代码解读——目录与参考
一文详解单目VINS论文与代码解读目录
VIO学习笔记
VIO和VINS-Mono学习笔记
【泡泡读者来稿】VINS 论文推导及代码解析(一)
【泡泡读者来稿】VINS 论文推导及代码解析(二)
【泡泡读者来稿】VINS 论文推导及代码解析(三)
【泡泡读者来稿】VINS 论文推导及代码解析(四)
2 VINS-Mono
2.1 feature_tracker节点
ros::NodeHandle::getParam
获取命令行入参
cv::FileStorage
用于读写YAML文件
cv_bridge
cv::CLAHE
(Contrast Limited Adaptive Histogram Equalization)
cv::createCLAHE效果实验
sensor_msgs
sensor_msgs/Image.msg
sensor_msgs/Imu.msg
sensor_msgs/PointCloud.msg
liftProjective函数
2.2 vins_estimator节点
- 对于外参的解释,这个外参是相机帧变换到imu帧,注意,这个变换是点的变换。也就是这个旋转外参是以imu为参考帧,相机的姿态r。平移外参是以imu为参考帧,cam的光心在imu坐标系中的位置
- addFeatureCheckParallax通过次新帧和次次新帧的视差是否超过阈值来决定边缘化最老帧还是次新帧,这个阈值给的是最小像素/焦距,这个焦距给定了460,没有在配置选项中出现,需要更改。
2.2.1 视觉与INS初始化对准
cv::solvePnP详解
cv::recoverPose()函数
三角化求深度值(求三维坐标)
VINS-Mono 代码详细解读4——feature_manager.cpp
vins中的坐标系变换及g2r函数
2.3 pose_graph节点
3 VINS-Fusion
相较于VINS-Mono,前端光流追踪增加了逆追踪的一致性检测和IMU辅助光流追踪;后端增加了双目与IMU的紧耦合优化;增加了VIO与GPS的融合,是VIO系位姿与当地地理坐标系ENU位置的融合,消除位置的发散
SLAM 中地理计算库 GeographicLib 极简入门