← Все новости

«Труба из Прошлого»: Векторный контроль габарита поезда метро по данным 3D-лидара

Привет, Хабр! Разработка систем содействия водителю (ADAS) и автопилотов для автомобильного транспорта сейчас у всех на слуху. Но в сфере рельсового транспорта — и особенно в метрополитене — стоят свои, гораздо более специфические задачи.Недавно я участвовал в хакатоне «Лидеры Цифровой Трансформации», где перед командами стояла безумно интересная Mission-Critical задача от Дептранса Москвы: Разработка алгоритма контроля пространства по ходу движения беспилотного поезда метро. Суть в том, чтобы по данным 3D-лидара Hesai 128 надежно обнаруживать препятствия в створе путей на максимальной дальности (до 150+ метров) в полной темноте тоннеля, сохраняя нулевой или минимальный уровень ложно-положительных срабатываний.Моё решение не вошло в топ-10 победителей. Подвела классическая ловушка хакатонов — автоматический судейский скрипт проверяющей платформы капризен к структуре выходных данных, и потеря всего 5–6 кадров на ROS-шине из-за блокирующих логов и принтов в stdout, а также мелкая рассинхронизация знаков в экстраполяции, привели к жесткому срезанию баллов.Однако архитектурный каркас нашего пайплайна (одометрия, концепция «Трубы из Прошлого» и интерактивный 3D-кокпит на Three.js для машиниста) получился монументальным. Мы сознательно отказались от «школьного» покадрового вычисления полиномов путей (polyfit). Вместо этого мы построили Цифровой Двойник (Digital Twin) инфраструктуры на базе пространственной памяти.Цель этой статьи — не просто провести работу над ошибками, а найти единомышленников. Я выложил ядро проекта в Open Source под лицензией MIT. И если вы тоже участвовали в этом треке, ковыряли этот сложнейший датасет, не прошли, но чувствуете спортивный азарт — давайте объединимся, переложим критические узлы на C++ и добурим это решение до идеального промышленного робототехнического продукта. Читать далее