LearnViORB的运行和测评

在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

猜你喜欢

转载自blog.csdn.net/qq_39575818/article/details/88571745