История о том, как мы делаем беспилотник, или другой подход в автономном управлении

Наша компания занимается рядом направлений, основные: курьерское обслуживание интернет-магазинов через фулфилмент и продажа облачного решения для автоматизации логистики. Наш алгоритм строит оптимальные маршруты для компаний с большим количеством точек доставки в течение дня.

История о том, как мы делаем беспилотник, или другой подход в автономном управлении

Этот алгоритм мы используем и у себя в курьерке, поэтому количество опозданий наших курьеров во временных окнах составляет не больше 3% И оба этих продукта отлично уживаются в рамках одного личного кабинета для клиента.

Нашей сильной стороной всегда была ИТ-составляющая. Выделив полтора человека, был создан отдел, который занимается “Розовым замком, или заставь Приус ехать куда глаза глядят” и более приземленной технологией (там деньги ближе) - “автоматизация внутрицеховой логистики с использованием беспилотных электротележек”, которые перемещаются по “виртуальным” рельсам, прототип которой делается для конкретного заказчика, в следующей статье расскажу про это.

10 месяцев до...

Каким-то абсолютно случайным образом в голове возник вопрос: «Беспилотник, а как это?» Ну, типа, все знают (но не осознают), что они почти есть. Крупнейшие компании пачками скупают стартапы, чтобы приблизить себя хотя бы к уровню автономности 3+. Яндекс вовсю хвастается своим флотом Приусов, которые отлично ведет себя на улицах Москвы и Лас-Вегаса. Всё это заставляет чувствовать себя причастным к совершенно феноменальному событию. Будущее наступило — прочувствуйте это!

Так на сколько сложно прямо здесь и сейчас создать автомобиль, который будет оборудован почтамтом в кузове, ездить по нашему оптимально созданному маршруту без «кожаного мешка» за рулем, сосущего 50% расходов?

Автономный автомобиль 3 уровня (всего их 5).

В интернете достаточно много инфы на тему того как он работает, для чего нужны радары, как крутить рулем, как работают лидары. Т.е. там нет прорывных и невообразимых технологий, доступных только большим компаниям. Есть куча опен сорных решений, алгоритмов машинного обучения и т.д., но..нет данных! Данных, по которым нейронка могла бы обучаться, очень много данных. Значит, вот оно — надо только собрать данные, очень много данных!

Ну и отлично, погнали за данными!)

Для начала надо научиться забирать с автомобиля показатели угла поворота руля, газа, тормоза. Далее синхроним это с видео потоком.

— Нейронка, кушать подано, учись!

У авто есть стандартный разъем OBD2, по которому гуляют все показатели борт компа, на рынке есть куча китайских CAN сканеров, которыми можно все это считать. Но нам нужно не просто видеть в каком-то интерфейсе цифры. Нам нужно разработать свою среду. Найти побайтную историю в нужном проводе, прошкалировать, прогнать через библиотеки, записать и так 30 раз в секунду. Поэтому первое вложение в этот проект — это покупка CAN адаптера фирмы simac за 200е (заказал с СПБ). Стали ковырять VW passat и поняли, что можем, но должен быть тестовый образец, желательно более френдли для нас. Изучив форумы, мы нашли Toyota и Honda. Выбор пал на Prius, так как у него есть ассистент задней парковки(наличие штатного сервопривода), джойстиковое переключение передач и батареи, которые будут питать неслабый комп. Prius-done

Спустя 5 месяцев, как мы вникли в тему…….

Мы, как новички в сфере автономных транспортных средств, до последнего не хотели верить, что беспилотный автомобиль в привычном понимании его наиболее известных разработчиков, тот, который набил всем оскомину тем, что упорно не хочет выезжать на дороги, – это такой себе трамвай, виртуальные рельсы для которого заранее прокладываются всевозможными сателлитами технологии. Малые и немалые компании стремительно картируют с сантиметровой точностью города, дороги, тротуары, разметку, полосы, знаки, ямы и наносят на эти карты нужные им рельсы. Только представьте, акулы беспилотного вождения мечтают не о том, чтобы светофоры безотносительно страны, региона и формы распознавались автономно «мозгами» автомобиля, а о том, чтобы каждый светофор в мире передавал в единую сеть беспилотников информацию о том, какой сигнал он сейчас высветил. Мы воображаем такую главенствующую концепцию как слепого человека за рулём, которому некий всезнающий и всеведущий штурман неустанно описывает окружающую обстановку. Присмотритесь к неуклюжему поведению современных беспилотников в едва нетривиальных условиях загородного шоссе, вообразите, что за рулем слепой, а рядом словесный поводырь, - у них много общего.

