ROVIO安装运行及保存轨迹用evo评估

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

专为初学SLAM的小白同学(自己也是小白)准备的手把手操作指南,同时记录一下自己学习SLAM时遇到的问题和大家一起分享。
ROVIO是一款基于滤波的单目SLAM
源码:https://github.com/ethz-asl/rovio
论文:https://dx.doi.org/10.3929/ethz-a-010566547
依赖:ROS、kindr、lightweight_filtering(在rovio目录下操作)

安装ROS

参考https://blog.csdn.net/weixin_43243788/article/details/90703625这篇博客的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 poseout_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安装参考https://blog.csdn.net/weixin_44386661/article/details/103080551
evo是基于python的工具一般ubuntu16.04预装了python2.7 如果安装了python3出现冲突需要修改优先https://blog.csdn.net/wangguchao/article/details/82151372
同时evo需要安装numpy,scipy,matplotlibm,pandas 以及sklearn
安装之前建议更新一下软件源

sudo apt-apt update

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

sudo apt-get install python-numpy
sudo apt-get install python-scipy
sudo apt-get install python-matplotlib
sudo apt-get install python-pandas
sudo apt-get install python-sklearn

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

下载evo

git clone http://github.com/MichaelGrupp/evo.git
cd evo
pip install --user . --upgrade ##如果安装慢的话也可以使用清华的源加速

常见的参数如下:

  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用法等待大家的探索^ _ ^
参考
[1]: https://blog.csdn.net/a7691176/article/details/101353168
[2]: https://blog.csdn.net/Mr_Cat123/article/details/78563998/
[3]:https://blog.csdn.net/Hanghang_/article/details/104535370
[4]: https://zhuanlan.zhihu.com/p/77474890

ROVIO安装运行及保存轨迹用evo评估相关推荐

  1. (3)LOAM的安装运行——地图保存及bug解决

    这里说一下怎么把Rviz运行的结果保存下来,以及中间遇到的问题(警告磁盘小于1G;bag.active格式如何转到bag;生成的pcd文件夹内无文件怎么回事等等),希望能给遇到同样问题的朋友提供帮助. ...

  2. OV2SLAM 安装运行

    OV2SLAM 安装运行 1 安装依赖项 1.1 安装 OpenGV 1.2 安装OV2SLAM 2 运行 OV2SLAM 2.1 运行EUROC数据集 2.2 运行KITTI数据集 参考资料 OV2 ...

  3. WEB编程学习之Windows安装运行Tomcat

    前言 本博客主要记录在学习web编程中,在Windows10系统下,安装运行Tomcat服务器,以及所遇到的常见问题以及解决方案. 本文原创,创作不易,转载请注明!!! 本文链接 个人博客:https ...

  4. Docker中拉取ActiveMQ镜像安装运行网页无法访问已解决

    前言 Docker中拉取ActiveMQ镜像安装运行,以为很简单,其实一堆的坑啊,下面就来一步步填坑吧. 1.使用命令搜索activemq docker search activemq 2.使用以下命 ...

  5. Activity工作流(2)-入门安装运行第一个例子

    1. 初识Activiti 1.1. 工作流与工作流引擎 工作流(workflow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计 ...

  6. Hadoop集群+Spark集群搭建基于VMware虚拟机教程+安装运行Docker

    Hadoop集群+Spark集群搭建+安装运行Docker 目录 一.准备工作 二.在虚拟机上安装CentOS 7 三.hdfs的环境准备 四.hdfs配置文件的修改 五.克隆(复制虚拟机) 六.制作 ...

  7. WPF 项目开发入门(一) 安装运行

    WPF 项目开发入门(一) 安装运行 WPF 项目开发入门(二) WPF 页面布局 WPF 项目开发入门(三)WPF 窗体与页面 WPF 项目开发入门(四) MVVM 模式 与 TreeView树组件 ...

  8. windows7怎么安装android,安卓手机安装运行Win7系统教程(图文)

    有些安卓手机用户想在让自己手机中运行Win7系统,这样可以吗?又该怎么来操作呢?在安卓手机中是可以运行Windows系统,不过没有多大的意义,仅仅只是体验,并不能真正想电脑一样操作Win7系统.现在, ...

  9. MacOS Big Sur 11下安装运行EAS 8.2客户端

    MacOS Big Sur 11下安装运行金蝶EAS 8.2客户端 注:此方法只适用于Intel芯片的Mac电脑,M1芯片的机器不适用.M1机型请点这里:传送门 大部分企业应用都把我们这些Mac用户给 ...

  10. Mac 下安装运行Rocket.chat

    最近花了一周的时间,复习了HTML.CSS.原生JS,并学习了Node.js.CoffeeScript.js.MongoDB,入了下门. 因为准备在Rocket.chat 上做二次开发,所以先下载和安 ...

最新文章

  1. 皮一皮:华夏之大,无奇不有...
  2. 程序员到项目经理:从内而外的提升不看后悔去吧
  3. v-for和v-if同时使用(案例分析:循环最新的前14条数据显示) - 踩坑篇
  4. 样本期望的期望 总体期望_您所在领域的人才期望开放
  5. neo4j 节点与关系
  6. 云开发初探 —— 更简便的小程序开发模式
  7. 吴恩达都在做的AI农业到底有什么魔力?
  8. vbs无限循环代码_vbs整人代码
  9. 令人耳目一新的20款英文手写字体盘点
  10. angularJS与IE8整合简介
  11. Java小开发(汽车租赁系统)
  12. 大气数据计算机输出形式,大气数据计算机
  13. canny检测的matlab,canny边缘测试及matlab实现
  14. [附源码]Nodejs计算机毕业设计面向老年群体的健康养生系统Express(程序+LW)
  15. 鸟枪换炮---IDEA
  16. ConvertUtils
  17. AD18版本中测距之后显示信息不能清除
  18. 【pytorch】model.train()和model.evel()的用法
  19. 2020.10.19 第18节 预处理和宏定义
  20. (0105)iOS开发之iOS13 暗黑模式(Dark Mode)适配

热门文章

  1. exchange服务器没有响应,exchange服务没法启动!急!
  2. 莫 言------------- 我们的荆轲
  3. Flutter报setState() or markNeedsBuild() called during build.错误解决办法
  4. GPRS DTU是什么?其工作原理是什么?
  5. WPS-word使用多级编号级联
  6. 原创视频 | 我可以自学编程吗?解答新手学编程的疑惑!
  7. SEM: 科研图片处理
  8. 记第一次自己组装台式机
  9. vue实现60秒倒计时
  10. 基于Cocos2d-x游戏引擎实战开发超人