[ROS2] Odometry

bbolddagu·2023년 5월 18일
1

IoT

목록 보기
7/7

Odometry란?

로봇이나 차량과 같은 이동체의 상대적인 위치와 자세를 추정하기 위해 사용되는 기술

  • 이동체의 오도메트리는 보통 이동 경로에서 감지된 변위, 회전, 속도 등의 정보를 기반으로 계산됩니다.

Odometry란 단어 그대로 주행기록계라는 의미로서 엔코더를 통한 회전수와 IMU(관성 측정 장비)로 기울기 등을 측정함으로서 움직이고 있는 사물의 위치를 측정하는 방법을 의미합니다.

Odometry는 ROS에서 odom frame으로 구현되며 위에서 설명한 엔코더 혹은 IMU를 사용하여 위치를 추정할 수 있습니다. 부득이하게 Visual SLAM을 사용하여 위의 센서를 사용하지 못할 경우 카메라를 통해 관측한 값을 토대로 Odom을 추정하는 방법을 사용할 수도 있습니다.

🔎 odom frame이란?
odom frame은 로봇의 Odometry(오도메트리) 정보를 기준으로 정의된 좌표계입니다. 이는 로봇의 위치와 자세를 추정하는 센서 데이터를 기반으로 한 좌표계로, 로봇의 상대적인 움직임을 추적합니다.

Odom frame을 설계함에 있에 일반적으로 위와 같은 구조로 Frame을 설계합니다. map 은 여러 개의 odom을 가질 수 있으나 odom은 단 하나의 map을 가질 수 있습니다. 즉 1 개의 map 위에 다수의 로봇이 존재할 경우 odom은 로봇의 개수 만큼 존재한다고 할 수 있겠습니다.


📌 earth

earth frame은 여러 대의 로봇들이 서로 다른 map 위에서 존재할 수 있도록 해줍니다. 로봇들이 한 빌딩의 각 층에 위치하여 서로 다른 map을 가지고 있을 경우 earth frame은 모든 map frame을 통해 각 층의 정보를 가질 수 있게 해줍니다.


📌 map

map frame은 world fixed frame으로서 earth frame에 고정된 프레임이라 할 수 있습니다. odom frame이 움직일 때 drift가 발생하여 로봇의 위치가 미세하게 바뀌는 경우가 발생합니다. map frame은 연속적이지 않기 때문에 시뮬레이션을 돌릴 때 마치 로봇이 갑자기 순간이동 한 듯 움직이는 경우를 볼 수 있습니다. 이러한 단점이 있지만 map frame은 장기간 global reference에는 매우 유용한 frame입니다.

"map" 프레임은 로봇과 로봇 외부의 다른 센서(예: LIDAR, 카메라 등) 사이의 변환을 나타내는 중요한 프레임입니다. 다른 프레임(예: 로봇의 로컬 좌표계, 센서의 좌표계)에 대한 변환 행렬을 계산하여 로봇이 "map" 프레임에 상대적인 위치를 추정할 수 있습니다.

"map" 프레임은 로봇 제어, 내비게이션, 경로 계획 등 다양한 로봇 관련 작업에서 중요한 역할을 합니다. 로봇이 "map" 프레임 상에서 목표 지점으로 이동하도록 경로를 계획하고 제어할 수 있습니다. 또한, 로봇의 현재 위치를 "map" 프레임으로부터 추정하여 SLAM과 같은 작업을 수행할 수도 있습니다.

📌 odom

odom frame은 world fixed frame으로서 또한 earth frame에 고정된 프레임이라 할 수 있습니다. 로봇의 위치가 drift로 인해 odom frame이 장기간 global reference에서는 사용에 있어 의미가 없을 수 있으나 odom frame은 로봇의 위치를 연속적으로 나타낼 수 있어 로봇이 갑자기 순간이동을 하는 듯한 모습을 보이지 않고 부드럽게 움직일 수 있도록 해줍니다.

즉 odom frame은 단기간 local reference에서 로봇의 위치를 정확하게 파악하는데는 매우 유용한 frame이라 할 수 있겠습니다.

odom frame은 주로 로봇의 출발점을 기준으로 하며, 로봇이 움직일 때마다 Odometry 정보를 업데이트하여 로봇의 현재 위치와 자세를 나타냅니다. Odometry 정보는 로봇의 바퀴 회전과 이동 거리, 관성 센서 등을 통해 계산될 수 있습니다. 이 정보를 기반으로 로봇의 상대적인 움직임을 추적하고, 로봇의 경로와 위치를 추정할 수 있습니다.

odom frame은 다른 좌표계와 연결될 수 있으며, 로봇의 운동 및 제어, 내비게이션 작업에 사용됩니다. 예를 들어, SLAM(Simultaneous Localization and Mapping) 작업에서는 로봇의 위치 추정에 odom frame을 사용하고, 로봇의 이동 경로를 지도 좌표계에 매핑하여 지도를 생성합니다.

ROS에서는 odom frame은 odom이라는 이름으로 사용되며, nav_msgs/Odometry 메시지의 header 필드에서 frame_id로 명시됩니다. 이를 통해 다른 좌표계와의 변환 및 연결 작업을 수행할 수 있습니다.


base_link frame은 로봇 자체의 위치를 나타내는 frame이라 할 수 있습니다. base_link frame의 위치를 odom 혹은 map frame을 사용하여 위치를 추정하는 방법으로 로봇의 위치를 파악할 수 있습니다.

로봇에서 base_link frame은 일반적으로 로봇의 중심 또는 로봇의 기반(예: 바퀴 또는 다리)과 관련된 프레임입니다. base_link frame은 다른 프레임들과의 변환(transform)을 통해 로봇 내부 및 외부에서 다양한 센서 및 장치의 데이터를 정확하게 매핑할 수 있도록 도와줍니다.




📖 참고

0개의 댓글