使用evo将slam中的rosbag的轨迹输出为tum格式的txt文件

1.首先下载好evo工具

1.1首先确定好要python版本,这里安装用python2版本即可,指令:

python --version

 1.2如果不是python2版本,切换为python2版本,(如果用的是python3版本,会有很多ros指令无法使用,笔者之前切换到python3无法使用ctrl+alt+t无法打开终端,切换回python2就好了),(有多个python版本并且设置了优先条件才需要这一步)切换指令:

sudo update-alternatives --config python

 1.3注意python与pip的关系,python2就对应pip,python就对应pip3,我们这里下载的是evo1.1.2,用pip就可以

1.4下载evo(直接在终端运行,HOME中生成evo文件夹)


git clone https://github.com/MichaelGrupp/evo.git

 进入evo

cd evo

检查


git checkout v1.12.0

 下载


sudo pip install  -i https://pypi.tuna.tsinghua.edu.cn/simple --editable . --upgrade --no-binary evo

1.5检查evo安装的软件包,(看一下有没有安装成功)


    pip list//列出pip安装的软件包

 

 如图所示(按照字母顺序排序)

1.6卸载的指令


    pip uninstall evo//卸载

 2.测试一下

进入home里的evo文件夹,然后

cd test/data
evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xyz//测试指令

 (ok,这样代表evo指令没有问题,接下来进入实际测试)

3.实际测试(使用rosbag来测试)

笔者这里是用dlo算法跑数据包,然后记录其中的/robot/dlo/odom_node/odom话题

3.1将算法运行起来(每个人可能用的是不同算法,这里我举例dlo算法)(改了topic所以肯定不是源dlo算法,1_dlo.launch)


beming@beming-G15:~$ cd dlo_wordspace/
beming@beming-G15:~/dlo_wordspace$ source ./devel/setup.bash
beming@beming-G15:~/dlo_wordspace$ roslaunch direct_lidar_odometry 1_.launch 

3.2将数据包运行起来(每个人的数据包也是不一样的,这里举例而已)

rosbag play kys-v_0000000080_0.bag 

3.3这一步我们应该查看一下发布的话题,

rostopic list

 其中的/robot/dlo/odom_node/odom,其实就是里程计,关键就是要知道以odom结尾的话题

3.4录制话题,将算法,数据包运行起来后,记录其中的odom结尾的话题

指令:(enter开始,按ctrl+c录制结束)

rosbag record /robot/dlo/odom_node/odom
(record后面空格后直接接话题,也可以是多个话题)

 (注意在哪个空间录制的,这个包就会存在哪个空间,并且以时间命名包的名字)

(如图蓝色的所示)

我们再查看一下录制的包的话题内容,防止出错,指令是:(XX代表bag的名称)

rosbag info XXXXXX

 这个话题和我们需要录制的是一样的,没有错误

3.5接下来我们需要将录制的包(以odom为topic结尾的)转化为tum格式,

指令:evo_traj bag XXXXX1.bag  XXXXX2  --save_as_tum(XXXX1为包的名字,XXXX2为topic的名字)

 evo_traj bag 2023-07-09-17-01-47.bag /robot/dlo/odom_node/odom --save_as_tum

出现下面的内容就是成功了 

然后你就可以看见一个以tum结尾的文件(在之前的那个bag的空间里) 

 然后就是改一下后缀,将tum的后缀改为txt

 3.6运行指令,显示轨迹图

evo_traj tum odom.txt -p

 (完美实现轨迹图)

### 使用 EVO 工具评估 TXT 文件 EVO 是一款强大的工具,专门设计用于视觉里程计和 SLAM 问题中的轨迹评估。该工具不仅提供数据评估功能还具备可视化能力,可以绘制相机的轨迹并计算其与真值间的误差[^1]。 对于 TUM 数据集格式的 `.txt` 文件,可以通过 `evo_ape` 命令来比较两个文件中记录的不同轨迹之间的绝对姿态误差 (APE)[^2]: ```bash evo_ape tum a.txt b.txt ``` 此命令会对比名为 `a.txt` 和 `b.txt` 的两组 TUM 格式轨迹数据,并输出它们之间 APE 统计信息以及相应的图表表示形式。 为了更深入地了解如何利用 Python API 来操作这些文本文件,在下面给出了一段简单的代码片段作为示范,展示了怎样加载真实的轨迹和估算得到的轨迹,并对其进行评价过程[^3]: ```python import evo.core.pose_relation as pose_relation from evo.tools import file_interface # 加载真实轨迹和估计轨迹 true_trajectory = file_interface.read_tum_trajectory_file("true_trajectory.txt") estimated_trajectory = file_interface.read_tum_trajectory_file("estimated_trajectory.txt") # 创建 PoseRelationErrorMetric 对象以进行轨迹评估 metric = pose_relation.PoseRelation.error_pos_and_rotation_compact_angle_deg # 计算误差指标 result = metric.process_data((true_trajectory, estimated_trajectory)) print(result.get_statistics()) ``` 此外,如果需要将一种格式的数据换为另一种格式(比如从 TUM 换成 KITTI),也可以通过如下命令实现[^4]: ```bash evo_traj tum traj_1.txt --save_as_kitti kitti_format_output.txt ``` 上述例子说明了 EVO 在处理各种类型的 `.txt` 文件方面具有良好的兼容性和灵活性,无论是直接分析还是格式间互相化都表现优异。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值