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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Привет, Хабр! Разработка систем содействия водителю (ADAS) и автопилотов для автомобильного транспорта сейчас у всех на слуху. Но в сфере рельсового транспорта — и особенно в метрополитене — стоят свои, гораздо более специфические задачи.

Недавно я участвовал в хакатоне «Лидеры Цифровой Трансформации», где перед командами стояла безумно интересная Mission-Critical задача от Дептранса Москвы: Разработка алгоритма контроля пространства по ходу движения беспилотного поезда метро. Суть в том, чтобы по данным 3D-лидара Hesai 128 надежно обнаруживать препятствия в створе путей на максимальной дальности (до 150+ метров) в полной темноте тоннеля, сохраняя нулевой или минимальный уровень ложно-положительных срабатываний.

Моё решение не вошло в топ-10 победителей. Подвела классическая ловушка хакатонов — автоматический судейский скрипт проверяющей платформы капризен к структуре выходных данных, и потеря всего 5–6 кадров на ROS-шине из-за блокирующих логов и принтов в stdout, а также мелкая рассинхронизация знаков в экстраполяции, привели к жесткому срезанию баллов.

Однако архитектурный каркас нашего пайплайна (одометрия, концепция «Трубы из Прошлого» и интерактивный 3D-кокпит на Three.js для машиниста) получился монументальным. Мы сознательно отказались от «школьного» покадрового вычисления полиномов путей (polyfit). Вместо этого мы построили Цифровой Двойник (Digital Twin) инфраструктуры на базе пространственной памяти.

Цель этой статьи — не просто провести работу над ошибками, а найти единомышленников. Я выложил ядро проекта в Open Source под лицензией MIT. И если вы тоже участвовали в этом треке, ковыряли этот сложнейший датасет, не прошли, но чувствуете спортивный азарт — давайте объединимся, переложим критические узлы на C++ и добурим это решение до идеального промышленного робототехнического продукта.

Ниже — подробный разбор того, как перемалывать около 1 000 000 точек на кадр на частоте 10 Гц и как заставить DBSCAN видеть преграды на горизонте видимости по двум лучам.

Источник: https://habr.com/ru/articles/1094890/


Интересные статьи

Интересные статьи

На китайские компании пришлось более 97% мировых поставок человекоподобных роботов в первой половине 2026 года, показывают данные исследовательской компании Smart Analytics Global (SAG)...
«Битрикс? Да он же не для больших проектов! Тяжёлый, медленный, с устаревшими инфоблоками и неудобной корзиной — всё надо переписывать!» Слышали такое мнение? Да, оно действительно довольно популярно....
Мы много лет внедряем Битрикс24 в бизнес-процессы компаний и заметили любопытную особенность: чаще всего на эту CRM переходят сервисные бизнесы — ритейл, банки, рекрутинг, девелопмент, фудтех и другие...
В Java есть специальная аннотация @Deprecated для маркировки уставшего кода. С определенной периодичностью такой код из JDK удаляется. Обычно о конкретных сроках удаления анонс делается заранее и в те...
Применять паттерны программирования — хорошая практика. К сожалению, на проектах CMS Bitrix редко встречаются примеры использования. В статье я покажу на примере, как можно использовать паттерн D...