Perception : [인식]의 의미로 로봇의 위치를 이해하고 정보들을 인지하는 것을 의미한다.

image.png

Odometry

Odometry는 이전 위치를 기준으로 현재까지 얼마나 움직였는지 추정하는 과정이다.

즉, 절대적인 위치를 바로 아는 것이 아니라, 이전 시점과 현재 시점 사이의 상대 이동량을 계산한다.

과 같은 상대적인 움직임을 추정한다.

Odometry는 상대 이동량을 계속 누적하여 trajectory를 만들 수 있지만, 시간이 지날수록 오차가 누적되는 drift 문제가 발생한다.

대표적인 odometry 종류는 다음과 같다.

중요한 점은 odometry가 반드시 내부 센서만을 의미하는 것은 아니라는 것이다.

센서 종류와 관계없이, 이전 상태에 대한 상대 이동량을 추정하면 odometry라고 볼 수 있다.

⇒ 내가 알고 있는 기존의 odometry는 현재의 내가 정의한 원점을 기준으로 움직임을 서술하고 있다. ⇒ draft문제가 발생하며 전역적으로 현재의 위치를 서술할 수는 없다.

image.png

이에 따라, 전역적인 위치에 대한 서술을 하는것을 loacaliaztion이라 말하고 이를 위해서는 Mapping이라는 방식이 필요하다. 즉, 현재의 위치 map이 있는 상태에서 현재 로봇의 위치를 perception하여, 그 이후 odometry와 함께 융합하여 현재의 위치를 서술시킨다. (내가 아는 방식으로는 EKF(GPS + IMU)인 GNSS/INS localization이 있다! )

Localization

Localization은 기준이 되는 map 또는 global frame 안에서 로봇의 현재 위치를 추정하는 과정이다.

Odometry가 “이전 위치에서 얼마나 움직였는가?”를 보는 것이라면, localization은 “기준 좌표계 안에서 지금 어디에 있는가?”를 보는 것이다.

등이 localization에 해당한다.

Note* IMU만 적분해서 위치를 추정하는 경우에도 위치값은 나오지만, 외부 기준 없이 시작점 기준으로 이동량을 누적하는 것이므로 보통 localization보다는 inertial odometry 또는 dead reckoning에 가깝게 부른다.

<aside> 💡

헷갈리기 쉬운점!

위 내용만 보면 내부센서만 이용하여 추정하는 방식이 odometry고 external sensor를 적용한게 localization이라고 오해할 수 있다 (내가 그럼)

그러나, mapping을 위해서는 당연하게도 현재의 센서값(LiDAR)등이 내 전역위치의 어디에서 관측한건지 알아야 Mapping이 가능하다. 이에 따라, Mapping과 Localization은 동시다발적으로 이루어져야하며, 이를 SLAM(Simultaneous Localization and Mapping)이라고 할 수 있다. 전체적인 구조는 아래와 같다.