Глобальный планировщик

Глобальный планировщик (Global Planner)

Как только нода move_base получает цель для перемещения, ее координаты сразу передаются в глобальный планировщик, который прокладывает путь до цели.

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

Запустим навигацию по карте.

roslaunch turtlebro_navigation turtlebro_slam_navigation.launch

Если задать точку для цели робота, то черная линия, соединяющая робота и цель, это и будет наш глобальный маршрут.

Если робот не сможет построить такой маршрут (например точка цели окажется в недоступной области) то робот не начнет движение.

Изменить настройки отображения маршрута мы можем через rviz, для этого откроем папку на вкладке Display / Planner Plan

Рассчитанный глобальный маршрут мы можем увидеть в топике /move_base/NavfnROS/plan

Если нам необходимо тестировать алгоритм построения пути, то у нас есть способ задавать конечную и начальную точку через сервис /move_base/make_plan При запуске сервиса происходит построение маршрута, но сам робот движение не начинает, что очень удобно для отладки.

Например для построения маршрута из точки 0,0,0 в точку 1,0,0 (на метр вперед) нам необходимо выполнить команду.

rosservice call /move_base/make_plan "start:
  header:
    seq: 0
    stamp:
      secs: 0
      nsecs: 0
    frame_id: 'map'
  pose:
    position:
      x: 1.0
      y: 0.0
      z: 0.0
    orientation:
      x: 0.0
      y: 0.0
      z: 0.0
      w: 1.0
goal:
  header:
    seq: 0
    stamp:
      secs: 0
      nsecs: 0
    frame_id: 'map'
  pose:
    position:
      x: 0.0
      y: 0.0
      z: 0.0
    orientation:
      x: 0.0
      y: 0.0
      z: 0.0
      w: 1.0
tolerance: 0.0"

Как результат выполнения вызова сервиса, мы получим точки построенного плана маршрута и также увидим его в rviz

Выбор глобального планировщика

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

Для нашего робота по умолчанию используется планировщик Navfn.Это один из самых популярных планировщиков, использующий для построения кратчайшего пути алгоритм Де́йкстры (https://ru.wikipedia.org/wiki/Алгоритм_Дейкстры)

Carrot Planner

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

Планировщик получает цель, строит прямую линию до цели и начинает движение по этой линии. При встрече с препятствием, робот просто перестает двигаться. Этот планировщик нельзя и назвать глобальным, так как он не планирует маршрут. В реальных условиях автономной работы этот планировщик не очень применим.

Прямая зеленая линия - плановый маршрут Carrot Planner'a

Вы можете изменить используемый глобальный планировщик на Carrot Planner командой:

rosrun dynamic_reconfigure dynparam set /move_base base_global_planner carrot_planner/CarrotPlanner

Global Planner

Global Planner это более гибкая замена планировщика navfn. Вы можете выбирать различные алгоритмы построения пути (например A∗), а не только алгоритм Де́йкстры Более подробно http://wiki.ros.org/global_planner

Вы можете поменять алгоритм планировщика на Global Planner выполнив команду

rosrun dynamic_reconfigure dynparam set /move_base base_global_planner global_planner/GlobalPlanner

или запустив rqt_reconfigure

rosrun rqt_reconfigure rqt_reconfigure

Помимо изменений алгоритмов через ноду dynamic_reconfigure вы можете также менять параметры прямо в файлах конфигурации (директория params)

results matching ""

    No results matching ""