Один из ранних прототипов, использовавшихся для тестов.
Сразу скажу: крутейший он потому, что единственный из доведённых до опытной эксплуатации автопилотов третьего уровня. А единственный доведённый до опытной эксплуатации он потому, что без наработок по автопилотированию трамваев и чего-то ещё в этот рынок соваться просто нет смысла. Тепловозов довольно много, задача интересная и важная для производств, но не окупается как отдельная. Мы знаем про наработки на эту тему у НИИАС и Siemens, но не знаем, чтобы их трамваи где-то ездили в городской среде, а локомотивы перевозили реальные грузы.
Поскольку у нас уже достаточно много различных наработок и решений с беспилотными трамваями в России и Китае, мы решили провести эксперименты с одним крупным предприятием с большим парком маневровых тепловозов, используемых для доставки сырья к цехам.
Там проблема в том, что движение тепловоза регламентируется множеством сигналов, положениями людей и объектов инфраструктуры, а также командами диспетчера. Машинист должен оставаться предельно внимательным всю смену (примерно 12 часов), в том числе и ночью. В результате он рано или поздно либо пропускает что-то и попадает в аварию, либо кого-то сбивает. Это жизнь, травмы на транспорте случаются, но конкретно в этих ситуациях можно позволить себе ставить на тепловозы радары, потому что встаёт не просто один тепловоз, а целое крупное предприятие. Надолго. Предотвращение столкновений и автопилот могут сильно снизить нагрузку на человека в кабине, и тогда производства не будут вставать.
Модуль на картинке — один из ранних прототипов блока камер, с которого мы начинали. С этого момента он претерпел значительные изменения, но всегда интересно посмотреть, с чего всё начиналось. Сейчас расскажу, как вообще роботы способны ориентироваться на станциях, потому что задача вообще-то нетривиальная.
Наш автопилот обеспечивает безопасную работу в сложных погодных и климатических условиях и при любой освещённости.
Вот что ставится на тепловоз:
Текущая редакция в железе блока камер сильно отличается от первых прототипов.
Три камеры нужны потому, что двигаться эта конструкция может довольно быстро, тормозной путь в отличие от трамвая большой (трамваи встают почти на месте в аварийном случае), груз сзади едет крупный. Поэтому надо заранее прогнозировать ситуацию. Очень часто нужно считывать показания светофоров вот в таких сюжетах:
Поэтому имеются три камеры:
Вот что они видят:
Плюс радар.
Сетап нужен довольно дорогой, около 15 тысяч долларов. Это не поставят на автомобиль, потому что комплекс не должен стоить дороже машины. Но именно на тепловозах разворачивать подобный программно-аппаратный комплекс разумно, и он окупается. И задача другая. Гугл на последней конференции показывал свой полный набор сенсоров, который, по его мнению, должен стоять на каждой беспилотной машине, там цена сильно больше 100 тысяч долларов. И у них, и у нас есть конвергентное дублирование: если одна из подсистем откажет, то можно будет доехать до депо (сервиса) на остальных.
Почему начали в России
Потому что мы в TOP-3 по сельхозтехнике, в TOP-5 по железнодорожной, и у нас одна из самых развитых трамвайных сетей в мире (но дальше первой десятки, сравнить вот хотя бы с Китаем). Мировой рынок тракторов, комбайнов, трамваев и тепловозов — треть от автомобильного. Треть. А у нас идеальная страна для развития всего этого ещё и потому, что в 90-х всё разваливали и не закупали, и много где сейчас техника почти свежая, то есть позапрошлых поколений почти нет.
В мире — 300 тысяч локомотивов. В нашей стране — 50 тысяч локомотивов у РЖД. Из них 15 тысяч — маневровые. Кроме этого, есть ещё 10 тысяч локомотивов частных владельцев. Это чаще всего крупные заводы — металлургические комбинаты. 250 локомотивов — на Новолипецком, например. Они решают конкретную задачу: непрерывность процесса доставки сырья на производства или отгрузки готовой продукции на магистральную железную дорогу. Есть химические, металлургические и горнорудные предприятия с такими задачами.
Производится меньше 1 000 тепловозов в год. Это aftermarket — надо разбираться с текущим парком. Надо его дооснастить.
А это мы умеем очень хорошо.
Количество аварий на закрытых участках больше, чем кажется снаружи. Они почти всегда без жертв, но с ущербом материальным (взрез стрелки, состав сошёл с рельсов), и всегда нарушается ритмичность производства, пока идёт ремонт.
Поставлена задача сделать L3 — беспилотный локомотив.
Решение
Трамвайные наработки позволяют хорошо держать путь:
И хорошо видеть препятствия:
Но просто взять и накатить код на тепловоз не выйдет. Дело в том, что если трамвайный маршрут достаточно простой (двухколейка с минимумом разветвлений), то у тепловоза гораздо выше сложность станций, и в плотном скоплении путей нужно ориентироваться очень хорошо.
Плюс маневровых тепловозов — они не ездят по всей стране, а двигаются по своим закрытым маршрутам. Первое, что мы сделали, — это начали делать в качестве вспомогательного источника данных карты путей на основе планов и спутниковых снимков (надо признать, что со спутниковыми снимками оказалось намного быстрее и надёжнее). То есть обучили нейросеть для выделения путей, но пока корректируем результат руками. Получались вот такие схемы:
На борту есть высокоточная GPS + ГЛОНАСС (тоже дорого, но тут можно), схема визуального ориентирования и радар. Это значит, что можно привязаться по координатам примерно к участку маршрута, а за счёт распознавания окружающих предметов «узнать» точное место.
Удобно, когда есть спутниковая карта.
Поэтому следующее, что мы сделали, — это начали учить тепловозы станциям. Фактически при каждом проходе по маршруту тепловоз запоминает окружающие предметы и распознаёт их, чтобы поделить на постоянные и временные (ориентироваться по канистре или человеку странно, а вот по совокупности столбов, светофорам и стрелкам вполне можно). Потом проецирует на карту. Это один из источников данных, и он даёт возможность очень повысить точность принятия решений автопилотом. Алгоритм запоминания — примерно как в случае с FaceID: новые успешные данные добавляются в обучающую выборку.
Естественно, нам понадобилось размечать датасеты вручную вначале. Не самая приятная и быстрая работа, но очень нужная. Собрать датасеты можно было только на объекте, потому что многое внутри ни на что из коммерческих банков не похоже.
Одна из особенностей станций — яркий свет и плохие условия для распознавания. Вот тут обязательно нужен радар для поиска пешеходов, видеоаналитика сама по себе не вытащит:
А вот так можно вытягивать плохие сцены (произвольные препятствия на путях, оценка расстояния до объектов) за счёт стереозрения, что создаёт ещё больше данных для низкоуровневого определения окружающей картины:
Поскольку радар — нашей собственной разработки, мы имеем возможность получать низкоуровневые данные со всех датчиков и вытаскивать нейросетками прямо на лету из них больше корреляций, чем обычно. В том числе с исходной радарной развёртки. Это тоже оказалось очень важным для проекта.
Конечно, мы используем также прогнозы движения людей (больше деталей есть в прошлом посте про трамвай). Но здесь всё просто, люди почти не ходят и не пытаются прыгать под тепловоз в попытках в него сесть. Вот избегание препятствий:
Вот так детектируется положение стрелок: ждём стрелку в навигации, ищем стрелку, переключаемся на дальнюю камеру для более внимательного разглядывания, выделяем сегмент со стрелкой в кадре, тащим его в нейронку, получаем результат состояния стрелки.
Чем отличаются задачи маневрового тепловоза от обычных?
Маневровые — это вот такие устройства:
Вот он покрасивее:
Такой тепловоз почти постоянно занят тем, что подъезжает и стыкуется с составом.
Особенности движения в том, что он и тянет, и толкает. Двигается в две стороны, то есть полдня едет против основного вида из кабины.
Очень много ограничений на манёвры, есть свои собственные светофоры, кроме обычных.
Если на обычных перегонах стрелок мало, то у маневрового внутри станции обычно целая сеть переключений. На станциях недостаточно GPS + RTK-поправки, потому что вокруг очень много разного железа. Сглаживание фильтром Калмана не гарантирует сохранения пути. У нас постоянно в полутора метрах — соседний путь, и мы можем спозиционировать себя там, это приводит к ошибкам алгоритма. Использовали фильтр частиц на низкоуровневые данные — он позволил в 10 раз улучшить точность позиционирования. Фильтр частиц — тяжело в вычислениях (это можно обойти), и мы можем не задавать явно модель движения. Зато можно давать ему данные со всех датчиков: это одометрия, столбы на станции, светофоры и стрелки, делаем привязку к виртуальной карте. Работает под мостами. Распределение впереди лежащих столбов, стрелок и светофоров на станции позволяет дать значительно более точную оценку собственного положения, чем GPS. В будущем вообще планируем отказаться от RTK-поправок, GPS будет нужна только для первичной оценки положения. Далее — корреляция столбов на карте и по камере/радару.
Светофоры более сложные, чем на трамвае. Надо различать сигналы светофора. На перегонах есть АЛСН, а для маневровых задач сигнал по рельсу не дублируется внутри станции. Нужен ночной режим, это когда светофоры засвечивают камеру. В дневном же режиме они иногда бледные слишком. Для этого придумали систему фильтров. Распознавать надо за 300 метров, чтобы успеть остановить состав.
С подготовленной и размеченной спутниковой картой получается хорошо, но автопилот может научиться после пяти-шести проездов по новой станции и сам, поэтому, если офис не готовит карту, то нужно будет ездить порожняком на новых станциях. С другой стороны, если карта устарела, то наш робот не растеряется. Важно, что это отнимает много ресурсов, потому что нужно не просто смотреть на объекты, а анализировать тип каждого. Дежурный по перегону может стать постоянным объектом, потому что он всегда на одном месте, но если ему присвоен класс человека, то робот понимает, что смысла заносить его на карту нет.
Машинисту нужен помощник, чтобы обозреть 180 градусов по ходу движения, потому что у тепловоза конструкция, когда впереди стоит двигательный отсек, и он закрывает обзор машинисту на всё слева. И либо машинист должен ездить с помощником (обычно одному не дозволено), либо нужны системы обзора и автопилотирования.
С нашей системой после окончания испытаний и сертификации можно будет обойтись без помощника на участке. Система не уснёт.
Вот одна из лучших иллюстраций, что бывает. БелАЗ столкнулся с тепловозом. Тепловоз проиграл, а у БелАЗа отлетела подвеска и сломалась балка. Теперь вы знаете, кит побеждает или слон.
Довольно сложно было с торможением. В случае трамвая мы гибко управляем процессом и можем делать частичное торможение. В случае поезда — только до полной остановки, иначе может случиться разрыв состава. Трамвай мог снизить скорость и управлять временем до столкновения. Это связано с его тормозной системой и фиксированным весом. Поезд каждый раз — разный, бывает до 100 вагонов, и пневмотормоз несколько секунд снимается. Большая проблема в том, что если мы управляем тормозами состава, то надо управлять давлением по всему составу, что слегка выбивалось за задачи автопилота.
Что именно делает система?
Сейчас инициирует автоторможение по светофору, запрещающему положению пошёрстной стрелки, по подъезду к составу быстрее допуска или при препятствии на путях (включая человека). Высчитываем прогноз столкновения, траектории объектов, скорость поезда. Если человек по своим намерениям пересекает пути в то же время, когда там идёт состав, то сначала — предупреждение, если времени мало — инициируем торможение.
Общий принцип:
Тестовая база была в Вологде, потому что там очень серьёзно относятся к безопасности. Несколько лет назад машинист локомотива заснул и въехал в состав цистерн через запрещающий сигнал. В итоге машина перевернулась, куча цистерн сошла с рельсов, хорошо, что они были пустые. Фотографии есть, они очень впечатляющие.
Если бы цистерны были не пустые, то фотографий бы не было, просто всё взлетело бы на воздух. Проезд запрещающего светофора уставшим машинистом производится чаще, чем кажется снаружи. Очень вероятный случай — не раздолбайство, а неверное понимание команды диспетчера по рации (можно ехать под синий при разрешении диспетчера так делать). Но если при этом не посмотреть на стрелку, то она будет взломана. Текущему составу ничего не случится, а вот следующий идущий за ним в обратном направлении может сойти с рельсов.
Вот так это выглядит из кабины машиниста:
Как видите, мы верно идём к тому, что старые «ЧМЭЗики» (в ряде регионов их называют ещё «Чмухи») будут очень совершенным беспилотным транспортом. Ну или с ассистирующим ко-пилотом как минимум. Это уже есть и работает.
Послесловие
В декабре 2019 года мы завершили проект с РЖД на создание программно-аппаратного комплекса помощи машинисту, представили прототип маневрового локомотива с возможностью автономного управления. Первые результаты работ показали руководству РЖД в июле прошлого года и получили высокую оценку. Сегодня по договору интеллектуальные комплексы Cognitive Rail Way Pilot установлены на десять маневровых локомотивов марки «ЧМЭЗ».
Руководитель РЖД Олег Белозеров c руководителями дорог и Губернатор Тульской области Алексей Дюмин принимают работу у спецов Cognitive Pilot в рамках XV Ассамблеи начальников железных дорог на станции Щекино Тульской ЖД.
Команда Cognitive Pilot после успешной демонстрации результатов совместного проекта руководству РЖД и Тульской области на станции Щекино Тульской ЖД.