1、复习了一下ORB特征提取和匹配,并且根据进度将SLAM十四讲的第七讲的代码复现完成
遇到问题:
因为课本上代码是使用opencv3,本次实验使用的是opencv4,所以会出现报错
解决方案:
参考博客:https://blog.youkuaiyun.com/Edidaughter/article/details/124654894
最后结果:
1、学习单目SLAM理论基础,手推其中的数学公式,掌握相机的内参矩阵
学习博客:http://zhaoxuhui.top/blog/2018/03/08/%E5%8D%95%E7%9B%AESLAM%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html
2、学习欧拉角、四元数、旋转矩阵推导及相互关系的理论基础
学习博客:http://zhaoxuhui.top/blog/2018/03/13/RelationBetweenQ4&R&Euler.html
3、阅读论文——A Comparison of Graph Optimization Approaches for Pose Estimation in SLAM(跑通开源源码,掌握论文的核心思想)
项目地址:https://github.com/david-m-rosen/SE-Sync
运行命令:
./SE-Sync ../../../data/sphere2500.g2o
运行结果
本论文主要是对比位姿估计中主流的图优化框架的优势。实验结果表明:
论文中考虑了g2o、GTSAM、Ceres、SE-Sync四个主流优化框架。评估过程考虑了优化时间和优化结果,以表的形式给出了测试结果,发现:
与其他三种方法相比,SE-Sync在大多数数据集上优化时间最短;
g2o优化时间最长,但在简单数据集上表现良好
Ceres易于使用,提供了很大的灵活性,而且相对较快
除了在噪声干扰严重的数据集上,GTSAM的性能几乎和SE-Sync一样 。
建议:
对于数据关联差、噪声大和性能差的前端,最好使用SE-Sync作为后端。如果初始化较好,GTSAM表现和SE-Sync一样出色
对于比性能优秀的前端,在数据集相对简单、噪音很低的情况下,后端优化的选择就凭借个人喜好了。
参考博客:https://blog.youkuaiyun.com/CV_Autobot/article/details/127456573
4、利用开源数据集跑通vins-fusion开源项目
项目地址:https://github.com/HKUST-Aerial-Robotics/VINS-Fusion
实验环境:
操作系统——ubuntu2004
ros版本——noetic
eigen版本——3.2.9(下载地址:https://gitlab.com/libeigen/eigen/-/archive/3.2.9/eigen-3.2.9.tar.gz wget一下就行,测试过需要什么版本将版本号换一下wget就行)
ceres版本——1.14.0
由于ceres是刚编译的,在编译的过程中出现了下面这个错误,这是由于我原来的eigen版本是3.4.0过高,所以将版本回退到3.2.9即可(参考博客:https://blog.youkuaiyun.com/SoftwarerRJY/article/details/113354759)
编译vins-fusion开源项目可能会遇到如下项目,因为我使用的是opencv4,但是项目中使用的是opencv3的函数,会有很多报错,由于个人不想改opencv版本,所以选择改源码(但是这个过程非常的)
参考博客:https://blog.youkuaiyun.com/qq_39779233/article/details/128081716
https://blog.youkuaiyun.com/u013171226/article/details/108062603
https://zhuanlan.zhihu.com/p/548140724?utm_id=0
https://blog.youkuaiyun.com/dongliu2236/article/details/130483697
实验完成截图
参考博客:https://blog.youkuaiyun.com/qqGHJ/article/details/127535507
运行命令:在该项目下同时打开5个端口:
1、roscore
2、roslaunch vins vins_rviz.launch
3、rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
4、rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
5、rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag
后期计划:通过阅读代码掌握该源码原理,尝试将该vio中的位姿估计优化图框架该文上述论文中的SE-Sync.