从零开始的Linux(6)——ubuntu18.04&D435i下跑通PL-VINS并evo评测

1.安装ubuntu18.04

详见从零开始的Linux(5)ubuntu18.04下运行VINS-Mono/VINS-RGBD(保姆级超级详细教程)_vinsrgbd-CSDN博客

该博客中提到的第三方库也一并安装 。

2.下载PL-VINS

GitHub - cnqiangfu/PL-VINS: PL-VINS: Real-Time Monocular Visual-Inertial SLAM with Point and Line Features

直接下进windows就行

修改PL-VINS的三个文件:
1./PL-VINS/feature_tracker/CMakeLists.txt

将opencv路径注释掉,我们直接用ros自带的opencv3.2

还有两个路径,改成自己的

2.feature_tracker/src/linefeature_tracker.h

#include "line_descriptor/include/line_descriptor_custom.hpp"

3. feature_tracker/src/line_descriptor/src/precomp_custom.hpp

#include "../include/line_descriptor_custom.hpp"

3. 编译并运行PL-VINS

我使用的rosbag是D435i录制的,所以运行的lanuch文件和PL-VINS官方的有区别。

1.将realsense文件夹导入/PL-VINS/config

2.PL-VINS/vins_estimator/launch中加入启动文件realsense_color.lanuch,并添加linefeature_tracker和image_node_b节点,相应代码直接黏贴PL-VINS官方lanuch文件。

3./config/realsense的代码中修改接受话题的名称,使之接受相应的rosbag,以及自己的路径

编译:按照PL-VINS官方readme文件中中正常编译

运行:打开两个终端,分别输入

source devel/setup.bash
roslaunch plvins_estimator realsense_color.launch
source devel/setup.bash
roslaunch plvins_estimator vins_rviz.launch

运行数据包:

rosbag play With_more_rotation.bag

4. evo评测

1.安装evo

参考Ubuntu18.04安装EVO工具-CSDN博客

 2.获取数据包提供的真值

 在进行评测前,需要获取数据包提供的真值,以我的rosbag为例

打开终端,输入

rosbag info b.bag(你的rosbag的名称)

看到

 evo的readme中提到,它可以分割出如下形式的rosbag话题

我的数据包的轨迹真值就是/vrpn_client_node/handheld/pose

终端输入

evo_traj bag b.bag /vrpn_client_node/handheld/pose --save_as_tum

 

 得到轨迹真值文件,将后缀改成txt即可

3.获取PL-VINS运行的轨迹

我们需要修改PL-VINS中的一些代码,不过PL-VINS实际上已经对VINS-MONO的输出格式做了修改,所以我们不需要大改

1.进入vins_estimator/src/utility/visualization.cpp,按ctrl+f进入搜索模式找/home

确保输出流都是如下格式,并且路径都是你自己的

ofstream foutC("/home/nana/catkin_plviss/src/PL-VINS/Trajactory/tum_fast_no_loop.txt", ios::app);
        foutC.setf(ios::fixed, ios::floatfield);
        foutC.precision(0);
        foutC << header.stamp.toSec() * 1e9<< " ";
        foutC.precision(5);
        foutC << correct_t.x() << " "
              << correct_t.y() << " "
              << correct_t.z() << " "
              << correct_q.w() << " "
              << correct_q.x() << " "
              << correct_q.y() << " "
              << correct_q.z() <<endl;
        foutC.close();

2.进入pose_graph/src/pose_graph.cpp,按ctrl+f进入搜索模式找/home

确保输出流都是如下格式,并且路径都是你自己的

ofstream foutC("/home/nana/catkin_plviss/src/PL-VINS/Trajactory/tum_fast_plvins_loop.txt", ios::app);
        foutC.setf(ios::fixed, ios::floatfield);
        foutC.precision(0);
        foutC << cur_kf->time_stamp * 1e9<< " ";
        foutC.precision(5);
        foutC << P.x() << " "
              << P.y() << " "
              << P.z() << " "
              << Q.w() << " "
              << Q.x() << " "
              << Q.y() << " "
              << Q.z() << endl;
        foutC.close();

3. 进入pose_graph/src/pose_graph_node.cpp,按ctrl+f进入搜索模式找/home

把路径都改成自己的

std::ofstream foutC("/home/nana/catkin_plviss/src/PL-VINS/Trajactory/tum_fast_plvins_loop.txt", std::ios::out);
        foutC.close();
std::ofstream foutC1("/home/nana/catkin_plviss/src/PL-VINS/Trajactory/evo_fast_plvins_loop.txt", std::ios::out);
        foutC1.close();

修改main函数中的VINS_RESULT_PATH,改成

VINS_RESULT_PATH = VINS_RESULT_PATH + "/vins_result_loop.txt";

运行 PL-VINS,可以看到你设置的路径中出现了loop和no_loop的txt文件

4.评测

1.可视化

二维可视化:

evo_traj tum pose.txt b.txt(输出轨迹) --ref=pose.txt(用真值做参考) -p --plot_mode=xz --align --correct_scale

三维可视化:

evo_traj tum pose.txt b.txt(输出轨迹) --ref=pose.txt(用真值做参考) -p --plot_mode=xyz --align --correct_scale

 2.误差评测

evo_ape tum pose.txt pl.txt -va(绝对位姿误差)
evo_rpe tum pose.txt pl.txt -va(相对位姿误差)

5.PL-VINS可视化 

代码运行后,rviz能显示轨迹,看不到提取的点线特征图像,显示No Image

解决方法:ubuntu18.04运行PL-VINS问题记录_18.04如何运行plvio-CSDN博客

适配D435i:realsenseD435i跑PL-VINS_no image received-CSDN博客

6.虚拟机内存不足问题

主页显示隐藏目录,进入 .cache/vmware/drag_and_drop中,这是一个缓存区,这里的文件都可以删除

windows里也有对应的缓存区,不过电脑管家就可以自动删掉了

  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值