这篇主要测试GAAS开源无人机里用到的一种SLAM算法,目的是先对该SLAM算法进行熟悉,再开始入手GAAS视觉定位。GIThub上的代码地址为:
https://github.com/gaoxiang12/ygz-stereo-inertial
这是ygz -立体惯性SLAM,立体惯性VO。它是专为立体声和立体声惯性传感器模块,如vi传感器。它采用LK光流作为前端,滑动窗口束调节作为后端。您可以在数据集和自己的传感器中随意尝试。由于手头还没有双目摄像头,打算先用数据集进行测试。
1. 安装依赖
如果使用ubuntu,只需输入“./install_dep”。安装除pangolin以外的所有依赖。或者可以单独安装:
2. 编译
运行 "./generate.sh" 编译所有, 或者根据 generate.sh的单独编译。
3. 运行示例数据集
您可以将stereo或stereo-imu数据放入ygz-stereo中,例如EUROC数据集(http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets)。我们提供纯立体视觉和立体惯性视觉的EUROC。运行纯视觉的例子,键入:
bin/EurocStereo ./examples/EurocStereo.yaml
运行纯视觉模式。不要忘记先在.yaml配置文件中指定数据集目录。此外,要运行视觉惯性模式,请键入: 运行立体声VIO案例。
bin/EurocStereoVIO ./examples/EurocStereoVIO.yaml
具体做法:
(1)根据数据集链接进去,下载MH第一个数据集,解压,将数据集放到/home/chen/catkin_ws3/src/ygz-stereo-inertial/data(这里因为我把ygz-stereo-inertial放在一个新建的工作空间catkin_ws3内进行编译的。)
a. 纯立体视觉数据集测试
更改./examples/EurocStereo.yaml中数据集地址,打开EurocStereo.yaml,将
# Dataset dirs
LeftFolder: /home/gaoxiang/dataset/euroc/V1_01_easy/cam0/data
RightFolder: /home/gaoxiang/dataset/euroc/V1_01_easy/cam1/data
TimeFolder: /home/gaoxiang/code/ygz-stereo-release/examples/EuRoC_TimeStamps/V101.txt
更改为:
# Dataset dirs
LeftFolder: /home/chen/catkin_ws3/src/ygz-stereo-inertial/data/mav0/cam0/data
RightFolder: /home/chen/catkin_ws3/src/ygz-stereo-inertial/data/mav0/cam1/data
TimeFolder: /home/chen/catkin_ws3/src/ygz-stereo-inertial/examples/EuRoC_TimeStamps/MH01.txt
然后,运行:
chen@chen:~/catkin_ws3/src/ygz-stereo-inertial$ bin/EurocStereo ./examples/EurocStereo.yaml
Illegal instruction (core dumped)
结果报错,比较难搞的问题,不知道怎么解决。。。。待续,如果谁有好的办法,希望留言???
b. 立体惯性视觉数据集测试
同理,将EurocStereoVIO.yaml中数据集位置更改为:
LeftFolder: /home/chen/catkin_ws3/src/ygz-stereo-inertial/data/mav0/cam0/data
RightFolder: /home/chen/catkin_ws3/src/ygz-stereo-inertial/data/mav0/cam1/data
IMUFolder: /home/chen/catkin_ws3/src/ygz-stereo-inertial/data/mav0/imu0/data.csv
TimeFolder: /home/chen/catkin_ws3/src/ygz-stereo-inertial/examples/EuRoC_TimeStamps/MH01.txt
然后运行:
chen@chen:~/catkin_ws3/src/ygz-stereo-inertial$ bin/EurocStereoVIO ./examples/EurocStereoVIO.yaml
I1113 19:40:50.543462 9327 System.cpp:54] YGZ system all ready, waiting for images ...
I1113 19:40:51.003077 9327 TrackerLK.cpp:63]
********* Tracking frame 0 **********
I1113 19:40:51.003176 9327 TrackerLK.cpp:92] Detecting features
I1113 19:40:51.003190 9327 ORBExtractor.cpp:469] Calling fast single level
Illegal instruction (core dumped)
分析原因,可能我的笔记本配置的问题。所以下次打算换个笔记本试试。