Проект RACECAR - отлаживаем алгоритмы в Gazebo
Здравствуйте!
Мы продолжаем совершенствовать и дорабатывать наш проект RACECAR/J, начало которому положила статья моего коллеги: Проект RACECAR - разрабатываем автономную машинку
Обсудить все детали и тонкости проекта, узнать с какими проблемами, подводными камнями и, при помощи каких лайфхаков, столкнулись наши инженеры и как научились их обходить вы сможете посетив наш митап по разработке беспилотного транспорта, который пройдет 27 октября в Москве. Регистрация обязательна.
Сегодня я хочу рассмотреть работу Matlab/Simulink с симулятором Gazebo, в котором мы и будем испытывать нашу машинку.
Приступим же.
В качестве мира для симуляции была выбрана трасса, на которой и будем испытывать наши алгоритмы.
Но, конечно, перед тем, как запустить свою первую симуляцию в Gazebo, мы столкнулись с множеством проблем, которые нужно было решить. Подробнее об этом вы можете спросить в комментариях=) Чтобы уж сильно не загромождать статью.
И, что меня очень радует, нам даже удалось подключить к симуляции джойстик Logitech F710, с помощью которого можно управлять машинкой в симуляторе и, например, построить карту местности или просто поразвлекаться.
Теперь поподробнее расскажу о наших результатах:
- Алгоритм обхождения препятствий
Данный алгоритм был настроен и проверен на трассе в симуляторе Gazebo, и с его помощью машинка может спокойно проехать весь путь и, к примеру, собрать необходимые данные с лидара и одометрии, чтобы в дальнейшем построить карту местности. - Алгоритм чистого преследования для прохождения выбранного пути на трассе.
В данном алгоритме можно выбрать начальную и конечную точку назначения, между которыми и будет построен наилучший путь. - Алгоритм обхождения препятствий, совмещенный с чистым преследованием.
Он позволяет отслеживать путь одновременно избегай некоторые объекты и препятствия. Было также замечено, что данный алгоритм работает немного точнее, чем алгоритм выше - Построение карты с помощью встроенного MATLAB приложения SlamMapBuilder App. /
Изначально было протестировано получение сканов с лидара с помощью скрипта, но мы увидели в данном алгоритме некоторые проблемы и излишнюю нагрузку. Поэтому было решено получать все необходимые данные, в том числе сканы с лидара и одометрию, с помощью функций ROS: получении файлов rosbag, в которых и будут храниться данные. Так можно проще регулировать необходимое количество данных и даже получать одометрию.
Следует также сказать, что все алгоритмы работают в MATLAB'е, в Gazebo же мы наблюдаем симуляцию движения.
Вот наши данные и результаты:
Я добавил в мир для симуляции некоторые препятствия, чтобы было больше характерных точек для нахождения loop closure.
Также я немного изменил launch-файл модели, чтобы протестировать вторую карту: контур внутри трассы.
Данные карты были полученены с помощью rosbag файлов и алгоритма обхождения препятствий.
И вот результаты получшившихся карт:
Контур внутри трассы Трасса без препятствий
Трасса с препятствиями
Также есть возможность, как описано выше, получить карты, управляя машинкой с помощью джойстика. Но, так как алгоритм обхождения препятствий не требует вмешательства оператора, был выбран именно он.
А сейчас мы начинаем работу над алгоритмами локалазиции, которые и покажем вам в дальнейших статьях.
Удачи и спасибо за просмотр!
Комментарии