Priceless
[SLAM] Livox Mid-360을 활용한 FAST-LIO 수행 본문
환경
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 파일로 저장된다.