
Costmap Configuration : ROS Navigation Stack은 현실 세계에 있는 장애물에 대한 정보를 아래의 두 costmap들에 저장하며, 이 costmap들은 .yaml 파일에 구성되어야 함.
Global costmap : 사용자가 생성한 static map(SLAM을 통해 생성된 지도)으로부터 만들어지며 Global Planner가 경로를 계산하기 위해 사용한다. Static map에 의해 제공된 너비, 높이, 장애물의 정보에 맞게 초기화되어 amcl등의 localization system과 함께 조합됨.
Global costmap은 새로운 장애물이 나타난다거나 하는 등의 환경이 바뀌더라도 바뀌지 않음.
Local costmap : 로봇의 센서 데이터로부터 만들어지며 Local Planner가 local plan을 계산하기 위해 사용한다. 로봇이 움직임에 따라 같이 움직이며 실시간으로 장애물에 대한 정보를 얻음.
- Locla planner는 Global planner가 계산한 경로를 분할한 후 실행하며, Global planner와 달리 odometry와 laser data를 계속 확인하고, 충돌이 없는 local plan을 선택함.
- 즉 Local planner는 로봇의 충돌을 피하기 위해 경로를 즉시 수정할 수 있다. Local plan은 /local_plan topic으로 publish됨.
AMCL Configuration : ROS Navigation Stack은 AMCL (Adaptive Monte Carlo Localization)이라는 porbabilistic localization system을 사용해야 함.
- AMCL : Particle Filter를 통해 localization을 수행하는 알고리즘 중 하나로써, 주어진 지도에 대해 자세를 추적한다. Monte Carlo Localization의 변형이다.
- Monte Carlo Algorithm : 랜덤으로 점들을 무수히 만들고 그 점들의 갯수를 통해 면적을 구하는 알고리즘
amcl node는 아래 topic들을 subsrcibs한다.
- /scan : Lidar 로부터 laser scan messages (sensor_msgs / LaserScan)
- /tf : 좌표계 변환 (tf / tfMessage)
- /map : Gmapping, Hector SLAM 혹은 이미지를 수동으로 사용하여 생성된 occupancy grid map (nav_mags / OccupancyGrid)
amcl node는 아래 topic들은 publish 한다.
- /amcl_pose : Map에서의 로봇의 추종된 자세 (geometry_msgs / PoseWithCovarianceStamped)
- /particlecloud :필터에 의해 유지되는 자세 추종의 집합 (geometry_msgs / PoseArray)
- /tf (tf / tfMessage) : Publishes the transform from odom to map