当前位置:首页 > 系统教程 > 正文

LeGO-LOAM实战教程:Ubuntu20.04下使用KITTI-00数据集运行与evo评测

LeGO-LOAM实战教程:Ubuntu20.04下使用KITTI-00数据集运行与evo评测

从零开始,小白也能轻松掌握的SLAM算法评测指南

SLAM领域的热门算法LeGO-LOAM以其轻量级和低漂移特性受到广泛关注。本文旨在帮助初学者在Ubuntu20.04系统上完整跑通KITTI-00数据集,并使用专业的评测工具evo对算法轨迹进行定量分析。无论你是否具备SLAM基础,跟随本教程都能成功复现评测流程。

1. 准备工作:安装ROS与依赖库

LeGO-LOAM基于ROS Melodic/Noetic,这里使用Ubuntu20.04对应的ROS Noetic。首先配置ROS源并安装完整桌面版:

    sudo sh -c "echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list"sudo apt install curlcurl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -sudo apt updatesudo apt install ros-noetic-desktop-fullecho "source /opt/ros/noetic/setup.bash" >> ~/.bashrcsource ~/.bashrcsudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essentialsudo rosdep initrosdep update  

安装LeGO-LOAM所需的依赖库:PCL、Eigen3、GTSAM等。推荐使用apt安装:

    sudo apt install libpcl-dev libeigen3-dev libboost-all-dev libgtsam-dev  

2. 编译LeGO-LOAM源码

创建catkin工作空间并克隆LeGO-LOAM仓库:

    mkdir -p ~/catkin_legoloam/srccd ~/catkin_legoloam/srcgit clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.gitcd ..catkin_make -j4echo "source ~/catkin_legoloam/devel/setup.bash" >> ~/.bashrcsource ~/.bashrc  

3. 下载KITTI-00数据集

从KITTI官网下载里程计数据集(需要注册,或使用镜像)。我们直接使用00序列的激光雷达数据。执行以下命令下载并解压:

    cd ~wget https://s3.eu-central-1.amazonaws.com/avg-kitti/data_odometry_velodyne.zipunzip data_odometry_velodyne.zip -d KITTI/odometry/wget https://s3.eu-central-1.amazonaws.com/avg-kitti/data_odometry_poses.zipunzip data_odometry_poses.zip -d KITTI/odometry/  

解压后,00序列的点云文件位于 ~/KITTI/odometry/dataset/sequences/00/velodyne/,真值文件为 ~/KITTI/odometry/dataset/poses/00.txt

LeGO-LOAM实战教程:Ubuntu20.04下使用KITTI-00数据集运行与evo评测 LeGO-LOAM  KITTI-00数据集 evo评测 Ubuntu20.04 SLAM 第1张

4. 运行LeGO-LOAM处理KITTI-00

LeGO-LOAM提供了KITTI辅助节点,可以直接读取bin文件并发布点云。需要修改launch文件中的路径:

    # 编辑 ~/catkin_legoloam/src/LeGO-LOAM/LeGO-LOAM/launch/kitti_helper.launch# 将参数 odometryDatasetPath 设置为你的KITTI数据集路径,例如:# # 将参数 sequenceNumber 设置为 00  

然后启动kitti_helper节点和LeGO-LOAM主节点:

    roslaunch lego_loam kitti_helper.launch# 新终端roslaunch lego_loam run.launch  

此时可以看到点云建图过程。运行结束后,轨迹会以话题 /laser_odom_to_init 发布,并保存在 /tmp/loam_pose 文件中(格式为TUM)。

5. 安装evo评测工具

evo是一款用于SLAM轨迹评估的Python工具,支持多种格式。使用pip安装:

    pip install evo --upgrade --no-binary evo  

如果遇到权限问题,可加 --user 或使用虚拟环境。

6. 使用evo评测轨迹

首先准备真值轨迹:KITTI提供的真值 00.txt 是pose格式,需转换为TUM格式。使用evo工具转换:

    evo_traj kitti ~/KITTI/odometry/dataset/poses/00.txt --save_as_tum  

这会生成 00.tum 文件。然后将LeGO-LOAM输出的轨迹(位于 /tmp/loam_pose)复制到当前目录。

计算绝对轨迹误差(APE):

    evo_ape tum 00.tum /tmp/loam_pose -va --plot --plot_mode xy  

evo会自动对齐轨迹并输出RMSE、均值等指标,并显示轨迹对比图。

还可以计算相对位姿误差(RPE):

    evo_rpe tum 00.tum /tmp/loam_pose -va --plot --plot_mode xy  

7. 结果分析与注意事项

通过evo的图表可以直观看到LeGO-LOAM在KITTI-00上的表现。如果误差较大,检查配置文件是否正确,或尝试调整LeGO-LOAM参数。注意:运行前确保时间戳同步,KITTI数据集的真值已对齐。

总结

本教程详细演示了在Ubuntu20.04下使用LeGO-LOAM处理KITTI-00数据集,并用evo进行评测的全过程。涵盖LeGO-LOAM安装KITTI-00数据集下载、evo评测工具使用等核心环节,希望对SLAM初学者有所帮助。文中涉及的Ubuntu20.04 SLAM环境配置方法也适用于其他类似项目。