Привет, Хабр!

В общем, есть экспериментальный трамвай, который в рамках испытаний иногда ходил по одному из маршрутов. Автопилот тестируется на закрытой территории, а в городских — активный помощник водителя вагоновожатого. Водитель трамвая едет с руками на управлении, но тестируется именно автономный автопилот. Трамвай визуально не отличается от обычного, потому что мы вместе с производителем запихали приборные блоки далеко под панели и вывели интерфейсы на стандартные экраны. Единственное — у него можно заметить несколько камер под лобовым стеклом, спрятанный под обшивку радар и GPS-датчик на крыше. Да, ещё иногда для целей отладки мы привешиваем лидар.

image

За время испытаний мы узнали, что правила дорожного движения и реальная обстановка на дорогах даже для трамвая — это очень разные вещи.

Вообще трамвай — это идеальная «песочница» для полного автопилота автомобиля. Мы уже сейчас его реализовали. Наши читы:

  • Мы знаем маршрут и имеем гарантию, что наше ТС никуда с него не денется.
  • Можно проехать заранее и разметить точки со светофорами и прочим, чтобы системе было легче их распознавать.
  • Трамвай не может перестроиться из полосы в полосу. Большая часть нагрузки автопилота авто завязана на «куда сейчас отрулить» и тысячи сценариев, а у нас отрулить некуда.
  • Тормозит он почти мгновенно и немного резко, то есть прогнозы движения других автосредств на дороге менее сложные.

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

Стадии тестов


На первых двух этапах мы делали автопилот на закрытых территориях (завод\депо\площадка перед депо). Трамвай умеет двигаться по маршруту, останавливаться на остановках и открывать двери, пропускать пешеходов, машины и останавливаться перед препятствиями. Вместе с тем мы разрабатывали ассистента водителя, который уже тестировался и в городских условиях. Ассистент состоит из двух основных подсистем. Ограничение скорости (ОС): следит за тем, чтобы водитель не превышал скорость (например, по правилам технической эксплуатации трамваев на мостах нельзя ехать быстрее 20 км/ч, а в тоннелях — 10 км/ч. Стрелки необходимо проходить на скорости 5 км/ч и т. д.). Другая — автоторможение (АТ), следит за тем, чтобы водитель никого не задавил: сбрасывает скорость (вплоть до полной остановки) перед опасностями на пути, красными сигналами светофора, закрытыми стрелками. При этом управление трамваем происходит совместно с водителем. Это позволило нам плавно испытать разные части беспилотника в последовательно более тяжёлых условиях.

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

Те самые люди


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

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

Проблема в том, что трамвай часто пересекается с людьми. В Москве люди стоят прямо на краю пути на платформе и, похоже, покачиваются на ветру.

Наша модель предотвращения столкновений делает условно следующее:

  • Определяет препятствия и рассчитывает их траектории движения, возможное поведение.
  • Определяет моменты пересечения с нашей траекторией и время до этого.
  • Снижает скорость заранее и уведомляет или тормозит экстренно.
  • Всё это дополняется поиском радаром препятствий впереди.

image

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

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

Первые релизы прошивки не могли подъехать к остановке: непредсказуемые люди стояли слишком близко. Водитель трамвая отключал ко-пилот в той поездке на каждой остановке.

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

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

У нас остановки — на уровне земли (с учётом рельефа вдоль маршрута), и мы уже умеем хорошо предсказывать движение. Не зная этой особенности, мы попросили на подготовке ещё первого прототипа в 2018-м сделать экстренное, рассчитывая на обычную жёсткую остановку. Я ударился и потом улетел в салон. Водитель сказал: «Я же предупредил: держитесь крепко». Пассажиры такое застают очень редко; уверен, что при экстренном торможении почти весь салон упадёт.

Светофоры


