实车测试——用小觅双目相机跑ORB-SLAM2

写在前面

工欲善其事必先利其器,做视觉SLAM,最好还是有一款相机。
说到相机,又分为单目相机、双目相机、深度相机、事件相机等。
单目SLAM无法获取真实尺度,精度相对于双目要低,深度相机不适合室外,事件相机还没有普及。
综合考虑,打算买一款双目相机,双目相机有ZED、小觅等。
考虑到小觅的价格低,有硬件同步的IMU,以及支持开源项目ORB-SLAM2、VIORB、OKVIS、VINS。
所以,最终买了小觅双目相机。

拆箱

安装好是这个样子的,三脚架有点鸡肋,如果是在自动驾驶汽车上使用,建议用吸盘式支架。

安装SDK

目前,SDK分为1和2两个版本,分别根据教程
https://slightech.github.io/MYNT-EYE-SDK/getting_started_linux.htmlhttps://github.com/slightech/MYNT-EYE-SDK-2-Guide安装即可。
两个SDK不冲突,都安装也无妨。
另外,要注意固件与SDK的适配问题
我收到的相机固件版本为2.0,因为当时不太懂,所以我首先安装了SDK1,基本上没有问题,但是偶尔会出现下图所示的问题。
此时,相机无法获取图像,如果正在跑SLAM,程序会卡死,只能强制退出。
因此,最好安装SDK2,但是问题来了,目前小觅支持的开源项目只支持SDK1,所以想用SDK2,又想跑开源项目的朋友只能等小觅更新了。

跑ORB-SLAM2

配置MYNT-EYE-ORB-SLAM2-Sample

根据https://github.com/slightech/MYNT-EYE-ORB-SLAM2-Sample安装即可,其实就是对ORB-SLAM2添加了小觅相机的支持。
如果已经配置好ORB-SLAM2,只需在ORB-SLAM2/Examples/Stereo/目录下添加MYNT-EYE-ORB-SLAM2-Sample//Examples/Stereo/目录下的stereo_mynteye.cc和cam_stereo.yaml(注意要将标定参数修改为自己相机的),然后在ORB-SLAM2的CMakeList.txt中相应位置添加以下语句,或者直接用MYNT-EYE-ORB-SLAM2-Sample的CMakeList.txt覆盖ORB-SLAM2的CMakeList.txt,最后重新编译安装即可。

# MYNT EYE
if(DEFINED ENV{MYNTEYE_SDK_ROOT})
  set(MYNTEYE_SDK_DIR $ENV{MYNTEYE_SDK_ROOT})
endif()
set(MYNT_SDK_LIB_DIR ${MYNTEYE_SDK_DIR}/lib)
include_directories(${MYNTEYE_SDK_DIR}/include)

add_executable(stereo_mynteye
Examples/Stereo/stereo_mynteye.cc)
target_link_libraries(stereo_mynteye ${PROJECT_NAME} ${MYNT_SDK_LIB_DIR}/libmynteye_core.so)

实车测试

用吸盘式支架,将相机固定到无人驾驶汽车前挡风玻璃上,分别在地下停车场和地上进行了测试。

地下停车场测试

人工驾驶汽车在地下停车场跑了一个闭环。

运行过程截图


目测感觉比较稳,但是受光照影响较大。
有时候就在想,如果相机能把光照问题解决好,给SLAM输入的就是质量较好的图,那将大大减轻SLAM端算法的压力,提升性能。

闭环后截图


系统检测到了闭环,开始了BA,但是我笔记本电脑的CPU:97%,运行内存:70%,等了好久BA都没结束……所以这个图并不是最终的结果。
其实,我同时还录制了用Velodyne采集的激光雷达数据,然后用loam建图进行对比,可惜在拷贝数据时出问题导致数据丢失……

地上测试

人工驾驶汽车在地上跑了一个闭环。

RTK采集的轨迹

我用RTK采集了汽车的行驶轨迹,目的是与ORB-SLAM2输出的轨迹作对比。

闭环后截图


与地下停车场的测试一样,计算量过大,BA没有结束,并不是最终的轨迹。
但是感觉就算BA完成,精度也会差很多。因为受光照和车辆、行人等动态物体的影响太大,测试过程中,前方出现几个行人,直接被带偏……

总结

从以上的测试可以看出,效果并不好。
相机对光照太敏感,尤其是面朝太阳或在暗光环境下,成像质量受到很大的影响。
ORB-SLAM2在KITTI数据集上效果较好,但实际环境要比KITTI的场景复杂很多。
疑惑
为什么同样的笔记本电脑,跑KITTI没问题,而实际测试完成BA却要花费更多的时间?
猜测
ORB-SLAM2的KITTI00-02.yaml中Camera.fps: 10.0,KITTI数据集也可能是10fps,而小觅相机默认帧率为30fps,再加上可能是long-term SLAM,所以要处理更多的图像,导致计算量过大,处理时间延长。
验证
录制好数据集,让笔记本电脑慢慢去跑吧,或者用性能更好的台式机跑。
畅想
突然感觉视觉SLAM在室外应用还有很长的路要走,而且对于稀疏和半稀疏地图来说,只能定位,无法进行避障、导航等任务。
先给自己挖个坑——研究如何处理动态物体问题。
最后,欢迎交流。

猜你喜欢

转载自blog.csdn.net/learning_tortosie/article/details/80869553