Запуск move_base

В цепочке изучения навигации, мы изучили три части:

  • Работа с датчиками
  • Построение карты
  • Определение положения

Нам осталось разобраться с последней задачей, это построение пути и собственно управление движением роботом.

Всеми этими задачами занимается пакет "move_base":

http://wiki.ros.org/move_base

Пакет move_base

Move_base это один из основных пакетов стека ROS-Navigation. Он получает координаты цели в которую робот должен попасть и "организует" необходимые процессы для этого.

Для понимания работы move_base, нам необходимо описать несколько новых для нас понятий:

Планировщик (planner) это часть программы, которая непосредственно прокладывает маршрут из одной точки в другую. Планировщики могут использовать различные алгоритмы, и иметь разные задачи. Обычно на роботах используют несколько планировщиков различного назначения.

Глобальный планировщик (global planner) это планировщик который строит маршрут до конечной точки. Для его работы нужна только карта. При построении маршрута, планировщик не учитывает новые данные датчиков. Основная его задача это оптимизировать маршрут (расстояние которое должен проехать робот) по уже известной карте и избегать не "удобных" для робота маневров или препятствии.

Локальный планировщик (local panner) это планировщик, который должен реагировать на те препятствия, которые находятся в непосредственной близости от робота. Например на новые объекты, которые не находились на карте ранее, и информация о них поступила вот прямо сейчас. Обновление маршрута этого планировщика происходит с максимально доступной частотой обновления. Любые новые данные сразу начинают учитываться этим планировщиком.

"Стоимости" пути (costmap) это карта, совмещенная с данными, которые определяют вероятность столкновения с препятствием. Чем ближе препятствие тем выше вероятность столкновения. При работе планировщика, он суммирует "стоимость" перемещения и строит маршруты с минимальной стоимостью.

Сostmap может быть также глобальным и локальным, для использования различными планировщиками.

Высокоуровневую диаграмму связей мы можем увидеть на рисунке ниже:

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

Запуск move_base в режиме SLAM

Демонстрировать работу move_base мы будем в режиме SLAM.

SLAM от англ. (simultaneous localization and mapping) это метод одновременной локализации и построения карты, используемый в роботах для построения карты в неизвестном пространстве с одновременным процессом перемещения робота к обозначенной цели.

Ошибка измерения положения робота по Одометрии, может быть исправлена за счет измерений лидара или камеры, используемыми для создания карты.

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

Перед тем как приступить к изучению SLAM навигации на роботе необходимо скопировать на компьютер конфигурационный файл turtlebro_navigation.rviz

Сделать это можно следующей командой:

scp pi@ip_робота:/home/pi/catkin_ws/src/turtlebro_navigation/rviz/turtlebro_navigation.rviz /home/имя_пользователя/

Пример:
scp pi@192.168.1.74:/home/pi/catkin_ws/src/turtlebro_navigation/rviz/turtlebro_navigation.rviz /home/ROS-PC/

После того, как конфигурационный файл скопирован - запустим SLAM навигацию на роботе:

roslaunch turtlebro_navigation turtlebro_slam_navigation.launch open_rviz:=0

Для визуализации, запустим rviz на компьютере, и откроем скопированный конфигурационный файлturtlebro_navigation.rviz

Мы увидим работу всего нашего стека навигации, серую глобальную карту "costmap" и видим большой прямоугольник с локальной costmap. Чем ближе отображенный цвет к красному, тем выше "стоимость", также виден путь прокладываемый планировщиком.

Задание цели движения

Давайте "запустим" нашего робота, чтобы он проехал несколько сантиметров вперед. Для этого воспользуемся инструментом rviz "2D Nav Goal". Укажем точку впереди робота. Если все настроено правильно робот должен самостоятельно доехать до указанной точки.

Можем поиграть с роботом, задавая точки, в которые должен добраться робот. На этом этапе лучше не задавать "сложные" точки (закрытые препятствием, за углом и т.д.). Более подробно о настройках навигации мы поговорим на следующем уроке.

results matching ""

    No results matching ""