欢迎来到这个专为初学者设计的实战教程。在机器人定位与建图(SLAM)领域,LeGO-LOAM 因其轻量级和地面优化特性而广受欢迎-8。然而,在 Ubuntu20.04 系统上成功运行它,并使用 KITTI数据集 进行测试,最后用 evo工具 对结果进行量化评估,对于新手来说往往布满荆棘。本文将手把手带你走过每一步,从环境搭建到最终的 evo评测,确保你不仅能跑通算法,还能看懂精度指标。
LeGO-LOAM 是基于ROS开发的。Ubuntu20.04 对应的是ROS Noetic版本。请务必参照官方指南完成安装,并确保安装了所需依赖,例如使用命令 sudo apt-get install libboost-all-dev cmake 安装Boost和CMake-5。
LeGO-LOAM 的后端优化依赖于GTSAM。为了避免版本冲突,建议编译安装4.0.0-alpha2版本-2。可以按照以下步骤操作:下载源码,然后编译安装。
打开终端,逐行输入以下命令:
mkdir -p ~/lego_loam/srccd ~/lego_loam/srcgit clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.gitcd .. 关键步骤:KITTI数据集使用的是64线激光雷达,而LeGO-LOAM默认是为16线雷达设计的。我们需要修改配置文件 LeGO-LOAM/include/utility.h-1:
//extern const int N_SCAN = 16;//extern const int Horizon_SCAN = 1800; extern const int N_SCAN = 64;extern const int Horizon_SCAN = 2083;extern const float ang_res_x = 360.0/float(Horizon_SCAN);extern const float ang_res_y = 26.8/float(N_SCAN-1);extern const float ang_bottom = 24.8;extern const int groundScanInd = 55; imageProjection.cpp 中,将点云订阅话题改为 /kitti/velo/pointcloud-1。此外,Ubuntu20.04编译时常会遇到一些错误,例如Eigen的Index问题。需要修改 /usr/include/pcl-1.10/pcl/filters/voxel_grid.h 文件,将第340行和669行的 Eigen::Index 改为 int-2。
完成所有修改后,在工作空间根目录 ~/lego_loam/ 下运行 catkin_make 进行编译。
前往KITTI官网下载Odometry数据集,我们只需要00序列的“synced+rectified data”和“calibration”文件。
安装kitti2bag:pip install kitti2bag-1。在解压后的数据集目录(包含2011_10_03_drive_0027_sync等文件夹)中打开终端,执行:kitti2bag -t 2011_10_03 -r 0027 raw_synced。这将生成一个名为 kitti_2011_10_03_drive_0027_synced.bag 的bag文件。
在第一个终端中:
cd ~/lego_loamsource devel/setup.bashroslaunch lego_loam run.launch 如果Rviz中无法显示话题,可能需要将源码中相关Topic前的斜杠去掉-2。
在第二个终端中,进入bag包所在目录,执行:rosbag play --clock kitti_2011_10_03_drive_0027_synced.bag
为了进行 evo评测,我们需要保存算法估计的位姿。可以通过修改源码或在终端中监听话题来实现。最简单的方法是使用 rostopic echo 命令将 /laser_odometry_to_init 话题的消息保存为文本文件,或者修改 transformFusion.cpp 添加文件写入功能-1。假设我们最终得到了一个名为 estimated_pose.txt 的轨迹文件。
Python环境下的安装非常简单:pip install evo。
KITTI数据集自带了真实轨迹(ground truth)。我们需要将其转换为evo支持的格式(如TUM或KITTI格式)。
evo提供了丰富的评估指标,最常用的是绝对轨迹误差(ATE)和相对位姿误差(RPE)-4-10。打开终端,进入轨迹文件所在目录。
evo_ape kitti ground_truth.txt estimated_pose.txt -va --plot evo_rpe kitti ground_truth.txt estimated_pose.txt -va --plot evo_traj kitti ground_truth.txt --ref=estimated_pose.txt -p 执行命令后,evo会计算均方根误差(RMSE)、均值、中位数等指标,并绘制出轨迹对比图。通过这些量化指标,你可以直观地看到 LeGO-LOAM 在 KITTI-00数据集 上的实际表现。至此,你已经完成了从零运行算法到专业 evo评测 的整个流程。
本文由主机测评网于2026-03-11发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:http://www.vpshk.cn/20260330460.html