li_slam_ros2

rsasaki0109BSD-2-Clause更新放缓

基于 ROS 2 的紧耦合激光雷达惯性 SLAM 包,融合 NDT/GICP 点云配准与 IMU 数据,用于机器人在复杂环境中的实时定位与建图。

ROS 2 package of tightly-coupled lidar inertial ndt/gicp slam

0.1.0-humble发布于 2023-11-26 08:26 UTC436star51fork同步于 2026-11-07 07:32 UTC

怎么上手

由 README 提炼,执行前请确认
cd ~/ros2_ws/src && git clone --recursive https://github.com/rsasaki0109/li_slam_ros2
sudo add-apt-repository ppa:borglab/gtsam-release-4.1 && sudo apt update && sudo apt install libgtsam-dev libgtsam-unstable-dev
cd ~/ros2_ws && rosdep install --from-paths src --ignore-src -yr && colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
硬件要求按 README 说明

README 未说明显存或 CPU 要求;demo 数据使用 Velodyne VLP-16 激光雷达,需配合 IMU 使用

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

ROS 2 紧耦合激光惯性 SLAM 包,融合 NDT/GICP 与 LIO-SAM 的 IMU 方法,输出位姿与点云地图

基于 ROS 2 的紧耦合激光雷达惯性 SLAM 包,融合 NDT/GICP 点云配准与 IMU 数据,用于机器人在复杂环境中的实时定位与建图。

核心能力

  • 融合 lidarslam_ros2 与 LIO-SAM 的 IMU 复合方法
  • 用 NDT/GICP 做扫描匹配并支持回环修正轨迹
  • 回环或调用服务时保存 pose_graph.g2o 与 map.pcd
  • 提供步行与校园大场景两个数据集 demo 及 rviz 配置

容易踩的坑

必须加 --recursive 克隆,否则缺少 ndt_omp_ros2 等子模块;需先单独安装 gtsam(通过 PPA);voxel_grid_size 设得过大时速度会发散;demo 数据为 ROS1 bag,需用 rosbags 转换后才能 ros2 bag play

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

2 个版本0.1.0-humble
  1. 0.1.0-humble最新正式版2023-11-26 · 2023-11-26 08:26 UTC

    这个版本没有写更新说明。

  2. 0.1.0-foxy2023-11-26 · 2023-11-26 08:25 UTC

    这个版本没有写更新说明。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    li_slam_ros2

    This package is a combination of lidarslam_ros2 and the LIO-SAM IMU composite method.

    See LIO-SAM for IMU composites, otherwise see lidarslam_ros2.

    • Walking dataset(casual_walk.bag)

    Yellow path: path without loop closure, Green path: modified path, Red: map

    Reference(From the LIO-SAM paper)
    https://github.com/TixiaoShan/LIO-SAM/blob/master/config/doc/paper.pdf

    • Campus dataset (large) demo(big_loop.bag)

    Yellow path: path without loop closure, Red: map (the 10x10 grids in size of 10m × 10m)

    Green path: modified path with loop closure, Red: map

    requirement to build

    You need ndt_omp_ros2 and gtsam for scan-matcher

    clone

    cd ~/ros2_ws/src
    git clone --recursive https://github.com/rsasaki0109/li_slam_ros2
    

    gtsam install

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

    build

    cd ~/ros2_ws
    rosdep update
    rosdep install --from-paths src --ignore-src -yr
    colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
    

    Walking dataset demo(casual_walk.bag)

    The optimization pipeline in Lidar Inertial SLAM were taken from LIO-SAM.

    (Note: See the LIO-SAM repository for detailed settings regarding IMU.
    The other thing to note is that the speed will diverge if the voxel_grid_size is large.

    demo data(ROS1) in LIO-SAM
    https://github.com/TixiaoShan/LIO-SAM
    To use ros1 rosbag , use rosbags.
    The Velodyne VLP-16 was used in this data.

    rviz2 -d src/li_slam_ros2/scanmatcher/rviz/lio.rviz 
    
    ros2 launch scanmatcher lio.launch.py
    
    ros2 bag play walking_dataset/
    

    Green arrow: pose, Yellow path: path, Green path: path by imu

    Yellow path: path without loop closure, Green path: modified path, Red: map

    rosgraph

    pose_graph.g2o and map.pcd are saved in loop closing or using the following service call.

    ros2 service call /map_save std_srvs/Empty
    

    Campus dataset (large) demo(big_loop.bag)

    rviz2 -d src/li_slam_ros2/scanmatcher/rviz/lio_bigloop.rviz 
    
    ros2 launch scanmatcher lio_bigloop.launch.py
    
    ros2 bag play rosbag_v2 big_loop/
    

    Yellow path: path without loop closure, Red: map (the 10x10 grids in size of 10m × 10m)

    Green path: modified path with loop closure, Red: map

    Used Libraries

    • Eigen
    • PCL(BSD3)
    • g2o(BSD2 except a part)
    • ndt_omp (BSD2)
    • gtsam(BSD2)