Любой специалист в интеллектуальных технологиях знает, что медийно раскрученная нейронная сеть глубокого обучения, натасканная на светофор или знак в России, вполне вероятно не справится с таковыми в Китае, и, ладно бы, но разные поколения светофоров уже представят для нее серьезную преграду. Да-да, дело в форме, ориентации, креплении, размерах огней и, вы удивитесь, фоне. И, да-да, понадобится еще одна сеть, чтобы сегментировать изображение и распознать, где на изображении светофор, и ещё одна, чтобы узнать нужный ли это светофор, и еще одна, чтобы удалить фон, и т.д., хм, и ведь это только сети по делам светофоров.

«..Так а что же в этом плохого?! – витает немой вопрос. – Роботы действуют иначе людей, в чем их плюс, а люди иначе роботов – в чём их, – ну, а вместе так складывается высокоэффективный симбиоз». Что ж, неужели назревает любопытнейшая дискуссия? Но как сверять часы её участникам, где брать объективные суждения, и кто, наконец, выступит экспертом, который уже изучил вдоль и поперек все возможные беспилотные решения,

кто знает, что та или иная идея заведомо бесперспективна или наоборот, кто протестировал и собрал все необходимые данные и статистики по беспилотникам всех уровней автономности?

Как бы то ни было, мы всё же ясно понимаем, что сейчас, в 2020 году, наша назревающая дискуссия обречена на открытое окончание, и поэтому всем её участникам, находясь в кондициях интенсивного творческого поиска, остается полагаться только на технологическую и научную интуицию.

И вот наша интуиция сказала: «Нет! Мы не хотим трамвай! Давайте пытаться, хотя бы немного – самую малость пытаться искать решения с качественно новыми свойствами. Наверняка, не обязательно вливать в беспилотные технологии миллиарды долларов, а малые творческие начинания и стартапы могут здесь на что-то претендовать». С такого вот посыла, собственно, и началась та плохо наблюдаемая работа, которая скрыто кипит в наших головах в любом доступном месте и в любое неожиданное время.

Первичные, неизбежные этапы выбора и поиска удобной для экспериментов машины, платформы и языка программирования, сопряжения с автомобильным интерфейсом, синхронизации извлекаемых данных и видеопотока, а потом и общего логгирования нашей мини-системы мы прошли. Пока проходили, задумались: а выявлено ли, скажем так, единое начало, базовый паттерн управления автомобилем? Можно перефразировать даже иначе: в чём заключается инвариант управления автомобилем, независящий от страны, дороги, времени суток, погоды и т.д.?

В поисках ответа у нас небезосновательно родилась и главенствующая идея или, если угодно, стратегия создания беспилотника – найти и удалить все лишнее, прямо как с иглой Кощея, как нам кажется.

Ну, то есть, представьте, Вы озаботились разработкой беспилотной системы 2го уровня автономности. Как теперь конкретизировать суть техническую задачу на неё: слежение за окружающим автомобильным потоком, дорожной разметкой, возможно за знаками и сигналами светофоров, прием и учет данных, поступающих от системы навигации, планирование простейшего локального маршрута и генерация сигналов управления к органам автомобиля? Думаем, да. И Вы легко решите такую задачу, что несомненно, но удастся ли от нее простым наращиванием технологий прямо перейти на 3й уровень автономности? Думаем, нет. Ну, Вы, разумеется, сможете перейти, но наращивание не будет простым. И причина в том, что озвученная постановка задачи симптоматическая, закономерно в подавляющем большинстве случаев ведущая нас к нахождению и использованию таких же симптоматических решений.

Вряд ли здесь есть явная логическая связка, но, размышляя как раз над методами научения компьютерного мозга беспилотника отдельным способностям, мы в итоге и пришли к тому, что, как бы абсурдно это ни прозвучало, сначала мы просто обязаны научить его банально ехать – то есть ехать, куда, что называется, глаза глядят. Это абстрактная, кажущаяся на первый взгляд совершенно бессодержательной задача представилась нам наиболее заманчивой и интересной к решению. Любопытно, но путь его отыскания начался с того, что мы разглядели подсказку в самой формулировке и, собственно, когнитивном искажении, глубоко в ней сокрытом. Нам всем привычно кажется очевидным, что мы едем туда, куда направлен наш взгляд, но, если внимательно-внимательно призадуматься, точно ли это не покажется Вам странным или хотя бы слегка преувеличенным. Конечно, есть лучший и показательный контрпример во всестороннем использовании мобильных телефонов за рулем, но мы попробуем разобраться, так сказать, в физике процесса.

