在EUROC数据集上运行了LearnViORB,并且测评了ate 和 pre.
运行 LearnViORB
参考网站:click here
LearnVIORB 下载: click here
CMAKE version error
CMake Error at CMakeLists.txt:33 (find_package):
Could not find a configuration file for package "OpenCV" that is compatible
with requested version "2.4.3".
The following configuration files were considered but not accepted:
/opt/ros/kinetic/share/OpenCV-3.2.0-dev/OpenCVConfig.cmake, version: 3.2.0
/usr/local/share/OpenCV/OpenCVConfig.cmake, version: 3.2.0
##
这是因为CMakeLists.txt中要求的opencv版本是2.4.3的,而我电脑上的时3.2.0,将:
find_package(OpenCV 2.4.3 REQUIRED)
改为:
find_package(OpenCV 3.0 REQUIRED)即可
Eigen error
/usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:745:3: error: static assertion failed:YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY
EIGEN_CHECK_BINARY_COMPATIBILIY(Func,typename ActualDstTypeCleaned::Scalar,typename Src::Scalar);
Eigen 的一个数据类型有点问题: click here
内存爆炸
使用代码:
./build.sh
编译
出现内存爆炸的问题,系统卡死。
gedit build.sh
將所有的
-j
改成
-j4
即可,
-j4的含义是最多四核,-j是需要多少核就用多少
尝试-j22,也会内存爆炸
运行
在LearnVIORB-RT文件夹中打开终端,输入:
roslaunch Examples/ROS/ORB_VIO/launch/testeuroc.launch
打开另一个终端,输入:
rosbag play ~/slam/V1_01_easy.bag (数据路径)
测评
网上下载得到的ground truth:
LearnVIORB 中的输出程序:
原来的输出 q.w() 在xyz后面。没法和网上数据吻合。
mTimeStamp 用了toSecond() 方法,不再是32位int
直接*1e9,精度丢失,將KF的成员变量mTimeStamp的类型变成 long double, 精度也丢失。
复制给新的long int 变量,再输出,可以匹配成功。
使用pyhton 脚本 (tum 官网下载)计算 ate rpe
~/slam/LearnVIORB-RT$ python2 ../python2计算ATE的RMSE/evaluate_rpe.py /media/txt/txtDisk2/kitti_sync/2011_09_30_drive_0028_extract_tumpose_gt.txt ../temp/kitti93020/KeyFrameNavStateTrajectory.txt
txt@txt-HP:~/slam/LearnVIORB-RT$ python3 ../python3计算ATE的RMSE/evaluate_ate.py /media/txt/txtDisk2/kitti_sync/2011_09_30_drive_0028_extract_tumpose_gt.txt ../temp/kitti93020/KeyFrameNavStateTrajectory.txt
得到结果:
rte:
1.7556863981
ate:
0.040006
MH_01 | MH_02 | MH_03 | MH504 | MH_05 | |
---|---|---|---|---|---|
rte | 1.36378 | 1.22551635362 | 1.64304283219 | 1.4237281187 | 1.44669596356 |
ate | 0.055397 | 0.021788 | 0.028933 | 0.118170 | 0.085722 |
v1_01 | v1_02 | v1_03 | v2_01 | v2_02 | v2_03 | |
---|---|---|---|---|---|---|
rte | 1.77187208344 | 1.73927849214 | 1.53240481741(丢失) | |||
ate | 0.045251 | 0.043964 | 0.013476 |
in LearnVIROB/conig/euroc.yaml, the writer says
## bad: V1_03_difficult(wrong), V2_03_difficult(lost)
## not so good(cant close loop without loopclosure): V1_02_medium, V2_02_medium, MH_05_difficult
## good: V1_01_easy, V2_01_easy, MH_01_easy, MH_02_easy, MH_03_medium, MH_04_difficult
MH_01 | MH_02 | MH_03 | MH504 | MH_05 |
---|---|---|---|---|
good | good | good | good | not so good |
v1_01 | v1_02 | v1_03 | v2_01 | v2_02 | v2_03 |
---|---|---|---|---|---|
good | not so good | bad(wrong) | good | not so good | bad(丢失) |
run LearnVIORB on kitti dataset, I find it hard to initialize the map, maybe there is flaws with parameters such as window size of ORB extractor.
093028 | v1_02 | v1_03 | v2_01 | v2_02 | v2_03 | |
---|---|---|---|---|---|---|
rte | 0.261922040797 | not so good | bad(wrong) | good | not so good | bad(丢失) |
are | 5.911631 |