文章目录
1.简单运行LeGO-LOAM
(1)LeGO-LOAM源码下载
LeGO-LOAM
国内GitHub网站不是很稳定,多刷新几次就好了。
(2)LeGO-LOAM示例运行
①下载LeGO-LOAM源码提供的rosbag文件
首先需要从GitHub中下载一些简单的rosbag文件
P.S.LeGO-LOAM的作者将这些rosbag文件存放到谷歌云盘中,因此访问需要翻墙。云盘中只有文件夹same_start_end_position中的same_position.bag可以下载,笔者电脑下载云盘中其他的bag文件会出现错误。
②运行LeGO-LOAM示例
环境配置
我的运行环境是:
- Ubuntu 18.04
- ROS Melodic
Ubuntu下载可以从国内镜像源下载,ROS的下载链接已经附上,ROS官网中下载说明十分详细,在此不做赘述。
P.S.如果使用虚拟机运行Ubuntu系统,由于KITTI数据集比较大,需要为虚拟机分配足够的硬盘大小,建议将虚拟机单独放到一个硬盘中。如果虚拟机硬盘容量不足,需要扩充,可以参考这篇文章:
虚拟机Ubuntu中磁盘容量不足对磁盘大小进行扩展
运行步骤
下载gtsam 4.0.0-alpha2
wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.0-alpha2.zip
cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/
cd ~/Downloads/gtsam-4.0.0-alpha2/
mkdir build && cd build
cmake …
sudo make install
编译代码
cd ~/catkin_ws/src
git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git
cd …
catkin_make -j1
运行功能包
source ./devel/setup.bash
roslaunch lego_loam run.launch
P.S.不进行环境配置roslaunch会报错,环境配置可以选择每次运行时输入上述source命令行,也可以修改相关文件,具体步骤可以参考其他博主文章。
运行rosbag
rosbag play *.bag --clock --topic /velodyne_points /imu/data
P.S.运行上述指令时注意cd到存放rosbag文件的路径下
其他说明
进行完上述步骤后,可能会出现运行rviz时报错或者rviz选中Map Cloud选项却只有一条路径的现象
解决方法是关闭加速,具体步骤可以参考这篇文章:
问题解决——Gazebo闪退及无法运行
运行结果
2.使用LeGO-LOAM运行KITTI数据集
(1)下载KITTI数据集
这里给出KITTI数据集官方下载地址。国内无法在官网下载完整的KITTI数据集,这里给出泡泡机器人提供的百度网盘地址,里面KITTI数据集比较全。
链接:https://pan.baidu.com/s/1htFmXDE 密码:uu20
(2)运行KITTI数据集
运行KITTI数据集大致分为3个步骤:将KITTI数据集转化为rosbag文件、修改LeGO-LOAM代码、使用evo评估。笔者初入激光SLAM领域,因此给出一种比较简单的运行方法。
①下载kitti-lego-loam
Mitchell Lee将上述3个步骤集成到一个工具包kitti-lego-loam,具体步骤可以参考这篇文章:
LeGO-LOAM运行kitti数据集
笔者在运行kitti-lego-loam的过程中,遇到了一些问题:
问题一
运行:
rosdep install --from-paths src --ignore-src -r -y
运行结果:
笔者未理会这个错误。
问题二
运行:
catkin_make
运行结果:
笔者解决方法是:
运行:
catkin_make -j1
运行结果:
编译成功。
问题三
修改kittibag.launch文件后,运行:
source ./devel/setup.bash
roslaunch kittibag kittibag.launch
运行结果:
虽然launch文件成功运行,但是生成的rosbag文件只有4.1KB大小,而KITTI数据集00序列对应的rosbag文件至少10GB大小,显然生成的rosbag文件是错误的。笔者代码编写能力有限,这一问题始终没有解决,因此笔者通过另一种方法将KITTI数据集转化为bag文件。
②KITTI数据集转化为rosbag文件
将KITTI数据集转化为rosbag文件,可以参考这篇文章:
KITTI数据集转化为ROS bag包(解决各种类型数据集,实测有效)
笔者采用这篇文章介绍的lidar2rosbag_KITTI,工具包的安装使用说明以及可能出现错误的解决方法在GitHub上写的很详细,在此不做赘述。
③使用LeGO-LOAM运行KITTI数据集
运行kitti-lego-loam中经过修改的LeGO-LOAM程序的同时,运行经过上述步骤得到rosbag文件,发现rviz界面没有反应。笔者运行:
rosrun rqt_graph rqt_graph
运行结果:
发现是LeGO-LOAM程序和rosbag文件的节点话题不匹配。笔者分别查询了两者的话题:
LeGO-LOAM的节点话题是/kitti/velo/pointcloud,而rosbag的节点话题是velodyne_points。笔者选择更改rosbag的节点话题,运行remap命令:
rosbag play *.bag velodyne_points:=/kitti/velo/pointcloud --clock
运行结果(00序列):
没有加入回环检测,所以轨迹漂移有点大。
P.S.kitti-lego-loam中rviz没有选中Map Cloud选项,选中该选项即可出现上述运行结果。
④使用evo对轨迹进行评估
下载evo工具包,将kitti-lego-loam运行生成的re_00.txt文件和KITTI数据集中00.txt文件放入同一路径中,运行:
evo_traj kitti re_00.txt --ref=00.txt -p --plot_mode=xz
运行结果:
由于KITTI数据集缺少IMU信息,因此误差有点大。