- 현재 포스팅 기준 환경입니다.
- ROS melodic
- ubuntu 20.04
- ros2에서의 navigation은 추후에 다룰 예정
Move Base란?
ros의 navigation 관련된 것들이 모여 있는 package로, 로봇 navigation을 할 때 많이 사용하는 package이다. 자세한 document는 다음을 참고 하면 된다.
Move Base Architecture
OutSide
- slam 영역 (global map 생성 및 로봇 주변 local map , localization 담당)
- /tf : 센서들의 tf을 제공
- /odom : 로봇의 위치 제공
- /map : 로봇이 보는 map을 제공해 준다.
- control 영역 (로봇의 제어 담당)
- /cmd _vel: 로봇의 속도, 제어 부분에서 cmd에 맞게 로봇을 움직이게 한다.
- navigation 영역(move base)
- 로봇의 path를 만들어내는 영역
InSide
- global cost map
- map server에서 넘어온 map을 global map으로 취급
- obstacle layer, inflation layer등 다양한 layer를 넣어서 사용한다.
- local cost map
- 로봇의 센서 데이터 위주로 그려지는 map
- 현재 로봇 주위의 맵을 그려주는 역할을 한다.
- global cost map과 마찬가지로 obstacle layer, inflation layer등을 사용한다.
- global planner
- global cost map을 바라보는 객체
- global path를 만들어 내는 역할을 담당한다.
- local planner
- global path와 local cost map을 바라보는 객체
- locap path와 로봇이 움직여야 하는 속도를 만들어 내는 역할을 담당한다.
- recovery behaviors
- 로봇이 navigation에 실패했을 때 행동하는 전략을 담당.
Navigation stack에서의 전제사항
- SLAM에서의 전제 사항
- global map, local map이 제공된다.
- navigation은 제공되는 map에 여러 layer를 붙여 navigation에 편하게 만들 뿐 map 자체가 어떻게 만들어지고 제공 되는지 관심가지지 않는다.
- obstacle layer에서 /scan에 대한 토픽을 직접적으로 받아 cost map을 그리지만 사실 상 navigation이 관심을 가지는 영역은 obstacle layer가 아닌 inflation layer가 입혀진 이후의 맵이라고 생각 할 수 있다.
- 제공 받은 map에 대해서 신뢰성이 있어야한다.
- navigation은 제공되는 map에 여러 layer를 붙여 navigation에 편하게 만들 뿐 map 자체가 어떻게 만들어지고 제공 되는지 관심가지지 않는다.
- localization이 된다.
- 로봇이 map상에서 어디에 위치하고 있는지 알아야한다.
- 로봇의 현재 위치를 모르면 너무나 당연히도 navigation은 실패한다.
- global map, local map이 제공된다.
- Robot Contol에서의 전제 사항
- navigation에서 로봇이 특정 속도로 움직여 달라고 요청했을 때 로봇은 요청한 속도로 안정적으로 움직일 수 있어야 한다.
- Navigation에서의 전제 사항
- navigation은 map과 goal이 정해졌을 때, 로봇이 절대 갈 수 없는 경로(벽 속이라는가 벽을 뚫어야 갈 수 있는 곳 등)를 제외하면 path를 생성하고 안내 할 수 있어야 한다.
- navigation하다가 중간에 에러가 나거나 특정 event가 발생 했을 때 로봇 스스로 recovery behavior를 실행하게 해야한다.
이제 다음 포스팅 부터 아래 pdf를 토대로 차례대로 분석해 나가 볼 예정이다.
https://kaiyuzheng.me/documents/navguide.pdf
728x90
'ROS' 카테고리의 다른 글
[ROS] Move Base (3) Move Base Code 분석 (0) | 2022.02.21 |
---|---|
[ROS] Move Base (2) Velocity & Acceleration (0) | 2022.02.18 |
[ROS] XmlRpc 사용법 (0) | 2022.02.14 |
[ROS] plugin 사용법 (0) | 2022.02.14 |
[ Server / Client ] 서버 클라이언트 작성법 + Custom service file 작성법 (1) | 2021.01.30 |