• 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.2 编译

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

    2.3 运行

    无 GPS data

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

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

    另起终端:

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

    另起终端,播放bag:

    rosbag play YOUR_ROSBAG.bag
    
    • 1

    2.4 多包合并

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

    roslaunch livox_odometry livox_odometry.launch save_path:="PATH_TO_SAVE_ODOM_RESULT_in_txt"
    
    • 1

    2.5作者的数据集

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

    2.6 Docker 镜像

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

    docker pull siyuanhuang95/livox_slam:release
    
    • 1

    执行 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
    
    • 1

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

    xhost +
    
    • 1

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

  • 相关阅读:
    vue-router源码分析(上)
    终极大招~pycharm自动补全opencv代码提示功能
    RAID技术复习笔记
    定时器的编码器接口
    ACPI规范概览-1
    上海电信万兆宽带2026年将实现全城覆盖
    关于《无货源开店已确认违法》新闻稿说明
    WPF中以MVVM方式,实现RTSP视频播放
    《优化接口设计的思路》系列:第三篇—留下用户调用接口的痕迹
    【结构型】享元模式(Flyweight)
  • 原文地址:https://blog.csdn.net/handily_1/article/details/125767372