네비게이션 관련 설정 파일 및 맵 등을 관리하기 위한 패키지를 생성합니다.

$ catkin create pkg mobile_manipulator_robot_navigation --catkin-deps navigation mobile_manipulator_robot_bringup
$ catkin build
$ source ~/.bashrc

👉🏻 map 디렉토리를 만들고, 이곳에 이전 단계에서 만들었던 맵 데이터를 넣어줍니다.

👉🏻 config 디렉토리를 만들고, 이곳엔 네비게이션 설정 파일을 넣어줍니다.

👉🏻 launch 디렉토리를 만들고, 이곳엔 네비게이션 실행을 위한 launch 파일을 넣어줍니다.

패키지 내의 파일 구조는 다음과 같습니다.

mobile_manipulator_robot_navigation
├── CMakeLists.txt
├── config
│   ├── amcl_params.yaml
│   ├── costmap_common_params.yaml
│   ├── dlux_global_planner_params.yaml
│   ├── dwb_local_planner_params.yaml
│   ├── global_costmap_params.yaml
│   ├── local_costmap_params.yaml
│   └── move_base_common_params.yaml
├── launch
│   └── bringup_navigation.launch
├── map
│   ├── map.pgm
│   └── map.yaml
├── navigation2.rviz
└── package.xml

3 directories, 13 files

navigation2에서는 글로벌 플래너는 dlux_global_planner를, 로컬 플래너는 dwb_local_planner를 사용합니다.

Reference: https://github.com/locusrobotics/robot_navigation

글로벌 플래너는 맵 서버의 맵 데이터를 기준으로 골 지점까지 로봇이 가야할 경로를 생성해 줍니다.

로컬 플래너는 현재 받아들인 센서 데이터 (LaserScan)를 반영하여 글로벌 플래너가 만들어 놓은 경로를 추종하는 경로를 생성합니다. 즉, 원래 맵에 있지 않았던 장애물이 발생하는 경우, 이를 회피하고 다시 골 지점까지 갈 수 있도록 경로를 생성합니다.

이제 몇가지 설정 파일들을 살펴보도록 하겠습니다.

설정 파일들

amcl_params.yaml

costmap_common_params.yaml

dlux_global_planner_params.yaml

dwb_local_planner_params.yaml

global_costmap_params.yaml

local_costmap_params.yaml

move_base_common_params.yaml

위 설정 파일을 적용해서 네비게이션 패키지가 실행될 수 있도록 launch 파일을 작성합니다.