АО «НИИАС» (дочернее общество ОАО «РЖД») — единственный в стране институт, занимающийся созданием, развитием и внедрением беспилотных технологий и созданием устройств безопасности на железнодорожном транспорте.
Быть частью АО «НИИАС» — значит быть частью инновационной компании и иметь возможность внести свой вклад в создание передовых технологий автоматизации управления движением на железнодорожном транспорте в России и мире.
Мы разрабатываем системы технического зрения для беспилотного железнодорожного транспорта. На полигонах работают несколько направлений:
- БОП МЛ — блок обнаружения препятствий для маневровых локомотивов на сортировочных станциях.
- БОП МЦК — блок обнаружения препятствий для подвижного состава на МЦК (Московское центральное кольцо).
- Стационарные комплексы в Челябинске и на Лужской — ригельные установки с камерами и лидарами, детекция и трекинг объектов в зоне ответственности станции.
- ССК — стационарная система калибровки лидарных и камерных модулей.
Лидар — ключевой сенсор во всех контурах. Мы ищем Инженера-алгоритмиста / Robotics Software Engineer для работы над развитием лидарного стека: от низкоуровневой обработки облаков точек до одометрии, SLAM и детекции препятствий в реальном времени.
Стек технологий проекта:
- C++17/20
- Python
- Eigen
- PCL
- Open3D
- GTSAM
- ICP
- ESKF
- ROS/ROS2
- Linux
- CMake
Что уже есть и куда движемся:
Базовый контур построен на евклидовой кластеризации с эвристической фильтрацией и отдельном perception-сервисе с нейросетевой BEV-детекцией. Этот контур остаётся на поддержке, но имеет известные ограничения по точности, шумам и ложным срабатываниям, и постепенно замещается новой парадигмой.
Новая парадигма — геометрическая, на базе ICP и фактор графов:
- На стационарных комплексах — динамический ICP-матчинг с эталонным облаком (компенсация колебаний ригеля), после чего идёт вычитание точек земли и детекция объектов.
- В стационарной калибровке — ICP против эталонного облака.
- На БОП МЛ — лидарно-инерциальная одометрия с ESKF (error-state Kalman filter, IMU propagation + point-to-plane ICP update), далее статическая фильтрация аккумулированной fused-карты и DBSCAN по кандидатам.
- На БОП МЦК — полноценный лидарный SLAM: ESKF-одометрия + factor graph поверх неё, loop closure через place recognition, детекция через ROI и вычитание инфраструктуры из текущего облака.
Задачи, которые необходимо будет выполнять:
- Развитие геометрического стека:
- Улучшение и обобщение ICP-пайплайнов (point-to-plane, point-to-edge), повышение устойчивости к частичным перекрытиям и динамическим сценам.
- Доработка ESKF-одометрии: инициализация, детекция аутлаеров, фьюзинг IMU/LiDAR, компенсация дисторсии.
- Работа с factor graph backend (GTSAM): корректная инициализация графа, place recognition для loop closure, маргинализация.
- Детекция и восприятие:
- Детекция подвижного состава, инфраструктуры, препятствий на путях; специфичные объекты — автосцепки, тормозные башмаки, габариты вагонов.
- Борьба с шумом и интерференцией лидаров.
- Ground segmentation, статическая фильтрация, кластеризация (DBSCAN, Euclidean Clustering).
- Производительность и интеграция:
- Оптимизация кода под бортовые вычислители.
- Портирование прототипов с Python на C++, профилирование, многопоточность.
- Тестирование на данных реальных полигонных испытаний, unit- и integration-тесты.
- Калибровка:
- Развитие ICP-based лидарной калибровки, построение корректных эталонных облаков в целевой системе координат.
- Кросс-модальная калибровка LiDAR ↔ камера ↔ IMU.
Требования к кандидату:
- Владение C++17/20 на уверенном уровне: smart pointers, move semantics, concurrency, STL, RAII. Опыт написания производительного кода под Linux.
- Eigen — свободное владение, трансформации, разложения, numerical stability.
- Геометрическая обработка 3D: облака точек, k-d деревья, voxel grids, downsampling, motion compensation. PCL и Open3D.
- Оценка состояния: фильтр Калмана (включая ESKF / iterated EKF), понимание Lie-групп (SO(3), SE(3)) для работы с вращениями и многообразиями.
- Регистрация облаков: ICP (point-to-point, point-to-plane, point-to-edge), понимание сходимости, стратегий инициализации и outlier rejection.
- Численная оптимизация: Gauss-Newton, Levenberg-Marquardt, понимание того, что происходит внутри GTSAM.
- Классические алгоритмы: кластеризация (DBSCAN, Euclidean), сегментация (RANSAC для плоскостей/цилиндров).
- Python 3 для прототипирования и анализа данных.
- Linux, CMake, уверенная работа с системой сборки и зависимостями.
- Высшее техническое образование.
Будет плюсом:
- Практический опыт с GTSAM, g2o или Ceres, понимание factor graph'ов, маргинализации, sparse linear algebra.
- Опыт работы со SLAM (LIO-SAM, FAST-LIO, KISS-ICP, LOAM-семейство).
- ROS/ROS2 (pointcloud2, tf2) или ZCM.
- Понимание устройства и калибровки механических и solid-state лидаров (Velodyne, Hesai, Ouster, Livox, RoboSense).
- Опыт применения ML для 3D-данных (PointNet/++, VoxelNet, Cylinder3D, PointPillars), PyTorch/TensorRT — как дополнение к геометрическому стеку.
- Опыт работы в транспортной, робототехнической или автономной отрасли (беспилотный транспорт, промышленная робототехника, AGV).
- Опыт place recognition (Scan Context и т.п.).
Мы предлагаем:
- Работу в инновационной и технологической компании, возможности для профессионального развития и карьерного роста.
- Конкурентную оплату труда, официальное трудоустройство по ТК РФ в аккредитованную IT-компанию.
- ДМС в течение двух первых месяцев работы.
- Офис, где есть все необходимое для комфортной работы, в 5 минутах пешей доступности от ст.м. Московские ворота.
- Возможность обсуждения гибкого подхода к режиму труда. Главная задача — выполнять поставленные цели и быть частью команды.
- Внутренние корпоративные мероприятия.
- Дружелюбную атмосферу в коллективе — мы всегда открыты и готовы помочь.
Будем рады видеть вас в нашей команде!