• Регистрация
Н/Д
Н/Д 0.00
н/д

Проект RACECAR - работаем с алгоритмом локализации Монте-Карло

30.04.2020

Здравствуйте!

Мы продолжаем работу над нашим проектом RACECAR/J, и сегодня у нас - Алгоритм локализации Монте-Карло!
Если Вы не читали наши предыдущие статьи о проекте, вы можете легко наверстать упущенное: Проект RACECAR - отлаживаем алгоритмы в Gazebo

Обсудить все детали и тонкости проекта, узнать с какими проблемами, подводными камнями и, при помощи каких лайфхаков, столкнулись наши инженеры и как научились их обходить вы сможете посетив наш митап по разработке беспилотного транспорта, который пройдет 27 октября в Москве. Регистрация обязательна.

Если вы не будете против, я сделаю краткое вступление, а именно: что же такое алгоритм локализации Монте-Карло?

Алгоритм локализации Монте-Карло, или просто MCL, используется, чтобы оценить положение и ориентацию робота в пространстве. Алгоритм использует уже исзвестную карту среды, к примеру, квартиру, данные с лидара и, конечно, данные одометрии, куда же без них. 
Чтобы определить местоположение робота, алгоритм MCL использует фильтр частиц.Частицы представляют собой распределение вероятностных состояний для робота. Каждая частица представляет возможное состояние робота. Эти частицы сходятся вокруг одного местоположения, когда робот перемещается в среде и определяет вероятности частиц среды с помощью лидара. Движение робота определяется с помощью датчика одометрии. 

Давайте же не будем ходить вокруг да около и перейдем к самому интересному: о наших результатах и получившихся моделях. 


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

  1. Алгоритм обхождения препятствий
  2. Следование по заданному пути с помощью алгоритма чистого преследования
  3. Следование по заданному пути с помощью алгоритма обхождения препятствий

Также в этих моделях мы задаем только начальную и конечную точку для построения пути, дальше наши модели автоматически строят путь с помощью алгоритма RRT (Rapidly-exploring random tree). 

Теперь подробнее о моделях:

Gazebo: MCL + Obstacle Avoidance

В этой модели мы используем алгоритм Монте-Карло и алгоритм обхождения препятствий, который позволяет нашему роботу спокойно перемещаться по трассе. 
А вот и видео, где вы можете увидеть все своими глазами:


Gazebo: MCL + Path Following + Pure Pursuit

Здесь мы используем алгоритм Монте-Карло и алгоритм следования по пути с чистым преследованием. Данный алгоритм позволяет нам создавать путь с помощью RRT алгоритма, в который мы подаем начальную и конечную точку, и следовать по нему.

Gazebo: MCL + Path Following + Obstacle Avoidance

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

И, что самое интересное, мы испытали один алгоритм на железке, перед этим построив карту помещения (квартиры) с помощью алгоритма OnlineSLAM (Simulteneous Localization and Mapping).

Вот получившаяся карта:

А теперь перейдем непосредственно к модели:

Hardware: MCL + Obstacle Avoidance

В данной модели мы используем тот же алгоритм Монте-Карло и алгоритм обхождения препятствий, который позволил машинке переместиться из одной комнаты в другую. 

Далее нам предстоит работа над усовершенствованием моделей MCL для железки:

  1. MCL + Path Following + Pure Pursuit
  2. MCL + Path Following + Obstacle Avoidance

А также:

  1. Работа с ROS и генерация независимых ROS-узлов
  2. Компьютерное зрение и распознавание образов

Надеюсь, Вам нравится наш проект и вы будете дальше следить за нашими новостями!

И еще: при построении карты местности - избегайте зеркал=)

Удачи и спасибо за просмотр!

Теги

    30.04.2020

    Комментарии

    • ytrewq
      ytrewq0.00
      3.05.2020 16:12

      А чего машинка дёргается так (последнее видео)?