Как мы обучали беспилотные машины в симуляции
Однажды на конференции CES 2022 был представлен беспилотный гоночный болид «Формулы-1», управляемый ИИ. Стейкхолдеры нашей венчурной студии решили сделать нечто подобное, но для начала используя менее дорогие машинки.
Итак, в роли технического директора венчурной студии я участвовал в проекте по созданию гоночной игры c машинками для картинга в смешанной реальности.
Идея заключалась в том, чтобы игрок мог, сидя у себя дома в любой точке мира, управлять настоящими гоночными картами и соревноваться с другими игроками и ИИ. Задача состояла в том, чтобы разработать ИИ-автопилот для машинок, адаптируя его в систему для устранения задержек при передаче данных.
Пока одни инженеры обвешивали машинки лидарами, радарами, GNSS (Global Navigation Satellite System), камерами и датчиками для измерения скорости, температуры двигателя и т.п., а другие инженеры строили трассу для игры, ИИ-инженеры решили не терять время и начали обучать беспилотники в симуляции без использования настоящих машинок и готовой трассы.
Обычно беспилотники обучают на реальных данных с использованием синтетических, имитируя различные погодные условия, время суток, типы поверхностей и уровни освещенности. В таком случае датасет для обучения получается больше и разнообразнее. Мы же решили попробовать обучить машинки используя только синтетические данные.
Сначала мы разработали базовый пайплайн обучения с подкреплением (RL) и научились решать задачу Reward Shaping на соревнованиях AWS DeepRacer (кстати, вошли в топ-4% мирового рейтинга), чтобы понимать, какую функцию вознаграждения использовать для бейзлайна. В итоге мы наказывали машинку за врезания в края трассы и поощряли за быстрое прохождение круга.
Далее мы начали изучать среды симуляции: Carla, LG SVL, Gazebo и даже рассматривали обучение в GTA 5. В результате анализа мы выбрали Carla, так как эта среда поддерживает различные сенсоры, собственные карты и хорошо интегрируется с ROS (Robot Operating System).
В среду симуляции мы встроили интерфейс OpenAI Gym для обучения с подкреплением, поместили модель настоящего гоночного карта, модель трассы и создали для него виртуальные лидары. Виртуальные лидары позволили создать для беспилотника дополненную реальность «вида сверху» (bird’s-eye-view) для более точного обучения. Мы организовали систему хранения данных из различных сенсоров и настроили необходимые ML-пайплайны.
Также мы использовали техники curriculum learning, постепенно обучая машинку сначала не врезаться в края трассы, потом избегать врезаний в другие машинки и следом учиться обгонять машинки. В результате мы получили систему для асинхронного обучения нескольких агентов в симуляции. Мы обучили около сотни агентов на одной трассе за 5 часов, выбрали лучшую модель и встроили ее в реальный карт.
Мы наблюдали, как настоящая машинка для картинга, обученная только в симуляции, поехала по реальной трассе. Беспилотник резво входил даже в крутые повороты на скорости до 40 км/ч. Также мы попробовали запустить машинку на других трассах — сработало! Модель хорошо управляла картом даже на незнакомых трассах.
К сожалению, при скорости более 40 км/ч машинка теряла управляемость — все-таки физика берет свое и обучение в симуляции не учитывало неровность асфальта и другие мелкие детали. Нас ожидала масштабная работа над Sim2Real transition.
Но в итоге мне и другим игрокам удалось, сидя дома, через браузер управлять настоящей машинкой, соревнуясь с другими машинками, управляемыми ИИ. Это были незабываемые ощущения, которые невозможно передать словами.
Не у всех стартапов сходится экономика, чтобы он оказался прибыльным, но зато нам удалось разработать собственный фреймворк для обучения любых машинок в симуляции, а также выступить с докладом на различных конференциях. Это был крутой опыт с Reinforcement Learning и Robotics, который определенно поможет в будущих проектах.
#кейсы
Post #89
689
- 👍 5
- 🔥 3
- 👏 3
- 🏆 3
- ❤ 1