还是先介绍实验内容:(1)运行离线的SVO(基于ROS),(2)实时运行SVO
环境:ROS Kinetic ;ubuntu 16.04 ; DAVIS 240C
(1)先按照 https://github.com/uzh-rpg/rpg_svo/wiki/Installation:-ROS 安装好依赖项和对应的库文件
然后打开三个终端分别运行:
roslaunch svo_ros test_rig3.launchrosrun rviz rviz -d /home/wy/catkin_ws/rpg_svo/src/svo_ros/rviz_config.rvizrosbag play airground_rig_s3_2013-03-18_21-38-48.bag
在rviz界面中可以看到跟踪到特征点以绿色显示出来的:
(2)接下来有意思的是: 实时相机流上运行SVO
首先,我们需要有一个节点node在话题camera/image上发布image。
我现在的设备是DAVIS 240C,它发布的话题名字是/dvs/image_raw。所以这里需要重新映射名字。
第一步:按照教程,应该先去标定相机,哈哈哈哈我已经标定好了,只不过这里可能需要更改一下对应的yaml文件。
看到默认的yaml文件是这样的:
按照我上一篇博客:[]使用kalibr得到的相机校准文件,我可以将其结果直接拿过来使用:
参考 这里给出了相机校准得到的文件的格式。
更改后的文件如下:
接着第二步,更改launch文件:
接下来就是运行了,分别打开4个终端,依次是:
roscoreroslaunch svo_ros live.launch 实时运行SVOroslaunch dvs_renderer davis_mono.launch 打开设备运行,让摄像头发布图象数据。rosrun rviz rviz -d /home/wy/catkin_ws/src/rpg_svo/svo_ros/rviz_config.rviz 展示图象与SVO运行效果。
我佛了,我现在所在的环境纹理实在太简单了,100个特征点都木有。如果环境的纹理丰富,应该可以得到数据流后,直接运行看到效果。毕竟我都已经初始化成功了。。。。先放个截图吧。改天更新。