Глобальный Costmap
Для построения маршрута глобальный планировщик должен каким то образом получать данные о наличии препятствий на карте. Т.е. получать на вход не просто картинку, а оцифрованную модель местности. Для подготовки такой модели используется модуль costmap_2d, который анализирует карту и превращает графический файл в цифровую модель вероятности столкновения робота с препятствием.

В отличие от обычной сохраненной карты, costmap содержит в себе информацию не только о наличии или отсутствии препятствия, но так же и о вероятности столкновения робота с препятствием в зависимости от положения центра базы робота.
Принцип по которой построена Cost Map представлен на графике ниже:

Условно costmap можно разделить на пять типов зон:
"Мертвая" зона - по сути это и есть препятствие. Таким образом если центр робота находится в этой точке - то робот совершенно точно столкнулся с препятствием.
"Зона касания" - точки в этой зоне лежат непосредственно вне препятствия, но если поместить центр робота в эти точки, то из-за геометрических размеров базы - он столкнется с препятствием.
"Зона возможного касания" - точки этой зоны определят вероятность касания которая зависит от геометрических параметров робота и направления его движения. К примеру, робот не касается стены притеревшись к ней бортом, но если он получит команду на разворот на месте, он точно коснется стены при развороте. Критерии по которым точка на Costmap может относиться к данной зоне зависят от геометрических и динамических параметров робота.
"Свободное пространство" - вероятность столкновения равна 0, при любой ориентации робота.
"Неизвестность" - точки на карте, по которым еще нет информации от сенсоров робота. По умолчанию считаются "мертвой зоной"
Основные параметры
Для конфигурирования доступно два файл global_costmap_params.yaml, в котором задаются глобальные значения и costmap_common_params_turtlebro.yaml специфичные для разный платформ.
~\
- Глобальная переменная карты, которую оцифровывает модуль costmap
~\
- Имя координатного базиса связанного с базой робота.
~\
- Задержка в секундах между данными от модуля tf и данными модуля costmap. Используется для контроля соединения. Если задержка (ping) больше данного параметра, робот останавливается. Это сделано для того, чтобы при лаге сети робот не врезался в препятствие.
Rate parameters
~\
- Частота обновления Costmap в Гц.
~\
- Частота публикации обновления Costmap в Гц.
Map management parameters
~\
- Использовать или нет алгоритм Скользящего окна. Если параметр static_map == true, параметр rolling_window должен быть установлен в false
~\
- Если стоит true то весь Cost Map будет публиковаться в топик "~\
/costmap" в каждом цикле обновления. Если false, то будут публиковаться только инкрементальные изменения в топик "~\ /costmap_updates".