Предположим, Вы оказались за рулём на бесконечной площадке, устланной серым однотонным асфальтом без всякой разметки под ровным безоблачным голубым небом, и Ваш внутренний голос говорит вам: «Едь, куда глаза глядят!». И вот Вы уже долго-долго жмёте на газ, видимость километров 10 во все стороны, и ничего вокруг по определению не меняется, нет ни машин, ни людей, ни деревьев – вообще ничего. За исключением того, что Вы, как бы это так помягче сказать, в шоке от обстановочки, спрашивается, когда Вы перестанете пристально смотреть вперёд и при этом продолжать ехать? А ещё интересно, будете ли Вы хотя бы минуту непрерывно смотреть вперед перед собой в лобовое стекло, если при этом дать Вам исключительную уверенность в том, что ничего, абсолютно ничего не изменится до заката, и Вам нужно продолжать движение.

Физика, в конечном счете, такова, что наши глаза следят за изменениями окружающей обстановки и появлением различного толка препятствий и указаний, но никогда, фактически, не смотрят непосредственно вдоль курса параллельно дороге (возможно, мы рассматриваем машину перед нами, ямы, лужи и т.п., но это только подтверждает сказанное). Из как такового взгляда на курс практически не извлекается никакая полезная информации, а вся нужная уже получена и записана в память при прошлых взглядах, что в умолчании удобно определяет простой непрерывный паттерн или инвариант вождения – путь свободен, можно ехать, и достаточно лишь изредка убеждаться в корректности движения, чтобы уверенно его продолжать. Но как только сопутствующая система внимания распознает заметные ей изменения в окружающей обстановке, взгляд направляется к ним, и дальше – действуем по обстоятельствам. Мы догадываемся, что источниками изменений также выступают правила дорожного движения, интересы других участников, как таковое следование маршруту и т.д.

Это не фильтр, это разность 5 кадров с подсветкой на движущиеся предметы.
Это не фильтр, это разность 5 кадров с подсветкой на движущиеся предметы.

Итак, в настоящий момент мы сосредоточились на разработке системы внимания, независимой от автомобиля и данных о его состоянии – только по картинке. В основу, ясное дело, мы полагаем наблюдения за вниманием водителя и создание и обучение на основе таких наблюдений некоторой сети. Но даже до выхода водителя на сцену здесь не обошлось без трудностей! Необходимая предобработка видеопотока по текущему и предыдущим кадрам, подсвечивающая изменяющиеся области на видеокадрах, потребовала существенного ускорения вычислений и подключения графических процессоров (мы, на самом деле, давно этого ждали). Условившись, еще на самом старте, на синхронной скорости работы системы не менее, чем в 16 обновлений в секунду, что соответствует временному интервалу, отводимому на полный цикл вычислений в 62,5 мс, мы столкнулись с тем, что уже одна только предобработка, если она выполнялась на центральном процессоре, занимала из них до 50 мс. Так мы повернули свой взгляд в сторону технологий NvidiaCUDA, с которыми до этого никто из нас не был в полной мере знаком, но, усердно покурив мануалы, мы покорили первый оптимизационный вызов, и нам удалось сократить время непосредственных вычислений функций предобработки в 8-10 раз.

История о том, как мы делаем беспилотник, или другой подход в автономном управлении

Теперь мы готовы следить за взглядом водителя, но, очевидно, его необходимо геометрически связывать с плоскостью видеокадров, получаемых даже хотя бы с одной видеокамеры. Неужели, придется измерять взаимное положение зрачков водителя и камеры, просить его держать голову неподвижно и направлять взгляд только движением глаз, вешать на беднягу акселерометры, очки с мини-камерами и потом еще подбирать отдельное программное обеспечение для слежения за взглядом? Мы придумали, как обойти все эти лишние нагромождения, но об этом в следующий раз.

Рассказать в следующей статье про электротележку на виртуальных рельсах? 
Да
Нет
​экспериментальная машинка и то, что хотим автоматизировать) 
​экспериментальная машинка и то, что хотим автоматизировать) 
66
16 комментариев

Комментарий недоступен

3
Ответить

Хорошо) в следующий раз будет проще 

1
Ответить

Тепер все по полочкам. У мня много вопросы были, коротка ясно, понятно. Спасибо, ждем еше , 🤛🏼

Ответить

Не то чтобы коротко) но спасибо

1
Ответить

вот серьёзно, как вы собираетесь бороться с waymo, который в это может вложить 100 ярдов. я догадываюсь, что яндекс просто обопрётся на госзапреты (кстати по улицам москвы у него авто до сих пор не ездят, единственный ролик был на глухой улочке возле яндекса), но на что вы надеетесь???

Ответить

Вообще не собираемся) 

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

Во-вторых, это же офигеть как прикольно, заниматься беспилотником, быть в этом информационном поле и наращивать свою экспертизу. Это приводит, как я уже писал, к более простым проектам и близким деньгам (карьерные перевозки, внутризаводская и цеховая логистика и т.д.) 

Кстати, Яндекс только на пол шажочка позади Wayome

1
Ответить

Интересно продолжение...

Ответить