• Stars
    star
    292
  • Rank 142,152 (Top 3 %)
  • Language
    C++
  • License
    BSD 2-Clause "Sim...
  • Created over 4 years ago
  • Updated 12 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

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
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 -s rosbag_v2 walking_dataset.bag 

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 -s rosbag_v2 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

Used Libraries

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

More Repositories

1

lidarslam_ros2

ROS 2 package of 3D lidar slam using ndt/gicp registration and pose-optimization
C++
506
star
2

lidar_localization_ros2

3D LIDAR Localization using NDT/GICP and pointcloud map in ROS 2 (Not SLAM)
C++
244
star
3

kalman_filter_localization

kalmal filter localization
C++
219
star
4

lidar_localizer

lidar localizer in Autoware AI
C++
172
star
5

rust_robotics

Rust implementation of PythonRobotics such as EKF, DWA, Pure Pursuit, LQR.
Rust
133
star
6

PoseOptimizationSLAM3D

Python sample code of 3D pose optimization SLAM
Python
72
star
7

NormalDistributionTransform2D

Python sample code of 2D NDT Scan Matching
Python
28
star
8

littleslam_ros2

A ROS2 Wrapper for LittleSLAM, which is a 2D-LiDAR SLAM for educational use
C++
27
star
9

ensemble_kalman_filter

Python sample code of robot localization with ensemble kalman filter and landmarks
Python
25
star
10

laser_deskew

ros1 package for 2d laser deskew using tf.
C++
20
star
11

imu_estimator

attitude estimator with gyro bias correction
C++
16
star
12

lidar_undistortion

A header-only program of 3d rotary lidar undistortion using 9-axis imu
C++
16
star
13

gaussian_particle_filter

Python sample of Gaussian Particle Filter localization
Python
13
star
14

transfrom_velocity

C++ program for performing 3D and 2D velocity transformations using Lie algebra.
C++
9
star
15

particle_filtering_model_predictive_control

Particle filtering model predictive control simulation.
Python
6
star
16

pygnss

pygnss is a gnss analysis library
Python
5
star
17

quaternion-based_kalman_filter

Python
4
star
18

q-method

estimator to minimize Wahba's loss function for satellite attitude
Python
3
star