Проект RACECAR - работаем с нодами автономной машинки
Здравствуйте!
Мы продолжаем работу над нашим проектом RACECAR/J, и сегодня у нас - работа с ROS нодом Autonomous. Данный нод содержит в себе множество моделей и алгоритмов, которые способны общаться между собой и делает нашу машинку более автономной.
Если Вы не читали наши предыдущие статьи о проекте, вы можете легко наверстать упущенное: Проект RACECAR - работаем c независимыми нодами MCL и Path Following + Obstacle Avoidance
Обсудить все детали и тонкости проекта, узнать с какими проблемами, подводными камнями и, при помощи каких лайфхаков, столкнулись наши инженеры и как научились их обходить вы сможете посетив наш митап по разработке беспилотного транспорта, который пройдет 27 октября в Москве. Регистрация обязательна.
В предыдущей статье мы уже описывали, что мы хотим получить от нашей автономной машинки, и мы смогли реализовать почти все алгоритмы, которые способны общаться между собой и запускаться на машинке в зависимости от пуступающих на нее комманд.
И сегодня мы разберем с вами ноду Autonomous, а именно: работа алгоритма PlanerWithObstacle Avoidance + Monte-Carlo Localization.
Данная модель в нашем ноде способна сама построить траекторию по полученным от пользователя координатам и следовать по ней, применяя также алгоритм Монте-Карло для более точной локализации машинки, ведь, как мы выяснили в предыдущих статьях, одометрия, получаемая с машинки, не точна.
Также мы сделали приложение, с помощью которого можно инициализировать ROS на Gazebo/Железке и начать с ними работать, выбрав необходимую ноду, запустить ее и необходимые нам алгоритмы.
Так как мы выбрали для данного поста именно алгоритм PlanerWithOA, то мы также будем задавать начальное и желаемое конечное положение машинки для построения траектории и следования по ней.
И, что самое интересное, для наблюдения за результатами, данные с машинки, такие как Estimated Pose (оцененное положение методом Монте-Карло), одометрия и построенная траектория, будут отображаться на отдельном графике.
А вот и наше приложение:
Сейчас я попробую подробно рассказать, что же это приложение позволяет нам сделать.
Так как мы уже сгенерировали ноду autonomous на машинке, то нам осталось лишь сделать следующее:
- Выбрать, к чему мы будем подсоединяться: (Gazebo/hardware), в данном случае нам интересна железка.
- Нажав на кнопку "Connect" - инициализируем ROS на выбранном устройстве.
- В правом верхнем углу отображено название нашей ноды : "autonomous1", справа от него есть иконка, которая сейчас прозрачна, это говорит о том, что нода не запущена.
Запустить ее можно, нажав на кнопку "Run", и тогда иконка станет зеленой, сообщив нам, что теперь нода работает. - Далее нам предстоит выбрать алгоритм, который мы хотим запустить на машинке. В данном случае: MCL + PlanerWithOA
- Выбрать пространство (карту), в которой наша машинка находится. Она отображается справа на графике. Машинка у нас будет кататься по квартире.
- Далее мы можем выбрать начальную позицию и конечную, но так как мы начинаем двигаться из нуля, то стоит лишь выбрать конечную позицию. Вы сможете увидеть более подробно, как это делается, в видео ниже.
- Теперь же нам остается лишь отправить наши сообщения (выбранный алгоритм, начальную и конечную точки) на железку, чтобы она смогла их обработать и начать движение по построенной ею же траектории.
- Нажимаем на кнопку "Draw" и наслаждаемся результатом =)
Теперь давайте же приступим к самому занимательному: просмотру видео, где наша машинка будет ехать из комнаты к выходу из квартиры:
Вы, наверное, могли заметить, что машинка в нескольких местах дергается.
Происходит это из-за того, что RRTPlaner выдает мало точек для построения траектории, из-за этого машинка и начинает "подтормаживать", ведь расстояние до следующей точки велико, и ей самой приходится решать, куда же ехать, чтобы достить её.
Поэтому нам также предстоит работа над заменой текущего RRT планера на более актуальный RRT* планер, который также учитывает размеры машинки, что позволяет получать более точные и правильные траектории.
Также нам предстоит работа над добавлением алгоритма SLAM (Simulteneous Localization and Mapping) в данную ноду, что позволит строить карты неизвестных помещений с помощью алгоритма обхождения препятствий или под управлением джойстика.
Надеюсь, Вам нравится наш проект и Вы будете дальше следить за нашими новостями!
Удачи и спасибо за просмотр!
Комментарии