Когда водитель приходит на новый маршрут, его в него «вкатывают»: одну или несколько поездок он по новому маршруту совершает с опытным вагоновожатым, который этот маршрут сотни раз откатывал. Также и мы «вкатываем» системы в маршрут, заранее его размечаем, что обеспечивает высокую точность работы системы. Вторая неприятная особенность маршрута — водители совершают те же ошибки, что автопилот на первых испытаниях без разметки маршрута, пытаясь распознавать знаки и управлять своим движением. Это вселяет надежду. Разметкой маршрута удалось добиться точности.

Знание точного положения светофоров позволяет нам, во-первых, понизить требования к точности детектора (если он ошибётся там, где 100 %-но нет светофора, — не очень критично), во-вторых, в принятии решения о реакции на положение светофора. На конкретном перекрестке мы точно знаем, какой из светофоров относится к нам (а какой не относится), где у него стоп-линия, сколько у него период зелёного, и какой именно сигнал для нас является разрешающим.

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

Если это запрещающий сигнал, то нужно рассчитать время прибытия к светофору и возможную скорость.

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

image

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

Итак, если водитель не реагирует на запрещающий светофор, то трамвай сначала начнёт снижать скорость, а потом мягко затормозит.

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

Перекрёстки


Следующая порция горестного качания головой постигла нас на перекрёстках в часы пик.

Трамвай, который ещё утром проходил перекрёсток на ура, тупил.

Выяснилось, что на загруженном перекрёстке в головах у водителей — нейросети, в которых приоритет «проехать быстрее» возобладает над безопасностью. И они притираются почти вплотную к боку трамвая. Движение означает высокую угрозу столкновения.

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

image

Вторая особенность — идиоты на дорогах, которые вылетают сбоку со второстепенных и мчатся дальше.

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

Как прийти к светлому будущему


Первый уровень — избегание столкновений, ассистирование водителю, реагирование на яркие угрозы быстрее него.

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

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

И светлое будущее — полностью автономный трамвай.

Монтаж опробован на «Витязе» и «Богатыре» (этот трамвай ещё не встречается на дорогах). У них всё управляется через CAN-модуль сопряжения. Никаких неродных модулей в кабине, всё через системные интерфейсы. Оборудование — камера на стекле.

image
Используем POE-камеры для промышленного зрения с разными объективами (вперёд нужно смотреть далеко, по бокам — широко). Радар интереснее: обзор — 160 градусов, дальность — 150 метров, пробивает дождь. Ещё нужны высокоточный датчик GNSS для навигации и блоки интеграции с самим трамваем. Обработка происходит на месте, вычислительный блок 65 TFLOPS (выглядит, как большой радиатор с портами). Как видите, это вам не трактор «Беларусь» для автопилотирования, тут можно взять оборудование подороже.

Москва и другие города движутся к лёгкому рельсовому транспорту. Есть примерно 300 развитых трамвайных сетей в мире. Лучше всего они сделаны в Китае, России, Турции, развиваются и в Европе. В Китае сумасшедшее развитие трамвайной сети, поскольку она проходит по бюджету региона, а метро — по федеральному. Бюджеты региона проще выделяются и активнее, чем федеральные. На днях мы заключили контракт с FiTSCO — крупнейшим китайским оператором рельсовых дорог, запускаем нашу систему в Шанхае, и у нас будет первый кейс китайского трамвая.

В России — 1 500 трамваев. В мире — 30 тысяч. Производство — всего 2 500–3 000 в год, то есть сейчас мы будем оснащать вторым или третьим уровнем уже имеющиеся трамваи, а потом перейдём на интеграцию с производителями.



Вы уже знаете про наши ко-пилоты для комбайнов и тракторов, теперь узнали про ко-пилот трамвая. Ещё есть для маневрового тепловоза. Вся эта техника по объёму рынка — треть автомобильного. Не жалкие проценты, а треть. И на этом рынке сейчас с такими технологиями только мы. Так что очень интересно не просто наблюдать, как меняется мир, а менять его.

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