复现LIWO

参考链接:
https://github.com/ZikangYuan/liw_oam

下载kaist数据以及真值:

此处省略代码编译和环境配置

一、查看各类传感器频率

1.1查看数据包信息

在总时长307s中,/encoder_count 话题发布 30798条msgs 频率100Hz;

/gps/fix 话题发布 1540条 msgs 频率5Hz;

/imu/data_raw 话题发布 30800 msgs 频率100Hz;

/velocity 话题发布 30797 msgs 频率100Hz;

/velodyne_points 话题发布 3051 msgs 频率10Hz;

1.2通过rostopic hz /velodyne_points测特定话题的实时频率

二、查看LIWO总体流程的话题节点

2.1启动LIWO程序

2.2启动rqt查看节点话题

可知该LIWO订阅:

10Hz的/velodyne_points话题;

100Hz的/velocity话题;

100Hz的 /imu/data_raw话题

三、新建文件夹

3.1output用于存放实时估计的姿态

3.2新建文件夹cloud_frame用于存放单帧激光雷达数据经过运动补偿、去畸变、体素下采样后的完整点云

打开7号pcd,pcl_viewer 7.pcd

3.3新建文件夹cut_sweep用于存放原始激光雷达点云扫描帧被切分为多段子扫描后的点云

3.4启用debug_output

<param name="debug_output" type="bool" value="0"/>修改为:

<param name="debug_output" type="bool" value="1"/>

四、启动SLAM

4.1播放数据包

复制代码
rosbag play kaist_1.bag --clock -d 1.0 -r 1.0

--clock :时钟发布,发布/clock话题,使用bag记录的时间

-d 1.0 :启动延时,1s

-r 1.0 :播放速率1.0

4.2建图过程

得到实时位姿估计轨迹

4.3全局点云地图(待查验)

五、精度评估

5.1 TUM数据集格式

格式为:时间、位置、姿态四元素(time, t_x, t_y, t_z, q_x, q_y, q_z, q_w)

估计值

真值

5.2 EVO评估工具

参考链接配置EVO工具

https://blog.csdn.net/u011341856/article/details/104594392?fromshare=blogdetail&sharetype=blogdetail&sharerId=104594392&sharerefer=PC&sharesource=2201_76065173&sharefrom=from_link

打开终端输入evo,然后按Tab键就可以出现如下命令

5.3 EVO依赖版本

EVO 需要 Python 3.6 或更高版本,若是Python 2.7则需要更改

复制代码
 sudo update-alternatives --config python

5.4 ape评估-评估两条轨迹的绝对位姿误差

元素 说明 备注
基本命令结构 evo_ape tum <参考轨迹> <估计轨迹> [可选项] 基础框架,必须遵循的格式。
必需参数 tum:指定轨迹文件为 TUM 格式。 格式必须匹配,否则会报错。
kaist_1.txt:参考轨迹文件(真值/ground truth)。 -
pose.txt:待评估的估计轨迹文件。 -
常用可选参数 -a(--align):进行 SE(3) 刚体变换对齐(旋转和平移)。 强烈推荐,消除初始位姿偏差。
-s(--correct_scale):进行尺度校正。 如果估计轨迹来自单目SLAM(尺度不确定),必须使用
-p(--plot):生成并显示轨迹和误差的可视化图形。 直观比较。
-v(--verbose):启用详细输出模式。 显示更全面的处理信息。
--plot_mode xyz:设置绘图模式为三维显示。 默认为 xyz,也可选 xy, xz等二维视图。
进阶可选参数 -r full:同时评估旋转和平移误差(无单位)。 默认评估平移误差 (-r trans_part,单位:米)。
--save_plot <路径>:将生成的图表保存为图片文件。 --save_plot ./my_plot.png
--save_results <路径>:将统计结果保存为 .zip文件。 便于后续用 evo_res命令比较不同结果。

5.4.1直接比较

evo_ape tum kaist_1.txt pose.txt

5.4.2添加刚度变换-a(--align):进行 SE(3) 刚体变换对齐(旋转和平移)

追求的是整体最佳匹配,通过复杂的数学计算让两条轨迹在空间中的形状尽可能重合

evo_ape tum kaist_1.txt pose.txt -a

5.4.3添加尺度校正-s(--correct_scale):进行尺度校正

evo_ape tum kaist_1.txt pose.txt -a -s

5.4.4添加图形显示-p(--plot):生成并显示轨迹和误差的可视化图形

evo_ape tum kaist_1.txt pose.txt -a -s -p

5.5 rpe相对位姿误差-比较两个轨迹之间的相对轨迹误差

5.6 evo_traj绘制出运行轨迹

5.6.1直接绘制

evo_traj tum kaist_1.txt

不添加参数,则只输出轨迹相关信息

5.6.2添加绘图 -p

evo_traj tum kaist_1.txt -p

则能够输出轨迹6个姿态随时间变化关系

5.6.3绘制两条轨迹

evo_traj tum kaist_1.txt pose.txt -p

5.6.4 原点对齐

evo_traj tum kaist_1.txt pose.txt -p --ref kaist_1.txt --align_origin

--ref kaist_1.txt 参考kaist_1.txt做对齐

--align_origin​ 只做一个非常简单的操作:将轨迹的起点移动到坐标原点

5.6.5绘制投影到平面

evo_traj tum kaist_1.txt pose.txt -p --ref kaist_1.txt --align_origin --plot_mode=xy

相关推荐
精彩文帅。2 年前
EVO轨迹评估工具基本使用教程(学习记录)
evo·slam
ZPILOTE2 年前
ORB-SLAM2学习笔记3之EuRoc开源数据集运行ORB-SLAM2生成轨迹并用evo工具评估轨迹
vslam·orb-slam2·视觉里程计·euroc·evo·轨迹评估·evo_traj