티스토리 뷰
(해당 내용은 로보티즈 표윤석 연구원님의 ROS 강의 자료를 기초로 작성되었습니다.)
로봇이 길을 찾기위해서는 어떤 과정이 필요할까?
먼저 사람이 처음 가보는 미지의 장소를 탐색하는 과정을 생각해보자.
우리는 밝은 곳이라면 눈(어두운 곳이라면 손으로 더듬는다) 이라는 센서로 지형, 물체 등을 판단해 앞으로 진행 할 수 없는지를 판단한다.
그리고 진행하면서 봐왔던 지형과 물체를 기억하고 단편적인 지도를 머리 속에 그릴 수 있다.
마지막으로 원하는 목표 지점이 생긴다면 이 지도를 통해서 길을 찾아갈 것이다.
로봇도 같은 과정을 거친다.
머신러닝이 적용된 로봇이 아니라면 기본적으로 우리 눈과 같은 물체를 인식하고 물체와의 거리를 판단하는 센서는 없을 것이다.
하지만 로봇에는 적어도 거리를 판단할 수 있는 훌륭한 센서가 존재한다. (인간이 어두운 곳에 있다면 이런 느낌일 것이다)
바로 거리센서이다. 거리센서를 지표로 로봇 앞에 있는 장애물을 판단할 것이다.
Simultaneous Localisation and Mapping (SLAM):
Part I The Essential Algorithms
그렇다면 길을 찾는다고 다시 생각해보자. 로봇을 4가지를 필요로 한다.
1. 위치 : 로봇의 위치를 추정하는 기능
2. 센싱 : 벽, 물체 등의 장애물을 계측하는 기능
3. 지도 : 길과 장애물 정보가 담긴 지도
4. 경로 : 목적지까지 최적 경로를 계산하고 주행하는 기능
우선 위치를 생각해보자.
실외에서는 GPS, 실내에서는 Indoor Positioning Sensor가 있을 것이다.
하지만 둘다 좋은 성능을 기대 못한다. 심지어 GPS는 오차가 m 단위로 일어난다고 한다. (이는 많은 사람들이 알고 있지만 네비에서 잘 뜨는 이유는 근처에 있는 도로로 끌어당긴다고 한다)
우리는 과거 항해에서 부터 쓰던 방법이 있다. 바로 dead reckoning이라고 하는 추측 항법이다.
간단하게 바퀴의 회전 값을 계산해 시작점으로 부터 자신의 위치를 파악한다.
하지만 바닥에서 생기는 마찰, 관성, 기계적 오류로 인해 오차가 발생한다.
그렇기 때문에 IMU 또는 필터로 위치를 보상해준다. 공식에 대해서는 설명하지 않겠다.
두번째는 센싱이다.
센싱은 간단하게 거리센서를 사용하면 된다. 또는 스테레오 카메라.
당연히 성능이 좋을 수록 가격이 비싸다.
여담이지만 여러 스테레오 즉 뎁스 카메라 개발 화사들이 PrimeSense 칩을 사용하고 있었으나 애플이 사간 이후로 공급이 중단됬다고 한다.
따라서 우리는 스테레오 카메라 제조사 간의 경쟁을 보기 힘들 것이다. (인텔 리얼센스에 기대해보자!)
세번째는 지도이다.
로봇은 멍청해서 사람처럼 지도를 만들 수 없다. 그래서 개발했다.
Simultaneous Localization And Mapping
후에 다시 설명한다.
마지막으로 경로이다.
경로는 지도가 있어야 가능한 행동이다. 지도의 목표 지점까지 최단 거리고 진행한다.
A* 등 유명한 알고리즘이 많지만 Dynamic Window Approach (DWA) 것을 처음 접했다.
DWA는 경로를 속도와 각속도로 도메인으로 날린 것이다!
나중에 공부해서 다시 포스팅 하겠다.
http://www.rtc.us.es/the-shared-control-dynamic-window-approach-for-non-holonomic-semi-autonomous-robots/
2부는 ROS 사용해서 실습을 진행해보겠습니다.