direct_lidar_inertial_odometry

vectr-uclaMIT更新放缓

轻量级 LiDAR-惯性里程计算法,用由粗到细的连续时间轨迹构建做精确运动校正,为机器人和 SLAM 提供实时定位与建图。

[IEEE ICRA'23] A new lightweight LiDAR-inertial odometry algorithm with a novel coarse-to-fine approach in constructing continuous-time trajectories for precise motion correction.

v1.1.1发布于 2023-06-27 23:18 UTC1,067star264fork同步于 2026-11-07 07:32 UTC

怎么上手

由 README 提炼,执行前请确认
sudo apt install libomp-dev libpcl-dev libeigen3-dev
mkdir ws && cd ws && mkdir src && catkin init && cd src && git clone https://github.com/vectr-ucla/direct_lidar_inertial_odometry.git && catkin build
硬件要求按 README 说明

README 未说明显存或 CPU 要求;需激光雷达与 IMU 且两者必须严格时间同步,推荐用自带 IMU 的雷达如 Ouster。

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

项目说明

由 README 自动翻译提炼

轻量级 LiDAR-惯性里程计算法,用连续时间轨迹做运动校正,适合机器人实时定位

轻量级 LiDAR-惯性里程计算法,用由粗到细的连续时间轨迹构建做精确运动校正,为机器人和 SLAM 提供实时定位与建图。

核心能力

  • 用粗到细方式构建连续时间轨迹做运动校正
  • 支持 Ouster、Velodyne、Hesai、Livox 多种激光雷达
  • 输入为 PointCloud2 点云与 6 轴 IMU 消息
  • 提供服务把建图结果保存为 pcd 文件
  • 支持 ROS1,ROS2 在 feature/ros2 分支

容易踩的坑

依赖 Ubuntu 20.04 + ROS Noetic、PCL>=1.10、Eigen>=3.3.7、CMake>=3.12.4,版本不符可能编译失败;激光雷达与 IMU 未时间同步则算法无法工作;Livox 用 CustomMsg 时需切到 feature/livox-support 分支并装 livox_ros_driver2,且 launch 参数换成 livox_topic;外参和内参需写入 cfg/dlio.yaml,缺失会降低精度。

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

最近发版

3 个版本v1.1.1
  1. v1.1.1最新正式版2023-06-27 · 2023-06-27 23:18 UTC

    Major

    N/A

    Minor

    • Updated visualization defaults
    • Added an additional test set

    Bugfix

    • Fix for when dt == 0. Credit: @juliangaal (#6)
    • Fix for keyframing logic. Credit: @juliangaal (#8)
  2. v1.1.02023-06-14 · 2023-06-14 20:49 UTC
    查看更新说明

    Major

    • Added support for Hesai LiDAR sensors

    Minor

    N/A

    Bugfixes

    N/A

  3. v1.0.02023-06-09 · 2023-06-09 20:22 UTC
    查看更新说明

    Initial public release

用户点评

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

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

    README 原文

    未翻译

    Direct LiDAR-Inertial Odometry: Lightweight LIO with Continuous-Time Motion Correction

    [ IEEE ICRA ] [ arXiv ] [ Video ] [ Presentation ]

    DLIO is a new lightweight LiDAR-inertial odometry algorithm with a novel coarse-to-fine approach in constructing continuous-time trajectories for precise motion correction. It features several algorithmic improvements over its predecessor, DLO, and was presented at the IEEE International Conference on Robotics and Automation (ICRA) in London, UK in 2023.

    Instructions

    Sensor Setup & Compatibility

    DLIO has been extensively tested using a variety of sensor configurations and currently supports Ouster, Velodyne, Hesai, and Livox LiDARs. The point cloud should be of input type sensor_msgs::PointCloud2 and the 6-axis IMU input type of sensor_msgs::Imu.

    For Livox sensors specifically, you can use the master branch directly if it is of type sensor_msgs::PointCloud2 (xfer_format: 0), or the feature/livox-support branch and the latest livox_ros_driver2 package if it is of type livox_ros_driver2::CustomMsg (xfer_format: 1) (see here for more information).

    For best performance, extrinsic calibration between the LiDAR/IMU sensors and the robot's center-of-gravity should be inputted into cfg/dlio.yaml. If the exact values of these are unavailable, a rough LiDAR-to-IMU extrinsics can also be used (note however that performance will be degraded).

    IMU intrinsics are also necessary for best performance, and there are several open-source calibration tools to get these values. These values should also go into cfg/dlio.yaml. In practice however, if you are just testing this work, using the default ideal values and performing the initial calibration procedure should be fine.

    Also note that the LiDAR and IMU sensors need to be properly time-synchronized, otherwise DLIO will not work. We recommend using a LiDAR with an integrated IMU (such as an Ouster) for simplicity of extrinsics and synchronization.

    Dependencies

    The following has been verified to be compatible, although other configurations may work too:

    • Ubuntu 20.04
    • ROS Noetic (roscpp, std_msgs, sensor_msgs, geometry_msgs, nav_msgs, pcl_ros)
    • C++ 14
    • CMake >= 3.12.4
    • OpenMP >= 4.5
    • Point Cloud Library >= 1.10.0
    • Eigen >= 3.3.7
    sudo apt install libomp-dev libpcl-dev libeigen3-dev
    

    DLIO supports ROS1 by default, and ROS2 using the feature/ros2 branch.

    Compiling

    Compile using the catkin_tools package via:

    mkdir ws && cd ws && mkdir src && catkin init && cd src
    git clone https://github.com/vectr-ucla/direct_lidar_inertial_odometry.git
    catkin build
    

    Execution

    After compiling, source the workspace and execute via:

    roslaunch direct_lidar_inertial_odometry dlio.launch \
      rviz:={true, false} \
      pointcloud_topic:=/robot/lidar \
      imu_topic:=/robot/imu
    

    for Ouster, Velodyne, Hesai, or Livox (xfer_format: 0) sensors, or

    roslaunch direct_lidar_inertial_odometry dlio.launch \
      rviz:={true, false} \
      livox_topic:=/livox/lidar \
      imu_topic:=/robot/imu
    

    for Livox sensors (xfer_format: 1).

    Be sure to change the topic names to your corresponding topics. Alternatively, edit the launch file directly if desired. If successful, you should see the following output in your terminal:

    Services

    To save DLIO's generated map into .pcd format, call the following service:

    rosservice call /robot/dlio_map/save_pcd LEAF_SIZE SAVE_PATH
    

    Test Data

    For your convenience, we provide test data here (1.2GB, 1m 13s, Ouster OS1-32) of an aggressive motion to test our motion correction scheme, and here (16.5GB, 4m 21s, Ouster OSDome) of a longer trajectory outside with lots of trees. Try these two datasets with both deskewing on and off!

    Citation

    If you found this work useful, please cite our manuscript:

    @article{chen2022dlio,
      title={Direct LiDAR-Inertial Odometry: Lightweight LIO with Continuous-Time Motion Correction},
      author={Chen, Kenny and Nemiroff, Ryan and Lopez, Brett T},
      journal={2023 IEEE International Conference on Robotics and Automation (ICRA)},
      year={2023},
      pages={3983-3989},
      doi={10.1109/ICRA48891.2023.10160508}
    }
    

    Acknowledgements

    We thank the authors of the FastGICP and NanoFLANN open-source packages:

    • Kenji Koide, Masashi Yokozuka, Shuji Oishi, and Atsuhiko Banno, “Voxelized GICP for Fast and Accurate 3D Point Cloud Registration,” in IEEE International Conference on Robotics and Automation (ICRA), IEEE, 2021, pp. 11 054–11 059.
    • Jose Luis Blanco and Pranjal Kumar Rai, “NanoFLANN: a C++ Header-Only Fork of FLANN, A Library for Nearest Neighbor (NN) with KD-Trees,” https://github.com/jlblancoc/nanoflann, 2014.

    We would also like to thank Helene Levy and David Thorne for their help with data collection.

    Many thanks to @shrijitsingh99 for porting DLIO to ROS2!

    License

    This work is licensed under the terms of the MIT license.