롤롤하
[Isaac Sim + ROS2] LIO-SAM (LiDAR Inertial Odometry SLAM) 구현 본문
LIO-SAM
안녕하세요. 이번 글은 이전 게시글에 이어서 LiDAR + Inertail Odometry SLAM 중 하나인 LIO-SAM을 다루어 보았습니다.
[Isaac Sim + ROS2] Wheel Slip과 2D Odometry
2025.02.12 - [Isaac Sim] - [Isaac Sim + ROS2] 2D LiDAR Cartographer SLAM에서 이어집니다.안녕하세요! 이번에 Isaac Sim에서 SLAM을 진행하며 Odometry에 관한 스터디와 정리를 해봤습니다.Wheel Slip이 있어도 Odometry가
786studio.tistory.com
1. LIO-SAM
1.1. LIO-SAM 이란
LIO-SAM은 LiDAR와 IMU를 결합하여 실시간으로 SLAM을 수행하는 알고리즘입니다. 기존 LiDAR-SLAM (LOAM)에 비하여 빠르고 정밀한 위치추정이 가능하며, GPS 없이도 꽤나 높은 정확도를 유지할 수 있는 SLAM 기법입니다.
1.2. LIO-SAM의 특징
- IMU Pre-integration : IMU 데이터를 통하여 LiDAR 프레임 간의 움직임 보정
- LiDAR-IMU Fusion : LiDAR 데이터를 IMU와 결합하여 더 정확한 SLAM 수행
- Loop Closure : 루프 클로저 기능을 제공하며 그래프 최적화 기반으로 진행됩니다.
- iSAM2 알고리즘 사용
더욱 자세한 내용은 논문을 참고하시면 좋을 것 같습니다.
LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping
We propose a framework for tightly-coupled lidar inertial odometry via smoothing and mapping, LIO-SAM, that achieves highly accurate, real-time mobile robot trajectory estimation and map-building. LIO-SAM formulates lidar-inertial odometry atop a factor gr
arxiv.org
2. Isaac Sim
[Isaac Sim + ROS2] Wheel Slip과 2D Odometry
2025.02.12 - [Isaac Sim] - [Isaac Sim + ROS2] 2D LiDAR Cartographer SLAM에서 이어집니다.안녕하세요! 이번에 Isaac Sim에서 SLAM을 진행하며 Odometry에 관한 스터디와 정리를 해봤습니다.Wheel Slip이 있어도 Odometry가
786studio.tistory.com
(기존 글의 셋팅에서 이어집니다.)
2.1. 3D LiDAR 추가
2.1.1. 기존에 사용하던 2D LiDAR와 그래프를 삭제해줍니다.
2.1.2. odom 그래프 또한 수정해줍니다.
- odom 그래프에서 odom-base_link tf publisher를 삭제합니다. (base_link는 LIO-SAM의 odom과 연결되어야 합니다.)
- odom publisher와 tf_static은 그대로 유지해줍니다.
2.1.3. rtx-LiDAR 추가


- Create - Isaac- Sensors - RTX LiDAR -HESAI XT-32 10hz 를 추가해 주었습니다. (추가 후 payloads로 변경)
- 추가한 HESAI 라이다를 base_scan xForm에 추가해줍니다.
- base_scan의 위치를 재조정해줍니다.
2.1.4. ROS RTX LiDAR 그래프 추가


- Isaac - Utils -Common Omnigraph - ROS RTX LiDAR 클릭
- Parameter 설정 (Lidar Prim, Frame ID, Point Cloud Topic명)
- 모든 데이터 발행을 체크해줍니다.
이후 Rviz에서 데어터와 tf가 정상적으로 발행되는지 확인해줍니다.


3. LIO-SAM 설치 및 실행
3.1. Git Clone 및 build
https://github.com/TixiaoShan/LIO-SAM/tree/ros2 참조하여 설치하시면 됩니다.
sudo apt install ros-<ros2-version>-perception-pcl \
ros-<ros2-version>-pcl-msgs \
ros-<ros2-version>-vision-opencv \
ros-<ros2-version>-xacro
# Add GTSAM-PPA
sudo add-apt-repository ppa:borglab/gtsam-release-4.1
sudo apt install libgtsam-dev libgtsam-unstable-dev
cd ~/ros2_ws/src
git clone -b ros2 https://github.com/TixiaoShan/LIO-SAM.git
cd LIO-SAM
git checkout ros2
cd ..
colcon build
3.2. launch 파일 및 params 수정
- launch 파일
xacro 및 robot state publisher 삭제 (isaac sim tf_statci에서 이미 발행)
param file 부분의 params.yaml isaac_params.yaml 로 수정
- isaac_params.yaml 작성
기존 config폴더 안의 params.yaml을 복사하여 isaac_params.yaml을 추가해주고 사용하는 센서 스펙에 맞게 수정해줍니다.
프레임 이름 및 topic 이름 변경, GPS 주석처리
참고) 사용하는 HESAI 라이다의 센서 특성은 isaac sim의 json 파일에서 확인하실 수 있습니다.

변경 내용 (전 isaac sim에서 imu 데이터에 중력을 포함시키지 않아 imuGravity를 0.0으로 설정하였습니다.)
N_SCAN : 32 Horizon_SCAN : 2000 lidarMinRange : 0.05 lidarMaxRange : 120.0 imuGravity : 0.0
이후 다시 빌드를 진행해주시면 됩니다.


LIO-SAM이 확실히 좋은 성능을 보여주네요.

트래젝터리를 보더라도 yaw와 pitch가 크게 흔들리는 상황을 제외하고는 GT와 가장 비슷한걸 확일 할 수 있습니다.
'Isaac Sim' 카테고리의 다른 글
[Isaac Sim + ROS2] Depth Camera를 이용한 RGB-D SLAM RTAB-Map 구현 (0) | 2025.03.03 |
---|---|
[Isaac Sim + ROS2] Wheel Slip과 2D Odometry (0) | 2025.02.19 |
[Isaac Sim + ROS2] 2D LiDAR Cartographer SLAM (0) | 2025.02.12 |
[Isaac Sim + ROS2] ROS2 카메라 프레임 드랍 개선 (WSL2) (4) | 2025.02.12 |