python2 安装 evo 并评价MSKCF

参考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

 

修改mskcf 保存轨迹

参考https://github.com/symao/vio_evaluation

修改msckf源码,用tum格式(为了便于用evo 进行euroc的评价)

在msckf_vio.cpp开头增加如下

#在头文件增加
#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

在470行后增加

#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

重新编译msckf,运行得到结果vio.txt

#!!!注意:这里一定要用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 

evo评价步骤

#先把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的计算:

python2 安装 evo 并评价MSKCF_第1张图片

python2 安装 evo 并评价MSKCF_第2张图片

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评价说明

python2 安装 evo 并评价MSKCF_第3张图片

 

解决pip下载速度慢的问题

https://blog.csdn.net/wolflikeinnocence/article/details/80140064

C++多线程(一)thread类

https://blog.csdn.net/coolwriter/article/details/79883253

你可能感兴趣的:(slam)