Priceless

[SLAM] Livox Mid-360을 활용한 FAST-LIO 수행 본문

SLAM/LiDAR SLAM

[SLAM] Livox Mid-360을 활용한 FAST-LIO 수행

Hyun__ 2024. 4. 17. 11:57

환경

HW

PC: Lattepanda Sigma

Lidar: Livox Mid-360

 

SW

OS: Ubuntu 20.04

ROS Noetic

 

~/catkin_ws/src 디렉토리에서 진행한다

 

FAST-LIO를 실행하기 위한 라이브러리 요구사항은 아래와 같다.

 

 

Livox ROS Driver 설치

참고

https://github.com/Livox-SDK/livox_ros_driver2

 

livox lidar를 ROS에서 사용하기 위해 

SDK를 설치한다

cd ~/catkin_ws/src
git clone https://github.com/Livox-SDK/livox_ros_driver2.git ws_livox/src/livox_ros_driver2

 

ROS Noetic을 사용하므로

ROS1에 맞게 빌드한다.

cd ~/catkin_ws/src/ws_livox/src/livox_ros_driver2
./build.sh ROS1

 

Livox Mid-360에 동봉된 가이드를 참고해 IP 주소를 세팅한 후

json 파일의 IP를 Lidar와 Host PC에 맞게 수정한다.

gedit ~/catkin_ws/src/ws_livox/src/livox_ros_driver2/config/MID360_config.json

 

소스파일을 불러온 후

제공되는 launch 파일을 통해 rviz에서 Lidar가 정상적으로 작동하는지 확인한다.

소스파일을 불러오는 명령어를 ~/.bashrc에 추가하면

이후에 Lidar를 사용할 때 매번 명령어를 입력할 필요 없을 것이다.

source ~/catkin_ws/src/ws_livox/devel/setup.sh
roslaunch livox_ros_driver2 rviz_MID360.launch

 

아래와 같이 정상적으로 나타났다면 

ROS에서 Lidar를 사용할 수 있다.

 

FAST-LIO 수행

참고

https://github.com/hku-mars/FAST_LIO

 

FAST-LIO 코드를 받아온다.

cd ~/catkin_ws/src
git clone https://github.com/hku-mars/FAST_LIO.git
cd FAST_LIO
git submodule update --init

 

 

해당 환경은 ROS1을 사용하므로

CMakelists.txt에서 ROS2 부분을 제거한다.

ament cmake auto 어쩌고 에러가 발생한다.

코드 내에서 if(ROS2) 이후 부분을 지우고

마지막 한 줄에 endif()를 추가한다.

# if ROS2 부분부터 다 지우기, 마지막에 endif() 추가
gedit ~/catkin_ws/src/ws_livox/src/livox_ros_driver2/CMakeLists.txt

 

 

Livox ROS driver는 두 가지 버전이 있고, 호환되는 Lidar 종류가 다르다.

Livox Mid-360은 Livox ROS driver2를 사용한다.

그래서 기존의 FAST-LIO 코드는 Livox ROS driver2를 지원하지 않았던 듯 하다.

실제로 github history에도 Mid-360에 대한 커밋이 비교적 최신에 추가된 것 같다.

 

빌드하기 전에 livox_ros_driver로 발행된 토픽을 수정해야 한다.

토픽 이름만 수정하면 해결되는 문제인지는 모르겠으나,

우선은 코드에서 livox_ros_driver2로 수정해서 사용해도 무관한 것 같다.

아래의 코드에서 livox_ros_driver 변수를 모두 livox_ros_driver2로 변경한다.

# 수정 livox_ros_driver -> livox_ros_driver2
gedit ~/catkin_ws/src/FAST_LIO/CMakeLists.txt
gedit ~/catkin_ws/src/FAST_LIO/src/preprocess.h
gedit ~/catkin_ws/src/FAST_LIO/src/laseerMapping.cpp

cd ~/catkin_ws && catkin_make # or cm

 

문제 없이 빌드에 성공했다면 

터미널을 두 개 열어

하나는 메시지를 보내는 launch 파일

하나는 mapping을 수행하는 launch 파일을 실행한다.

# 필요 시
#source ~/catkin_ws/devel/setup.bash

# 첫 번째 터미널
roslaunch livox_ros_driver2 msg_MID360.launch 
# 두 번째 터미널
roslaunch fast_lio mapping_mid360.launch

 

rviz를 보면 굵은 점은 현재 감지하는 Lidar point cloud이고

작은 점에 현재 공간이 mapping 된 것을 확인할 수 있다.

 

pointcloud는 FAST_LIO/PCD 디렉토리에 pcd 파일로 저장된다.