8

Мой автономный гоночный автомобильчик. Часть 0.

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

Если кто-то подумал, что мне не дают покоя лавры небезызвестного Джорджа Френсиса Хоца aka Geohot, то он сильно ошибается. Стимулом и основанием для работы явилась весьма прагматичная причина: в университете, где я волею судеб работаю, требуют не только учить студентов, но и писать “научные статьи”. Заниматься переливанием из пустого в порожнее на какую-нибудь скучную тему ну прямо сильно не хотелось, и я решил поискать что-то свежее, пока не избитое, но достаточно мейнстримное. Соответственно, нашел тему автономных транспортных средств, и увидел, что кое-что здесь можно сделать и коллективом из одного человека.

Договоримся, что пока оставим за скобками полноразмерные автономные автомобили, которые создают waymo, baidu или yandex. Эта задача слишком объёмная, чтобы решать её в одиночку. Когда мы строим гоночный автомобиль (полноразмерный или масштабную модель) всё становится несколько проще: а) трек один и замкнут, б) все едут в одну сторону, в) количество нестандартных ситуаций на дороге сводится к минимуму, г) явные измеримые критерии качества (кто быстрее, тот и молодец).

С начала этого века исследовательские группы и отдельные энтузиасты понастроили весьма большой объём автономных транспортных средств (я не буду тут расписывать уже навязшие в зубах уровни автономности; кому надо - сходит в википедию за ними; здесь и далее будем считать автономными транспортными средствами такие, на траекторию движения которых оператор влияет лишь опосредованно, а не прямыми командами). Их все можно поделить на такие группы:

1. “Жёстко запрограммированные” - устройства, жёстко следующие заложенной программе движения и минимально контактирующие с внешним миром (т.н. “управление без обратной связи”); тупо едут по заданному маршруту, описанному в терминах “10 метров прямо, затем на 30 градусов налево, потом 3 метра прямо”.

2. “Ездящие по линии” - устройства, которые двигаются по заранее физически созданной (чаще - нарисованной, иногда - в виде каких-нибудь инфракрасных меток или радиометок), но заранее не известной, траектории; устройства очень примитивные, в лучшем случае реализуют управление на PID контроллере, потеряв траекторию становятся беспомощными, сильно ограничены по скорости перемещения.

Мой автономный гоночный автомобильчик. Часть 0. Автономные авто, Радиоуправляемые модели, Робототехника, Barc Project, Видео, Длиннопост

3. “Навигаторы” - устройства, определяющие собственное местоположение относительно препятствий, в идеале - формирующие топологическую карту пространства; могут произвольно “шататься” с целью исследования окружающего пространства или поиска заранее определенных объектов; если у вас есть робот-пылесос, то, скорее всего, это он и есть.

4. “Маршрутные” - самостоятельно простраивают маршрут между заданными путевыми точками (как правило, используется GPS). Это прям отдельная отрасль, в которой совсем другие размеры, подходы и цены. Вот, например, эти ребята (они неверотяно круты, хотя к ним у меня тоже есть вопросы, но об этом как-нибудь позже):

Кроме того, обнаружились интересные работы, связанные с управлением машинками при наблюдении “снаружи”, но мне это показалось не очень масштабируемо и спортивно, хотя результаты там есть впечатляющие:

В итоге сформировалось понимание того, что я хочу от автомобиля:

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

2. Независимость от GPS (в помещении не особо поездишь).

3. Способность оставаться в пределах заданного (не всегда очевидным образом, например, конусами) кольцевого трека.

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

5. Способность вернуться на трек после схода при наличии его в пределах видимости.

Возможность реализации систем контроля тяги и стабилизации.


Неплохой списочек, правда?


Но, как говорится, всегда найдется человек, который наступил на эти грабли до тебя, и я начал искать уже конкретный проект. И нашёл такой! Не могу сказать, что все пункты там закрыты идеально, но тем лучше - будет о чем самому написать (дописать). Проект называется Berkley Autonomous Race Car ( http://www.barc-project.com/ - не реклама!) и выполнен на основе RC шасси масштаба 1/10. Всё неплохо документировано (хотя, по факту, это не пошаговая инструкция, а, скорее, немного разрозненный набор заметок про сборку) и даже есть большой репозиторий на github. Вообще говоря, это, скорее платформа для доработок и развития типа того, что представлено на видео ниже, но главное - оно живое!

Вообще говоря, есть и читерский вариант: можно купить готовое шасси от JetsonHacks. За 1400$, ага. Без учета самого nvidia jetson. Или готовый проект от MIT (по сути, то же самое) за 4000$.

Мой автономный гоночный автомобильчик. Часть 0. Автономные авто, Радиоуправляемые модели, Робототехника, Barc Project, Видео, Длиннопост

В следующей серии (если найдутся желающие почитать, конечно): почему нельзя просто взять и собрать машину по инструкции с github, как автомобиль видит мир, и немного трёбуквенной матершины )

Дубликаты не найдены