Livox SLAM(带LIO+闭环检测优化)

主题:Livox雷达LIO+闭环检测优化

开源地址:LiDAR SLAM

该开源为 Livox雷达实现了一个一体化且即用型的 LiDAR 惯性里程计系统。
前端基于基于开源里程计框架LIO-Livox获取里程计信息,另外添加了更多的约束和功能来增强建图的性能。
在另一个ros功能包Livox-Localization中提供了一个简单的基于激光雷达地图的定位模块。
总结:
LIO-Livox用于里程计部分, ScanContext 用于闭环部分和interactive_slam用于地图编辑部分

1 特点

1.1 闭环检测

在 LCD 部分,使用ScanContext 执行闭环检测,然后将闭环约束添加到优化求解器中。借助 LCD 模块,能够缩小差距并补偿大型环境中扫描匹配的累积平移误差。

1.2 地面约束

为了避免沿 Z 轴漂移,LOAM(激光雷达里程计和映射)算法中出现的一般问题,我们将地面约束(平面检测由 LIO-Livox 完成)作为 hdl_graph_slam 添加到优化求解器中。

1.3 来自多个 Rosbag 的地图合并

在实践中,我们通常会多次收集环境数据,因此我们需要一个功能来融合来自多个 rosbag 的地图信息。在这个实现中,我们使用 GPS 信息(可选)将不同时间采集的 LiDAR 扫描转换为一个坐标系,然后使用 ScanContext 和 ICP 找到精细匹配结果。同时,我们在后端维护一个终身优化向量来存储之前的关键帧。通过这种方法,我们能够连接不同集合中的扫描。

1.4 GPS 因素

我们还提供 GPS 因素来帮助进行地图绘制。这只是一种可选的选择。如果没有 GPS 信息,整个系统也可以工作。

1.5 兼容映射编辑器interactive_slam

interactive_slam是一个开源的基于 3D LiDAR 的映射框架。我们添加了一项功能,以与interactive_slam兼容的格式输出映射结果,通过此功能,您可以轻松编辑映射结果并获得更准确的 LiDAR 地图。同时,如果您在 Livox 旁边有一台摄像头,我们还提供了一项借助mmdection和简单的 LiDAR 点投影去除虚拟移动物体的功能。

2 编译运行

2.1 所需环境

Ubuntu (tested on 16.04 and 18.04)

ROS (tested with Kinetic and Melodic)

Eigen

Ceres Solver

PCL

livox_ros_driver

libsuitesparse

2.2 编译

cd ~/catkin_ws/src
git clone https://github.com/PJLab-ADG/LIO_Livox_SLAM.git
cd ..
catkin_make

2.3 运行

无 GPS data

cd ~/catkin_ws
source devel/setup.bash
roslaunch livox_mapping livox_mapping.launch save_path:="PATH_TO_SAVE_SLAM_POSE_RESULT"

cd ~/catkin_ws
source devel/setup.bash
roslaunch livox_mapping livox_mapping.launch useRTK:="true" save_path:="PATH_TO_SAVE_SLAM_POSE_RESULT"

另起终端:

cd ~/catkin_ws
source devel/setup.bash
roslaunch livox_odometry livox_odometry.launch save_path:="PATH_TO_SAVE_ODOM_RESULT_in_txt"

另起终端,播放bag:

rosbag play YOUR_ROSBAG.bag

2.4 多包合并

有多个bag包(同一个场景),可以在第一个 odometry 线程运行结束时重新启动 odometry 线程并播放下一个包。
在里程计线程的终端中,使用Ctrl+C关闭旧的里程计线程。
在里程计线程的终端中,使用以下命令启动一个新的里程计线程

roslaunch livox_odometry livox_odometry.launch save_path:="PATH_TO_SAVE_ODOM_RESULT_in_txt"

2.5作者的数据集

作者提供上海一个工业园区收集的几个测试 数据集,
百度网盘下载:
Link:https://pan.baidu.com/s/17ElBOWiFVr68975FtXY8ZA
Password:pjop

2.6 Docker 镜像

为了进行快速方便的测试,更推荐使用docker
拉取:

docker pull siyuanhuang95/livox_slam:release

执行 docker 运行命令。根据需要使用 -v 将 docker 绑定到本地计算机。

docker run --gpus all -it -p 3316:22 --device=/dev/dri --group-add video --volume=/tmp/.X11-unix:/tmp/.X11-unix  --env="DISPLAY=$DISPLAY" siyuanhuang95/livox_slam:release /bin/bash

允许 Docker 中的 RVIZ 在主机 PC 中运行。在本地机器中:

xhost +

参考:https://github.com/PJLab-ADG/Livox-Mapping/blob/main/README.md

你可能感兴趣的:(slam,c++,ubuntu,自动驾驶,算法)