Lidar SLAM 맵 생성 및 병합(merge)하기 with SC-LIO-SAM, map merge tool

이용욱·2022년 12월 27일
0

SLAM

목록 보기
6/7
post-thumbnail

Map merge tool을 이용한다.

PC 환경
OS : Ubuntu 18.04
ROS version : ROS1
pytohn version : 3.7.0
sensor : ouster1 64ch
imu : ouster imu

1. SC-LIO-SAM란?

LIO-SAM을 Scan context형식과 합하여 LIO-SAM을 업그레이드 시킨 SLAM 알고리즘이다.

2. 다운로드

https://github.com/gisbi-kim/SC-LIO-SAM

3. 🛠Build 및 실행

빌드 순서:

$ catkin_make
$ source devel/setup.bash

실행 순서:

$ roslaunch aloam_velodyne aloam_fast_lio.launch
$ roslaunch fast_lio mapping_avia.launch
$ rosbag play KA_Urban_Campus_1.bag

rqt_graph 결과

4. Map Merging

SC-LIO-SAM 안에 있는 makeMergedMap이라는 tool을 이용한다. 경로는 다음과 같으며, python 3.x version으로 구성되어 있다.
/(본인 워크스페이스)/src/SC-LIO-SAM-master/SC-LIO-SAM/tools/python/makeMergedMap.py

data_dir에본인이 가지고 있는 sc-pgo-tutorial에 있는 데이터 폴더를 넣어준다. 그리고 scan_idx_range_to_stack에 본인의 데이터 폴더에 Scans 파일 범위를 적어주면 된다. 만약 아래 그림과 같이 00000.pcd부터 001774.pcd 까지 있다면, 범위를 [0, 1774]를 적어준다.

#실행
$ python3 makeMergedMap.py

cf) pcd 파일을 하나의 las 파일로 merge

# pcd 데이터 폴더 안에서
pdal merge *.pcd out.las

5. 오류


❌ startswith 오류 :

'TypeError: startswith first arg must be bytes or a tuple of bytes, not str'

⭕ startswith 해결 :
에러가 나면, 기존의 pypcd를 지우고 아래 명령어로 pypcd를 설치한다.

pip3 uninstall pypcd
pip3 install --upgrade git+https://github.com/klintan/pypcd.git

❌ String module 오류 :

ModuleNotFoundError: No module named 'cStringIO'

⭕ String module 해결 : 오류가 난 pypcd.py 파일을 열어서

import cStringIO as sio

를 찾아

from io import StringIO

로 바꿔준다.


❌ Module 오류 :

ModuleNotFoundError: No module named 'open3d'

⭕ Module 해결 :

$ pip3 install open3d 

❌ SSL 오류 :

WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

⭕ SSL 해결 : ssl 인증서가 환경 변수 경로에 없어서 생기는 오류로,

$ gedit ./bashrc

으로 bashrc를 열어서

export LD_LIBRARY_PATH=/usr/local/ssl/lib/

를 추가해준다.


❌ TypeError 오류 :

TypeError: startswith first arg must be bytes or a tuple of bytes, not str

⭕ TypeError 해결 : ' ' 앞에 b를 추가
전 :
후 :


❌ Library 오류 :

error while loading shared libraries : ~ : cannot open shared object file: No such file or directory

⭕ Library 해결 : 라이브러리 Path가 제대로 설정되어 있지 않기 때문에 발생한 오류로써, bashrc를 열어 path를 추가해주면 된다.
필자의 경우, libmetis-gtsam.so가 없어서, 먼저 이 파일을 찾은 다음,

/Downloads/gtsam-develop/build/gtsam/3rdparty/metis/libmetis 이 위치를 기억하자.

$ gedit ~/.bashrc

그리고 bashrc를 열어서 맨 밑줄에 본인이 찾은 경로를 다음과 같은 형식으로 넣어주면 된다.

export LD_LIBRARY_PATH=/home/lyu/Downloads/gtsam-develop/build/gtsam/3rdparty/metis/libmetis

참고 :

profile
자율주행에 관심이 있으며, Lidar SLAM을 공부하고 있습니다. [개인 홈페이지 : https://woogiee.wixsite.com/youngwooklee]

0개의 댓글