Как я построил беспилотный автомобиль, который ездит по моему дому
Я очень рад написать этот пост, так как он посвящен тяжелой работе, которую я проделал за последние 4 месяца.
Фон и мотивация
Я провел большую часть своих последних 2 лет, изучая машинное обучение, сверточные нейронные сети и робототехнику. Я сделал это с помощью онлайн-курсов, личных проектов и заданий по наставничеству/обучению. Мое последнее преподавательское задание было инструктором по самоуправляемым автомобилям. Там я провел около 4 месяцев, посещая занятия в классе по подкомпонентам, связанным с разработкой автомобиля с автоматическим управлением.
Мои наставнические и обучающие задания дали мне хорошее представление об основных теоретических концепциях, которые лежат в основе создания автомобиля с автоматическим управлением. Они пробудили во мне желание работать над реальным автомобилем, а не ограничивать свой опыт теорией. Однако я не был уверен, что действительно смогу его построить.
Какую аппаратную платформу взять за основу? Какой программный стек использовать? Какие датчики купить? Сколько это будет стоить? Сколько времени это займет? Смогу ли я сделать это сам? К кому обратиться за помощью, если я на чем-то застрял? Задача казалась слишком сложной, чтобы браться за нее.
При поиске подсказок в Интернете я наткнулся на MIT RACECAR. В нем размещены самые современные датчики и вычислительное оборудование поверх радиоуправляемого автомобиля в масштабе 1/10 (что означает 1/10 размера реального автомобиля).
Гоночная машина Массачусетского технологического института
Эта платформа используется в нескольких курсах в Массачусетский Институт Технологий. Один из таких курсов Робототехника: наука и системы. Этот курс обучает основам робототехники — восприятию, планированию движения и контролю. Ассистенты преподавателя этого курса были достаточно любезны, чтобы поделиться своим опытом работы на этой платформе в серия постов в блоге. Преподаватели курса открыли исходный код некоторых компонентов программного стека и всего аппаратного стека. Вы можете найти их здесь.
Есть и другие проекты, вдохновленные MIT RACECAR, в которых есть некоторая документация, которая поможет вам построить автомобиль, по крайней мере, в том, что касается аппаратной части. Это было идеально для меня. Сообщения в блогах и онлайн-репозитории не есть вся необходимая информация, но достаточная для начала.
Сроки и бюджет
Стоимость MIT RACECAR составляет около 4500$!!!. Это было выходом из моего бюджета. Взяв пример с других подобных проектов, я решил, что могу сделать некоторые замены оборудования, чтобы снизить стоимость до менее 1000 долларов (подробнее об этом в следующем посте).
По времени я рассчитывал, что это займет у меня около 2 месяца для разработки этого автомобиля. Мне потребовалось больше времени, чем предполагалось, чтобы полностью ознакомиться с Операционная система робота или сокращенно ROS, которая составляет основу программного обеспечения. Неожиданные отказы компонентов и задержка с получением датчиков (их пришлось импортировать) еще больше увеличили время разработки. Я также потратил немало времени, выясняя, как планировать траекторию движения и управлять двигателем автомобиля. Любой автономный робот с учетом его текущего местоположения и цели должен планировать путь с учетом своих физических ограничений. Автомобиль имеет конечный радиус поворота и не может свободно двигаться во всех направлениях. Это накладывает ограничения на пути, реализуемые автомобилем. Почти все планировщики пути с открытым исходным кодом предназначены для всенаправленных роботов, т.е. роботов, которые могут свободно двигаться в любом направлении. Это была сложная часть, но я в конце концов понял это (подробнее об этом в следующем посте). Учитывая все эти факторы, на разработку этой машины у меня ушло 4 месяца!! Вдвое больше времени, чем я запланировал!!
Результат
Результат стоил потраченного времени Посмотрите это видео, где я заставляю машину бродить по моему дому:
Вы можете видеть, что автомобиль имеет возможность двигаться назад и корректировать себя, если он промахивается или сбивается с пути. Я особенно горжусь тем, как он выполняет серию поворотов вперед и назад, чтобы развернуться на 180 градусов после достижения одного конца дома.
Следующий
Я последую за этим постом серией сообщений в блоге, описывающих мой опыт разработки различных подсистем этого автомобиля. В частности, я буду вести блог на эти темы:
- Другие подобные проекты, форумы, учебные пособия и сообщения в блогах, которые помогли мне в этом процессе. Видеть эта почта.
- Замена оборудования для снижения стоимости до менее 1000 долларов. Видеть эта почта.
- Операционная система робота (англ.РОС), средства моделирования и визуализации
- Пакеты с открытым исходным кодом для локализации, планирования пути и контроля
- Выяснение части проекта, связанной с планированием пути и управлением двигателем.