Geometry(기하학) : 공간에 있는 도형의 형상 및 크기를 나타내는 것
<길을 찾기 위한 필요 요소>
1. 위치 : 로봇의 위치 계측, 추정하는 기능
-GPS / UWB / 추측 항법 / 데드레커닝 계산(선속도, 각속도) / Runge-kutta 공식
2. 센싱 : 벽, 물체 등의 장애물의 계측하는 기능
- 거리 센서(Lidar) / 비전 센서 / Depth camera(깊이 카메라)
3. 지도 : 길과 장애물 정보가 담긴 지도
- SLAM
4. 경로 : 목적지까지 최적 경로를 계산하고 주행하는 기능
- 내비게이션 / 위치 추정 / 경로 탐색 및 계획 / Dynamic Window Approach / A*
/ 포텐셜 장 / 파티클 필터 / 그래프
위치, 센싱, 지도, 경로는 ROS의 메세지로 전송될 수 있다.
Odometry : (차의) 주행 거리 측정
How? 모터에 달린 엔코더를 통해 거리를 측정하고, 엔코더 값과 거리를 추정하는 방법
즉, 바퀴의 각도와 거리를 이용하여 위치 추정 -> wheel odometry
=> 굳이 모터가 아니더라도 IMU 또는 카메라 등의 센서들이 될 수 있다.
=> 시간에 따른 위치 변화를 추정하기 위한 모션 센서의 데이터를 사용하는 것
=> 출발 지점으로부터 얼마나 떨어져 있나를 파악하는 상대적인 위치를 추정하는 것
=> 센서의 위치가 중요 -> 센서로부터 측정되는 값을 기준으로 하므로 중요 -> TF 정의
Visual odometry : 단순하게 매 프레임(한 장면)마다 나의 상대적 위치를 계산해 누적함으로써 시작점으로부터 현재 나의 위치를 계산하는 방식
=> 이미지에 노이즈가 끼거나 실시간으로 계산하면서 알고리즘이 유사 값을 계산하면서 위치 추정에 오차가 생기기 때문에 조심해함
=> locally consistent 즉, 근접 거리에서만 정확하다
=> 카메라 이용
=> 카메라 이용(*카메라의 좌표계는 x축, y축 시작 점이 다르다.)
<ros2의 odom frame 구조>
크기 순 : earth > map > odom > basePlink
base_link : URDF를 통해 RVIZ 상에서 제작한 로봇에 부착된 센서들의 기본 위치 모터의 부착 위치 등
ex) 로봇의 중심이나 차체의 아래
odom : 그렇게 로봇에 부착된 각각 센서들을 통해 들어오는 데이터들의 이동 경로를 시간에 따라 누적한 결과를 나타냄
map : 각각의 odom들을 합쳐서 정적 지도를 나타내는 환경 지도
earth : map들을 합쳐서 전체 건물 지도를 만드는 등 지구 기준 좌표계
-> 여러 대의 로봇들이 서로 다른 map 위에서 존재할 수 있게 해줌
<조건>
1. map은 여러 개의 odom을 가질 수 있다.
2. odom은 단 하나의 map을 가질 수 있다.
<예시>
ROS2 의 Odom frame에서 base_link가 IMU, 라이다, 모터 등으로 이루어 지며 하나 하나가 각각의 odom으로 다시 기준 좌표계로 맞춰주고, 그 모든 odom들을 다 총합해서 만든 것이 하나의 map을 이루고, 그 하나의 map이 1층이라면 1층 2층 3층의 map들이 다 합쳐져서 earth라는 건물 지도를 구성하게 됨
SLAM(Simultaneous Localization and Mappint) : 로봇 위치 추정 및 지도 생성을 위한 다양한 측면을 포함하는 개념이며, 알고리즘, 패키지, 프레임워크 등의 다양한 형태로 구현된 기술
=> 동시적 위치 추정 및 지도 작성
이렇게 SLAM을 글로 표현하면 잘 와닿지 않을 것입니다. 그래서 한가지의 예시를 들어보겠습니다.
만약 자신이 무인도에 떨어졌다고 가정을 해봅니다.
그랬을때 무인도에서 지도를 만들고 그 지도를 사용하기 위해서는 4가지가 필요합니다.
1. " 내가 지금 어디에 있고, 이곳 주변은 어떻게 생겼는지"
=> SLAM 기술은 실시간으로 자신의 위치 추정과 (Localization) 주변 지도 작성(Mapping)을 할 수 있다.
2. " 처음 눈을 뜬 장소를 기점으로 나의 위치는 어디인지 추정"
=> SLAM 프로그램이 시작한 시점에서부터 지속적으로 자신의 위치 추정을 할 수 있다.
=> particle 또는 GPS를 통해
3. " 내가 현재 있는 위치가 이전에 왔던 지점인가?를 인지"
=> 최신 SLAM 기술들에 적용되는 Loop Closure(원위치로 돌아왔을때 인지하기 위한 기술)라는 기능을 통해 나의 현재 위치가 이전에 와본적 있는 장소라는 것을 인지하고 자신의 위치에 대한 오차 수정을 할 수 있다.
4. " 섬 전체의 지도" + " 어떤 곳을 우리가 갈 수 있는지 파악"
=>SLAM 프로그램이 종료되는 시점에서는 잘 그려진 지도와 나의 지난 위치들을 얻어낼 수 있다.
이렇게 4가지 정보가 있어야 지도를 그리고 사용할 수 있습니다.
그리고 SLAM은 이제 내가 무인도에 떨어진 것처럼 로봇이 무인도에 떨어졌을때 로봇이 움직일 수 있는 곳이 어디이며, 지금 로봇이 어디에 있는지를 알아내기 위한 기술이라고 생각하면 이해하기 쉬울 것 같습니다.
**필자의 경우 실내 쇼핑 로봇 프로젝트를 진행 할때 SLAM 패키지 중 하나인 Cartographer를 이용해서 2d Lidar를 통해서 Mapping 즉, 지도를 생성 후에 그 지도에서 로봇의 실시간 위치를 파악하기 위해서 UWB 값 1개와 2d lidar와 카메라를 센서 퓨전한 화면을 통해서 객체 인식이 된 물체와의 거리 값 2개 총 3개의 데이터들을 가지고 삼변 측량 기법을 적용하여 실내에서 실시간 위치 추정
즉, Localization을 구현해서 프로젝트를 진행했었습니다.
추후에 자세한 내용은 블로그로 작성하겠습니다.
참고 블로그 1 : https://cs-kookmin-club.tistory.com/323
[2024 ROS 스터디]정주광 #4주차 -SLAM과 내비게이션
Chapter 11) SLAM(Simultneous Localization And Mapping) & 내비게이션 SLAM : 동시적 위치 추정 및 지도 작성 Navigation : 차량 자동 항법 장치 길을 찾기위한 필요요소 - 위치 : 로봇의 위치 계측/추정하는 기능 - 센
cs-kookmin-club.tistory.com
참고 블로그 2 : https://cvlearnblog.notion.site/SLAM-f16a75f894ca48d3aa851bca99ec7cce
SLAM이란? | Notion
목차
cvlearnblog.notion.site
'ROS2 이론 정리' 카테고리의 다른 글
Ros2 시작 전의 필요한 사전 지식(2) (0) | 2025.04.10 |
---|---|
Ros2 기초 - 리눅스 시스템 구조와 컴퓨터 구조 (0) | 2025.04.08 |
ROS2 URDF에 대한 모든 것 (0) | 2025.01.06 |
ROS2 TF에 대한 모든 것 (0) | 2025.01.06 |
노드 간의 통신 방식 3가지 (0) | 2025.01.06 |