多传感器融合(四)--- ROVIO与EVO的安装与使用

ROVIO与EVO的安装与使用

    • 安装ROS
    • 安装Kindr
    • 安装ROVIO(同时安装lightweight_filtering)
    • 运行ROVIO
    • 修改地图保存路径
    • 使用EVO评估rovio轨迹


ROVIO是一款基于滤波的单目SLAM
源码:GitHub - ethz-asl/rovio
论文:Robust Visual Inertial Odometry Using a Direct EKF-Based Approach - Research Collection
依赖:ROS、kindr、lightweight_filtering(在rovio目录下操作)
 

安装ROS

参考Ubuntu16.04跑ORB-SLAM2--数据集及单目USB摄像头_weixin_43243788的博客-CSDN博客这篇博客的ROS安装部分,如果下载连结很慢可以考虑更换清华大学的源。

安装Kindr

git clone http://github.com/ethz-asl/kindr
cd kindr
mkdir build && cd build
cmake ..
sudo make install

安装ROVIO(同时安装lightweight_filtering)

由于ROVIO是在ROS下运行。因此需要先创建一个ros工程

mkdir -p ~/rovio_ws/src
cd ~/rovio_ws/src
catkin_init_workspace
cd ..
catkin_make
source devel/setup.bash //将对应的工作空间的路径加入环境变量ROS_PACKAGE_PATH中
echo $ROS_PACKAGE_PATH //查看当前环境变量

进入src目录下载rovio源码 并安装lightweight_filtering

cd ~/rovio_ws/src
git clone http://github.com/ethz-asl/rovio
cd rovio 
git submodule update --init --recursive //下载子模块lightweight_filtering
cd ~/rovio_ws
catkin_make rovio --cmake-args -DCMAKE_BUILD_TYPE=Release -DMAKE_SCENE=ON
catkin_make

如果在运行的时候,提示找不到一个S开头的头文件,在rovio/Cmakelist 中最后加上 add_dependencies(rovio rovio_gencpp)

运行ROVIO

1.下载EuRoC数据集
2.在rovio_ws工作空间下打开terminal运行

source ./devel/setup.bash
roslaunch rovio rovio_node.launch

重新在你数据集的存放路径下新打开一个terminal运行

rosbag play MH_01_easy.bag

或者修改rovio/launch/rovio_rosbag_node.launch中的的filename参数,将其改为实际rosbag的目录

<param name="rosbag_filename" value="your path/MH_01_easy.bag"/>

在工作空间rovio_ws下打开新terminal运行

source ./devel/setup.bash
roslaunch rovio rovio_rosbag_node.launch 

运行效果

 

修改地图保存路径

在Rovio_Node.hpp中,定义一个ofstream类,然后在发送IMU位姿上面,将这八个数据(时间戳,p的xyz,q的xyzw)保存到自己设定路径下的.txt文件中。
首先在开头添加头文件

#include <iostream>
#include <fstream>

在第670行 imuOutputCT_.transformState(state,imuOutput_);后添加代码

std::ofstream out_pose("/你的保存路径/rovio_traj.txt",std::ios::app);//save pose
        out_pose << ros::Time(mpFilter_->safe_.t_) << " " 
               << imuOutput_.WrWB()(0) << " " 
               << imuOutput_.WrWB()(1) << " " 
               << imuOutput_.WrWB()(2) << " " 
               << imuOutput_.qBW().x() << " " 
               << imuOutput_.qBW().y() << " " 
               << imuOutput_.qBW().z() << " " 
               << -imuOutput_.qBW().w() 
               << std::endl;

就可以愉快的保存轨迹结果了。

使用EVO评估rovio轨迹

evo是一个评测SLAM的工具,非常的容易使用,可以比较各种不同SLAM的算法精度和轨迹等等。也支持tum,euroc,kitti等数据集格式
evo安装参考测评工具evo安装与使用_雾雨hub的博客-CSDN博客
evo是基于python的工具一般ubuntu16.04预装了python2.7 如果安装了python3出现冲突需要修改优先Ubuntu16.04系统查看已安装的python版本,及Python2与Python3之间切换_ubuntu查看python版本_口袋里のInit的博客-CSDN博客
同时evo需要安装numpy,scipy,matplotlibm,pandas 以及sklearn
安装之前建议更新一下软件源

sudo apt-apt update

没有问题可以使用apt-get命令安装

//安装pip
sudo apt-get update
sudo apt install python-pip

//安装EVO
pip install evo --upgrade --no-binary evo

如果速度慢可以在后缀加上pip install XXX -i https://pypi.tuna.tsinghua.edu.cn/simple 使用清华的源

 

常见的参数如下:

  1. evo_config:用于保存配置文件,把自己常用的参数保存为.json文件,避免每次输入。
  2. evo_traj:用于绘制轨迹,支持的格式有kitti,eurco,tum 数据集等,也可以用于验证数据是否有效,导出为其他格式等。
  3. evo_res:可用于比较指标中的多个结果文件(打印消息和统计消息,绘制结果,将统计信息保存在表内)
  4. evo_ape :计算绝对位姿误差
  5. evo_rpe:计算相对位姿误差

 打开数据集中文件夹中的mav0/state_groundtruth_estimate0/文件夹,会发现有一个文件:data.csv。这是一个euroc格式的文件,我们首先要把他转成tum格式。输入以下命令:

evo_traj euroc data.csv --save_as_tum

把你的rovio轨迹文件和真实值放在同一文件夹下 打开terminal输入

evo_traj tum --ref=data.tum rovio_traj.txt -va -s -p --plot_mode=xy

就能飒的一下出结果了
在这里插入图片描述

evo_traj 直接画出轨迹
//单个轨迹
evo_traj tum myslam.txt -p

//也可以将多个轨迹画到一起

evo_traj tum 1**.txt 2**.txt --ref 1**.txt -va -p
//其中ref是参考轨迹,-va是对齐后的详细信息,-p是画出图像,也可以使用
//–plot_mode {xy,xz,yx,yz,zx,zy,xyz}
//来选择单独绘制某个平面的信息

 

evo_ape:绝对位姿误差的计算

evo_ape tum 1**.txt 2**.txt  -va -p
//使用ape的时候无需给出–ref 的文件,tum 后第一个文件即为标准文件,
//这里标准文件为1**.txt

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值