一、项目背景
Light-LOAM 是一个轻量级的激光雷达里程计和建图系统,基于 A-LOAM 改进而来。该系统在保持原有性能的基础上,大幅降低了计算复杂度,使其更适合在计算资源有限的平台上运行。
二、环境配置要求
1. 基础环境
- 操作系统:Ubuntu 20.04(强烈建议)
- 不推荐使用 Ubuntu 18.04,因为系统维护性和兼容性考虑(用起来特别麻烦)
- 20.04 对 ROS Noetic 有更好的支持
- ROS 版本:Noetic
- 编译工具:cmake, gcc, g++
2. 依赖库
- Ceres Solver: 2.2 版本
- 虽然原版要求 2.3,但实测 2.2 完全可用
- 需要注意编译选项和依赖项的完整安装
- PCL 库:点云处理的核心库
三、详细安装步骤
1. 工作空间准备
# 创建工作空间(如果没有)
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
# 克隆代码仓库
git clone https://github.com/BrenYi/Light-LOAM.git
# 返回工作空间根目录
cd ..
2. 编译安装
# 编译前准备
catkin_make clean # 清理之前的编译文件
# 编译项目
catkin_make -j4 # 使用4个线程编译
# 更新环境变量
source devel/setup.bash
3. 接受的话题:/rslidar_points
四、常见问题及解决方案
1. 包资源找不到问题
错误现象
问题分析
这个错误通常出现在启动 launch 文件时,原因是 package.xml 中定义的包名与 launch 文件中引用的包名不一致。
解决方案
修改 package.xml 中的包名配置:
<?xml version="1.0"?>
<package>
<name>aloam_velodyne</name>
<!-- 其他配置保持不变 -->
</package>
2. 节点启动失败问题
错误现象
ERROR: cannot launch node of type [aloam_velodyne/ascanRegistration]
ERROR: cannot launch node of type [aloam_velodyne/alaserOdometry]
ERROR: cannot launch node of type [aloam_velodyne/alaserMapping]
问题分析
这个错误是因为 ROS 无法在包中找到可执行文件。编译后的可执行文件位于:
~/catkin_ws/devel/lib/light_loam/
包含以下文件:
- alaserMapping
- alaserOdometry
- ascanRegistration
- kittiHelper
但是 launch 文件期望在源码目录下找到这些可执行文件:
~/catkin_ws/src/Light-LOAM/src/
解决方案
需要将编译生成的可执行文件从 devel/lib 复制到源码目录:
# 创建备份
cd ~/catkin_ws/src/Light-LOAM/src
mkdir backup
cp * backup/
# 复制可执行文件
cp ~/catkin_ws/devel/lib/light_loam/alaserMapping .
cp ~/catkin_ws/devel/lib/light_loam/alaserOdometry .
cp ~/catkin_ws/devel/lib/light_loam/ascanRegistration .
cp ~/catkin_ws/devel/lib/light_loam/kittiHelper .
复制前:
复制后:
五、系统运行
1. 启动系统
roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch
2. 数据记录
rostopic echo /aft_mapped_to_init > pose.txt
# 记录位姿数据
rostopic echo /aft_mapped_to_init > pose.txt
# 查看位姿数据格式
header:
seq: 843
stamp:
secs: 1483200609
nsecs: 399450064
frame_id: "rslidar"
pose:
position: [x, y, z]
orientation: [x, y, z, w]
唯一个一个功能包,不需要其他的依赖功能包: