본문 바로가기

ROS

[ROS] Move Base (1) Navigation Stack

  • 현재 포스팅 기준 환경입니다.
    • ROS melodic
    • ubuntu 20.04
    • ros2에서의 navigation은 추후에 다룰 예정

Move Base란?

ros의 navigation 관련된 것들이 모여 있는 package로, 로봇 navigation을 할 때 많이 사용하는 package이다. 자세한 document는 다음을 참고 하면 된다.

http://wiki.ros.org/move_base

 

move_base - ROS Wiki

kinetic melodic noetic   Show EOL distros:  EOL distros:   electric fuerte groovy hydro indigo jade lunar diamondback: Only showing information from the released package extracted on Unknown. No API documentation available. Please see this page for in

wiki.ros.org

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에 대해서 신뢰성이 있어야한다.
    • localization이 된다.
      • 로봇이 map상에서 어디에 위치하고 있는지 알아야한다.
      • 로봇의 현재 위치를 모르면 너무나 당연히도 navigation은 실패한다.
  • Robot Contol에서의 전제 사항
    • navigation에서 로봇이 특정 속도로 움직여 달라고 요청했을 때 로봇은 요청한 속도로 안정적으로 움직일 수 있어야 한다.
  • Navigation에서의 전제 사항
    • navigation은 map과 goal이 정해졌을 때, 로봇이 절대 갈 수 없는 경로(벽 속이라는가 벽을 뚫어야 갈 수 있는 곳 등)를 제외하면 path를 생성하고 안내 할 수 있어야 한다.
    • navigation하다가 중간에 에러가 나거나 특정 event가 발생 했을 때 로봇 스스로 recovery behavior를 실행하게 해야한다.

이제 다음 포스팅 부터 아래 pdf를 토대로 차례대로 분석해 나가 볼 예정이다.

https://kaiyuzheng.me/documents/navguide.pdf