Глобальный Costmap

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

Пример части costmap, с наложенными данными лидара

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

Принцип по которой построена Cost Map представлен на графике ниже:

Условно costmap можно разделить на пять типов зон:

"Мертвая" зона - по сути это и есть препятствие. Таким образом если центр робота находится в этой точке - то робот совершенно точно столкнулся с препятствием.

"Зона касания" - точки в этой зоне лежат непосредственно вне препятствия, но если поместить центр робота в эти точки, то из-за геометрических размеров базы - он столкнется с препятствием.

"Зона возможного касания" - точки этой зоны определят вероятность касания которая зависит от геометрических параметров робота и направления его движения. К примеру, робот не касается стены притеревшись к ней бортом, но если он получит команду на разворот на месте, он точно коснется стены при развороте. Критерии по которым точка на Costmap может относиться к данной зоне зависят от геометрических и динамических параметров робота.

"Свободное пространство" - вероятность столкновения равна 0, при любой ориентации робота.

"Неизвестность" - точки на карте, по которым еще нет информации от сенсоров робота. По умолчанию считаются "мертвой зоной"

Основные параметры

Для конфигурирования доступно два файл global_costmap_params.yaml, в котором задаются глобальные значения и costmap_common_params_turtlebro.yaml специфичные для разный платформ.

~\/global_frame (string, default: "/map")

  • Глобальная переменная карты, которую оцифровывает модуль costmap

~\/robot_base_frame (string, default: "base_link")

  • Имя координатного базиса связанного с базой робота.

~\/transform_tolerance (double, default: 0.2)

  • Задержка в секундах между данными от модуля tf и данными модуля costmap. Используется для контроля соединения. Если задержка (ping) больше данного параметра, робот останавливается. Это сделано для того, чтобы при лаге сети робот не врезался в препятствие.

Rate parameters

~\/update_frequency (double, default: 5.0)

  • Частота обновления Costmap в Гц.

~\/publish_frequency (double, default: 0.0)

  • Частота публикации обновления Costmap в Гц.

Map management parameters

~\/rolling_window (bool, default: false)

  • Использовать или нет алгоритм Скользящего окна. Если параметр static_map == true, параметр rolling_window должен быть установлен в false

~\/always_send_full_costmap (bool, default: false)

  • Если стоит true то весь Cost Map будет публиковаться в топик "~\/costmap" в каждом цикле обновления. Если false, то будут публиковаться только инкрементальные изменения в топик "~\/costmap_updates".

results matching ""

    No results matching ""