由于平时课程安排以及作业等原因,在和老师沟通之后,决定先暂停对视觉slam开源程序的学习,先专心完成EKF磁场校准android平台的开发。
所以打算先把之前的slam东西总结一下,阅读完orbslam的原论文,并完成虚拟机上的配置。
这里转载两篇关于图优化和g2o的博客。
深入理解图优化与g2o:图优化篇
深入理解图优化与g2o:g2o篇
虚拟机上orb—slam的运行
本部分来自 ShellCollector 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/jacke121/article/details/54696949?utm_source=copy
- 运行程序
说到运行程序,orbslam是基于ros的,因此首先必须得运行roscore,启动ros服务。随后逐一运行图片显示,地图显示,orb slam主体程序,rosbag图片发布程序。
关于启动各个程序,无论是ORB本体程序还是可视化程序还是图片发布程序,大致有两种方法:
4.1 逐一手动启动各个程序
(1) 开启新的终端,执行
roscore #启动ros服务
(2) 开启新的终端,执行
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:(你的ORB_SLAM文件夹绝对路径)#添加环境变量,如果ORB_SLAM位于ROS工作空间的话,则忽略
rosrun image_view image_view image:=/ORB_SLAM/Frame _autosize:=true #启动图片查看程序,到时可以看到特征点跟踪情况
(3) 打开新的终端,执行
export ROS_PACKAGE_PATH=KaTeX parse error: Expected 'EOF', got '#' at position 37: …RB_SLAM文件夹绝对路径)#̲添加环境变量,如果ORB_SL…ROS_PACKAGE_PATH:(你的ORB_SLAM文件夹绝对路径)#添加环境变量,如果ORB_SLAM位于ROS工作空间的话,则忽略 rosrun ORB_SLAM ORB_SLAM Data/ORBvoc.yml Data/Settings.yaml #运行ORB_SLAM , 其中ORBvoc.yml需要先解压 (5) 打开新的终端执行,进入Example.bag所在文件夹,执行 rosbag play --pause Example.bag #执行图片发布程序,执行后,按空格键开始
4.2 使用launch文件启动程序
使用launch文件就比较简单了,ORB_SLAM包中包含两个launch文件,对应不同的ROS版本
根据你的ROS版本,选择对应的launch文件即可,launch文件相当于将上一小节的2,3,4步集成在一块,通过一个脚本文件顺序执行:
(1) 开启新的终端,执行
roscore #启动ros服务
(2) 开启新的终端,执行
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:(你的ORB_SLAM文件夹绝对路径)#添加环境变量,如果ORB_SLAM位于ROS工作空间的话,则忽略
roslaunch ExampleGroovyHydro.launch
(3) 打开新的终端执行,进入Example.bag所在文件夹,执行 rosbag play --pause Example.bag #执行图片发布程序,执行后,按空格键开始
本部分来自 ShellCollector 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/jacke121/article/details/54696949?utm_source=copy
但是上边做转载的东西,我在运行的时候出现错误。
在运行数据包Example前的几步中(包括两种方法),虽然都可以打开image_view和rviz,但是会提示错误
ERROR: cannot launch node of type [ORB_SLAM/ORB_SLAM]: can't locate node [ORB_SLAM] in package [ORB_SLAM]
并且在输入数据包进行运算时,image_view和rviz都无法显示map可current frame。
以上,就是我目前在视觉SLAM开源程序学习的进度,先保存至此,以便日后再次学习。