2024-10-24 Autoware.universe中基于SLAM算法(LIO-SAM算法)生成点云地图

机器环境:Ubuntu22.04 + ROS2 + Autoware.universe + LIO-SAM

一、背景

Autoware 的正常运行,如定位、规孔等都离不开车辆操作环境的点云地图和矢量地图。传统上,可以使用移动测绘系统(MMS)来创建高度精确的大规模点云地图。但是由于MMS需要高端传感器进行精确定位,其运营成本可能非常昂贵,可能不适合相对较小的驾驶环境。因此,可以选择使用同步定位与地图构建(SLAM)算法从记录的激光雷达扫描中创建点云图。

随着时间的推移,激光雷达里程计会累积漂移,有一些解决方案可以解决这个问题,如图优化、环路闭合和使用GPS传感器来减少累积漂移误差。因此,SLAM算法应具有环路闭合、图优化等特征,并应使用GPS传感器。此外,一些算法正在使用IMU传感器在图形中添加另一个参考因素,以减少漂移误差。其中,有些算法严格要求9轴IMU传感器,有些算法只要求6轴IMU,甚至不使用IMU传感器。具体是否使用IMU得看具体的应用场景。

二、确定SLAM算法

参考文档

Autoware.universe 官网

SLAM算法选择

常用的开源SLAM实现是lidarslam-ros2(激光雷达、IMU)和LIO-SAM(激光雷达,IMU,GNSS)。括号中指定了每种算法所需的传感器数据,其中星号()表示此类传感器数据是可选的。并且针对于ROS1和ROS2系统,不同的算法支持程度不一样,有些只支持ROS1,有些只支持ROS2,有些可同时支持ROS1和ROS2。下面是常见的一些SLAM算法,以及它们使用的一些条件与依赖项:

上表中,只有LIO-SAM基于ROS2的,所以选择此算法。需要如下传感器:

LIDAR [Livox, Velodyne, Ouster, Robosense*] (*Robosense激光雷达没有得到官方支持,但他们的Helios系列可以用作Velodyne激光雷达的替代)

IMU [9-AXIS]

GPS [OPTIONAL]

下面是LIO-SAM算法的架构图,输入为点云数据(Point Cloud)、IMU数据和GPS数据。

三、相关配置与数据获取

参考文档

LIO-SAM Github链接

相关配置

安装依赖项:

sudo apt install ros-<ros2-version>-perception-pcl \
  	   ros-<ros2-version>-pcl-msgs \
  	   ros-<ros2-version>-vision-opencv \
  	   ros-<ros2-version>-xacro

Add GTSAM-PPA

sudo add-apt-repository ppa:borglab/gtsam-release-4.1
sudo apt install libgtsam-dev libgtsam-unstable-dev

拉取LIO-SAM算法仓库:

cd ~/ros2_ws/src
git clone https://github.com/TixiaoShan/LIO-SAM.git

编译:

cd lio-sam
git checkout ros2
cd ..
colcon build

数据获取

目前,网上基于ROS2的开源数据库很少,并且LIO-SAM算法的作者也并没有提供ROS2的数据库。然后,作者提供了好几个ROS1的数据库。其中ROS1的数据是以.bag为后缀的文件,ROS2的数据是包括.yaml和.db3的rosbag数据包。我们可以使用转化工具将ROS1的数据包转换为ROS2的数据包:

1、获取数据

基于ROS1的数据集下载地址

其中,可以选择park_dataset.bag这一笔数据作为跑通算法的数据集。

2、数据转换

可以使用ROS1系统下的rosbags-convert 指令将ROS1的.bag包转化为ROS2的.db3数据包。这里需要注意的一点是,必须在ROS1的系统下进行转换。

sudo apt install rosbags
rosbags-convert park_dataset.bag

转换结束后,会在.bag的同级目录下生成一个同名文件夹,里面包括.yaml和.dbs文件。

四、SLAM算法参数配置
修改LIO-SAM仓库install下的 src/config/params.yaml,以保证算法在解析时与rosbag数据包中的相关传感器的参数保持一致。

五、点云地图生成与保存

打开一个终端,运行lio-sam算法:

ros2 launch lio_sam run.launch.py

转换结束后,会在.bag的同级目录下生成一个同名文件夹,里面包括.yaml和.dbs文件。

四、SLAM算法参数配置

修改LIO-SAM仓库install下的 src/config/params.yaml,以保证算法在解析时与rosbag数据包中的相关传感器的参数保持一致。

五、点云地图生成与保存

打开一个终端,运行lio-sam算法:

ros2 launch lio_sam run.launch.py

打开另一个终端,回放rosbag数据包:

ros2 bag play park_dataset

会在Rviz中看到生成过程:

等到rosbag内的数据播放结束,地图也生成好了,运行下面命令保存点云地图:

ros2 service call /lio_sam/save_map lio_sam/srv/SaveMap "{resolution: 0.2, destination: /Downloads/service_LOAM}"

最后可以生成对应的pcd文件:

用.pcd文件打开器打开所生成的点云地图如下:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注


往期评论