[ WSL ] Ubuntu 24.04 Jazzy ROS2
[ jetson ] Jetson nano Foxy ROS2
(1) [SUBSCRIBER Error] Deserialization of data failed -> Function deserialize_change
foxy, jazzy 버전 간 차이로 인해서 데이터를 받을 때 아래와 같은 문구가 가끔씩 뜸
위를 해결하는 방법
jetson과 wsl 둘 다 아래 명령어를 작성
$ export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
wsl에서 CycloneDDS를 설치해야 문제가 안 생김 (jazzy version)
$ sudo apt install ros-jazzy-rmw-cyclonedds-cpp
jetson에서도 똑같이 설치 (foxy version)
$ sudo apt install ros-foxy-rmw-cyclonedds-cpp
(2) cartofgrapher, navigation2 packge 설치 - wsl (jazzy version install)
$ sudo apt install ros-jazzy-cartographer
$ sudo apt install ros-jazzy-cartographer-ros
$ sudo apt install ros-jazzy-navigation2
$ sudo apt install ros-jazzy-nav2-bringup
(3) turtlebot3_lds_2d.lua 수정 (rplidar c1)
현재 사용하고 있는 로봇의 LiDAR는 rplidar c1으로 .lua 파일이 공식적으로 없기 때문에 임의로 사양 맞춰서 수정함
(1) 다음을 조사하시오
- SLAM의 정의와 원리를 조사하시오.
SLAM이란?
: 주변 환경 지도를 작성하는 동시에 차량의 위치를 작성된 지도 안에서 추정하는 방법 (위치 추정 & 지도 작성)
[ 동작 원리 ]
1. 데이터 입력 (Sensor Data)
로봇에 장착된 카메라나 라이다(LiDAR) 센서로부터 주변 환경 정보를 실시간으로 수집
이 데이터가 SLAM 시스템의 가장 기초적인 입력값이 됨.
2. Front-end: 센서 의존적 처리 (Sensor-dependent processing)
여기서는 센서의 종류에 따라 데이터를 가공하여 로봇의 대략적인 움직임을 파악함
특징 추출 (Feature extraction):
이미지나 라이다 스캔 데이터에서 벽, 모서리, 기둥 같은 고유한 특징점을 찾아냄
데이터 연관 및 추적 (Data association - feature tracking):
이전 프레임에서 본 특징점이 현재 프레임의 어디에 있는지 매칭하여 로봇이 얼마나 이동했는지 추정함
루프 폐쇄 (Loop closure):
로봇이 이전에 방문했던 장소에 다시 돌아왔을 때, 누적된 위치 오차를 교정함
3. Back-end: 센서 독립적 처리 (Sensor-independent processing)
Front-end에서 넘겨준 가공된 데이터를 바탕으로 복잡한 수학적 최적화를 수행함.
MAP 추정 및 그래프 최적화 (MAP estimation - Graph optimization):
로봇의 이동 궤적을 하나의 Pose graph로 만듦
로봇의 위치 간의 관계를 수학적으로 계산하여, 전체적인 지도와 궤적의 오차를 최소화함
4. 최종 출력 (Estimated trajectory and map)
궤적(Trajectory): 로봇이 지나온 경로가 선으로 그려짐
지도(Map): 센서 데이터를 누적하여 주변 환경을 점(Point cloud)이나 면으로 시각화한 최종 지도
https://kr.mathworks.com/discovery/slam.html
- SLAM 알고리즘의 종류와 장단점을 조사하시오.
(8) ros2용 다른 slam 패키지를 조사하시오. cartographer와 성능을 비교하시오.
1. LiDAR 기반 SLAM 알고리즘
라이다 센서의 거리 측정 데이터를 주력으로 사용하는 방식
① Gmapping (입자 필터 기반)
가장 고전적이고 안정적인 2D SLAM 알고리즘
장점: 구조가 단순하여 저사양 하드웨어에서도 비교적 잘 돌아가며, 작은 공간에서 지도를 그릴 때 안정적임.
단점: 지도가 커질수록 계산량이 기하급수적으로 늘어나며, 오차가 누적되었을 때 이를 한 번에 해결하는 능력이 부족함.
② Cartographer (그래프 기반)
구글에서 개발한 최신 알고리즘
장점: 루프 폐쇄(Loop Closure) 성능이 매우 뛰어나 대규모 환경에서도 오차를 실시간으로 교정함.
2D와 3D를 모두 지원하며 실시간성이 좋음.
단점: 설정해야 할 파라미터가 매우 많고 복잡함..
③ Hector SLAM (스캔 매칭 기반)
바퀴의 회전수(Odometry) 데이터 없이 오직 라이다 데이터만 사용함.
장점: 주행 장치가 불안정한 드론이나 사람이 들고 다니는 장비에서도 지도를 그릴 수 있음.
단점: 로봇이 급격하게 회전하거나 빠르게 이동하면 스캔 데이터 간의 일치점을 찾지 못해 지도가 쉽게 깨진다고 함.
2. Visual SLAM (카메라 기반)
카메라 영상을 분석하여 특징점을 추출하고 지도를 만드는 방식.
① ORB-SLAM (특징점 매칭 방식)
장점: 매우 높은 정밀도, 다양한 카메라 렌즈 지원
단점: 높은 연산량과 특징점이 없는 단색 벽면에 취약함
② LSD-SLAM (픽셀 전체를 분석)
장점: 특징점이 적은 환경에서도 지도 생성 가능
단점: 조명 변화에 매우 민감, CPU 부하가 매우 높음
https://100.orange-pkg.com/entry/SLAMSimultaneous-Localization-And-Mapping-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%A2%85%EB%A5%98
(2) 연구실, PC실, 복도 등의 지도를 작성하시오.
연구실 지도 작성
(3) cartographer 설정파일인 lua파일의 설정 파라미터를 조사하시오.
(4) pgm 파일형식을 설명하고 맵에서 검정색, 흰색, 회색의 의미를 설명하시오.
PGM은 이미지의 각 픽셀을 0(검정색)부터 255(흰색) 사이의 회색조(Grayscale) 값으로 저장하는 아주 단순한 형식임.
.yaml 파일과 한 쌍으로 움직이며, 로봇이 이동할 수 있는 공간을 수치화하여 보여줌.
구조: 파일 헤더에 가로/세로 크기와 최대 밝기 값이 적혀 있고, 그 뒤로 픽셀 데이터가 나열된 형식
특징: 압축이 없어 데이터 손실이 없음
검정색: 장애물, 벽이나 가구 등이 있는 곳으로 로봇이 통과할 수 없음을 의미함
흰색: 빈 공간, 로봇이 이미 지나갔거나 센서로 확인하여 아무것도 없음을 확신하는 주행 가능 영역
회색: 센서가 닿지 않았거나, 데이터가 부족해서 장애물 유무를 알 수 없는 구역
(5) 최종결과물 map.yaml의 내용을 설명하시오. 파일의 내용을 이용하여 map의 원점의 좌표를 어떻게 구하는지 설명하라.