ROS Navigation - Navigation Stack 설정하기
로봇 설정
- 위 그림은 Navigation stack을 이용하기 위해 로봇이 미리 갖춰야 하는 component이다
- 흰색 component 들은 반드시 미리 실행중이어야하는 것들이고, 회색 component들은 optional하게 미리 실행되어야 하는 것들이다.
- 마지막으로 파란색 component들은 각 robot platform 마다 형성되어야하는 component들이다.
Navigation stack 구동을 위해 필요한 것들
ROS
- Navigation stack은 기본적으로 로봇이 ROS를 사용하고 있다는 전제하에 구동된다.
- Navigation stack을 이용하려면, 로봇은 tf를 이용해 coordinate frame간 관계에 대한 정보를 지속적으로 publish 해야 한다.
- Navigation stack은 장애물을 피하기 위한 정보를 Sensor로 부터 얻는데, 이는 sensor가 sensor_msgs/LaserScan 또는 sensor_msgs/PointCloud 메세지를 ROS를 통해 publish하는 형태로 이루어진다.
- Navigation stack을 이용하려면 odometry 정보를 tf를 통해서나 nav_msgs/Odometry 메세지로 publish 하여야 한다.
Base Controller (base controller)
- Navigation stack을 이용하려면 로봇의 기본 coordinate frame을 기준으로 한 velocity command를 geometry_msgs/Twist 메세지를 통해 "cmd_vel" topic에 보낼 수 있어야 한다.
- 이는 "cmd_vel" topic을 subscribe하여 "cmd_vel" topic으로 부터 속도정보를 받아 모터에 적합한 명령어로 변환하는 Node 또한 필요함을 의미한다.
Mapping (map_server)
- Navigation stack을 구동하기 위해 map이 반드시 필요하지는 않지만, 해당 tutorial은 map이 있다는 전제하에 진행될 것이다.