Simultaneous 동시적인
Localization 위치 추정
And 및
Mapping 지도작성
SLAM은 로봇이 자신의 위치를 추정함과 동시에 주변환경 지도를 작성하는 알고리즘이다.
1. 로봇의 자율성
로봇이 자율적으로 장애물을 피해서 목표 위치로 이동하려면
2. GPS의 한계
3. 계란 VS 닭
위치 추정과 지도 작성은 상호의존적이다.

SLAM 알고리즘 파이프라인을 살펴보면 프론트엔드에서 아래 과정을 수행한다.
그럼 odometry는 뭘까?
odomtry를 알기 위해선 odom을 알아야한다.
📌 odom
로봇의 시작 위치를 기준으로 로봇의 위치를 추정하는 고정 좌표계
📌odometry
odom을 기준으로 센서 데이터를 통해 로봇의 이동거리와 방향을 계산
즉, odometry는 odom 좌표계를 기준으로 로봇 위치를 계산하는 과정이다.
따라서, odmetry는 로봇의 자율주행에 아주 중요한 정보이다!
| 항목 | odom 토픽 | Odometry 메시지 |
|---|---|---|
| 정의 | 로봇의 위치와 속도 정보를 발행하는 토픽 | 로봇의 위치, 방향, 속도를 나타내는 메시지 타입 |
| 역할 | Odometry 데이터를 전달하는 통로 | 로봇의 Pose(위치/방향)와 Twist(속도) 데이터 표현 |
| 주요 데이터 | Odometry 메시지가 포함된 토픽 | pose: 위치/방향, twist: 선형/회전 속도 |
| 사용 방식 | Odometry 메시지를 퍼블리시(publish) | 메시지를 통해 로봇의 상태를 구체적으로 표현 |
| 차이점 | Odometry 메시지를 송출하는 ROS 토픽 이름 | nav_msgs/Odometry 타입으로 데이터가 정의 |
odmetry를 통해 다음 4가지를 수행할 수 있다.
이동 중 센서 데이터를 바탕으로 로봇이 얼마나 이동했는지 파악하여 주변 환경 정보를 수집하고, 이를 기반으로 지도를 작성할 수 있다.
시간에 따라 로봇의 이동 거리와 방향을 계산하여 현재 위치를 추정한다. 특히,GPS가 없는 실내 환경에서 로봇의 위치 추정에 필수적이다.
로봇의 현재 위치와 목표 위치 간의 거리와 방향을 지속적으로 업데이트하여 최적의 경로를 계획합한다. 경로 상의 장애물을 회피하며 목표 지점까지 안정적으로 이동할 수 있도록 도와준다.
로봇의 현재 위치, 속도, 방향 정보를 바탕으로 정확한 동작 제어를 가능하게 한다.
odometry 계산에 사용되는 센서 데이터는 엔코더(wheel), IMU, 2D LiDAR가 있다.
엔코더 단독으로만 사용할 수 없는 이유가 있는데,
이는
인해 시간에 따라 오차가 누적되기 때문이다.
그럼 2D LiDAR를 단독으로 사용해도 될까?
정답은 NO!
단독 사용이 불가능한 이유는 다음과 같다.
첫번째는 특징이 부족한 환경에서 사용할 수 없다는 것이다.
LiDAR는 레이저에 반사된 데이터를 기반으로 주변환경을 인식하기 때문에, 직선이나 단조로운 환경은 구별하기 어려워 위치 추정이 불안정해진다.
두번째는 Drift 문제이다.
주행시 누적되는 오차가 점점 커지며 위치 추정을 부정확하게 만든다. 특히, 회전운동을 할 때 엔코더가 없으면 각도 변화가 제대로 측정되지 않아 정확한 지도 작성과 위치 추정이 어렵다.
세번째는 동적 환경에서 문제이다.
주변 환경에 동적인 물체가 많으면 노이즈로 인식되어 로봇이 정지해있는지 이동중인지 판단하기 어려워한다.

루프 폐쇄 검출은 로봇이 이미 지나갔던 장소를 다시 지날 때, 그 장소를 인식하고 기존 지도와 연결하는 과정이다.
이를 통해서 누적 오차를 보정하고 왜곡 없는 지도를 작성할 수 있다.

두 포인트 클라우드 간의 차이를 최소화하는 회전(Rotation)과 이동(Translation)을 계산하는 알고리즘이다. 이를 통해 로봇은 자신의 위치를 정밀하게 추정할 수 있다.
1. Association
source point cloud(red)와 target point cloud(blue)의 유클리우드 거리가 가장 가까운 포인트끼리 매칭한다.
포인트 클라우드는 비트로 표현된다. 유클리우드 거리는 서로 다른 비트 개수를 나태는 것으로, 이 거리가 작다는 것은 서로 비트가 유사하니 같은 포인트일 확률이 높다는 것이다.
2. Transformation
매칭된 포인트를 기반으로 로봇의 회전과 이동(변환 행렬)을 추정한다.
3. Error Evaluation
두 포인트 클라우드간 일치도를 평가한다.
오차가 일정 임계값 이하로 줄어드면 알고리즘을 종료한다.