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

Проект RACECAR - работаем с нодами автономной машинки

19.06.2020

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

Мы продолжаем работу над нашим проектом RACECAR/J, и сегодня у нас - работа с ROS нодом Autonomous. Данный нод содержит в себе множество моделей и алгоритмов, которые способны общаться между собой и делает нашу машинку более автономной.
Если Вы не читали наши предыдущие статьи о проекте, вы можете легко наверстать упущенное: Проект RACECAR - работаем c независимыми нодами MCL и Path Following + Obstacle Avoidance

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

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

И сегодня мы разберем с вами ноду Autonomous, а именно: работа алгоритма PlanerWithObstacle Avoidance + Monte-Carlo Localization.

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

Также мы сделали приложение, с помощью которого можно инициализировать ROS на Gazebo/Железке и начать с ними работать, выбрав необходимую ноду, запустить ее и необходимые нам алгоритмы.

Так как мы выбрали для данного поста именно алгоритм PlanerWithOA, то мы также будем задавать начальное и желаемое конечное положение машинки для построения траектории и следования по ней. 
И, что самое интересное,  для наблюдения за результатами, данные с машинки, такие как Estimated Pose (оцененное положение методом Монте-Карло), одометрия и построенная траектория, будут отображаться на отдельном графике. 

А вот и наше приложение:

RosMsgApp

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

Так как мы уже сгенерировали ноду autonomous на машинке, то нам осталось лишь сделать следующее:

  1. Выбрать, к чему мы будем подсоединяться: (Gazebo/hardware), в данном случае нам интересна железка. 
  2. Нажав на кнопку "Connect" - инициализируем ROS на выбранном устройстве. 
  3. В правом верхнем углу отображено название нашей ноды : "autonomous1", справа от него есть иконка, которая сейчас прозрачна, это говорит о том, что нода не запущена. 
    Запустить ее можно, нажав на кнопку "Run", и тогда иконка станет зеленой, сообщив нам, что теперь нода работает.
  4. Далее нам предстоит выбрать алгоритм, который мы хотим запустить на машинке. В данном случае: MCL + PlanerWithOA
  5. Выбрать пространство (карту), в которой наша машинка находится. Она отображается справа на графике. Машинка у нас будет кататься по квартире.
  6. Далее мы можем выбрать начальную позицию и конечную, но так как мы начинаем двигаться из нуля, то стоит лишь выбрать конечную позицию. Вы сможете увидеть более подробно, как это делается, в видео ниже.
  7. Теперь же нам остается лишь отправить наши сообщения (выбранный алгоритм, начальную и конечную точки) на железку, чтобы она смогла их обработать и начать движение по построенной ею же траектории.
  8. Нажимаем на кнопку "Draw" и наслаждаемся результатом =)

Теперь давайте же приступим к самому занимательному: просмотру видео, где наша машинка будет ехать из комнаты к выходу из квартиры: 

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

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

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

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

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

Теги

    19.06.2020

    Комментарии