参考https://blog.csdn.net/weixin_44386661/article/details/103080551
https://blog.csdn.net/zhiwei121/article/details/105013678
这里用源码安装
#
git clone https://github.com/MichaelGrupp/evo.git
cd evo
# 安装在系统的python2 使用清华源 并开启usr
#可以尝试安装在python3
pip install --editable . --upgrade --no-binary evo -i https://pypi.tuna.tsinghua.edu.cn/simple --user
#出现问题
#更新numpy 和matplotlib的版本
pip install numpy --upgrade --user
pip install matplotlib --upgrade --user
#如果更新不了 发现加上清华源即可
pip install numpy --upgrade --user -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install matplotlib --upgrade --user -i https://pypi.tuna.tsinghua.edu.cn/simple
参考https://github.com/symao/vio_evaluation
修改msckf源码,用tum格式(为了便于用evo 进行euroc的评价)
#在头文件增加
#include
#在这一句map MsckfVio::chi_squared_test_table; 大概50行之后增加:
#if 1
static const int p_max_cnt = 10000;
static const int p_cols = 8;
static double *p_log_data = new double[p_max_cnt * p_cols];
static int p_cnt = 0;
void mylog()
{
FILE* fp = fopen("/home/lincent/s_msckf_ws/vio.txt","w");
int k = 0;
while(1)
{
if(k < p_cnt)
{
for(int i=0; i 0) fprintf(fp, " ");
fprintf(fp, "%f", p_log_data[p_cols * k + i]);
}
fprintf(fp, "\n");
fflush(fp);
k++;
}
else
{
usleep(100000);
}
}
fclose(fp);
}
static std::thread th_log(mylog);
#endif
#if 1
const auto& s = state_server.imu_state;
const auto& p = s.position;
const auto& q = s.orientation;
const auto& v = s.velocity;
const auto& ba = s.acc_bias;
const auto& bg = s.gyro_bias;
double *lp = p_log_data + p_cnt * p_cols;
lp[0] = s.time;
lp[1] = p(0);
lp[2] = p(1);
lp[3] = p(2);
lp[4] = q.w();
lp[5] = q.x();
lp[6] = q.y();
lp[7] = q.z();
//lp[8] = v(0);
//lp[9] = v(1);
//lp[10] = v(2);
//lp[11] = ba(0);
//lp[12] = ba(1);
//lp[13] = ba(2);
//lp[14] = bg(0);
//lp[15] = bg(1);
//lp[16] = bg(2);
//lp[17] = processing_time;
p_cnt++;
#endif
#!!!注意:这里一定要用release进行make,不然运行会出现大问题
catkin_make --pkg msckf_vio --cmake-args -DCMAKE_BUILD_TYPE=Release
source devel/setup.bash
#运行,结束得到 位姿txt
roslaunch msckf_vio msckf_vio_euroc.launch
rosbag play ~/dataset/Euroc/MH_04_difficult.bag
#先把euroc的真值转换为tum
evo_traj euroc ~/dataset/Euroc/MH_04_difficult/state_groundtruth_estimate0/data.csv --save_as_tum
#输出轨迹、ape、rpe, p表示plot, va进行轨迹对齐
evo_traj tum ours.txt --ref ground\ truth.tum -p -va
evo_ape tum ground\ truth.tum ours.txt -p -va
evo_rpe tum ground\ truth.tum ours.txt -p -va
参考:
官方文档 https://github.com/MichaelGrupp/evo/wiki/evo_traj
APE、RPE的计算:
EVO使用方法详解 https://blog.csdn.net/dcq1609931832/article/details/102465071
https://blog.csdn.net/weixin_41969600/article/details/89891610
https://zhuanlan.zhihu.com/p/88223106
使用 evo 工具评测 VI ORB SLAM2 在 EuRoC 上的结果
http://www.liuxiao.org/2017/11/%E4%BD%BF%E7%94%A8-evo-%E5%B7%A5%E5%85%B7%E8%AF%84%E6%B5%8B-vi-orb-slam2-%E5%9C%A8-euroc-%E4%B8%8A%E7%9A%84%E7%BB%93%E6%9E%9C/
vins-mono保存、重载地图、evo工具测试
https://blog.csdn.net/Hanghang_/article/details/104535370#evo_84
另外,评价TUM数据集的另外两个评价工具:evaluate_ate.py evaluate_rpe.py
参考 https://blog.csdn.net/Darlingqiang/article/details/89059466
RGB-D SLAM系统评估的基准---TUM https://blog.csdn.net/weixin_36662031/article/details/83088781
视觉SLAM基础:算法精度评价指标(ATE、RPE)https://zhuanlan.zhihu.com/p/105428199
各数据集的格式: https://blog.csdn.net/Darlingqiang/article/details/102631102
KITTI评价说明
https://blog.csdn.net/wolflikeinnocence/article/details/80140064
https://blog.csdn.net/coolwriter/article/details/79883253