3. Маршрут реализации и конечный автомат стадий
3.1 Рекомендуемый маршрут
Этап 0: аудит окружения и интерфейса
Сначала не обучаем ничего. Убедитесь, что официальное окружение запускается, выведите ключи observation, их типы и формы, а также пространство действий. Зафиксируйте платформу робота, имена камер, единицы глубины, частоту управления и масштабирование действий.
Этап 1: поиск только по допустимым наблюдениям
Держите робота в безопасной позе и с помощью головной RGB-D камеры и LiDAR просканируйте всю сцену. Цель этапа — ответить на вопрос «может ли робот обнаружить цель с помощью датчиков», а не сразу хватать объект.
Этап 2: определение положения цели и сближение базы
Преобразуйте результат детектирования из координат камеры в координаты базы через откалиброванные внешние параметры. Двигайте только базу, манипулятор держите в убранном положении. Условием передачи управления служит безопасное расстояние перед концевым эффектором.
Этап 3: фиксация по концевой камере
Переключитесь на RGB-D камеру концевого эффектора и с помощью визуального сервоуправления исправляйте боковое смещение, расстояние и высоту. Головная камера отвечает за «найти», концевая — за «дотянуться». Именно это разделение интерфейсов — самое ценное, что можно перенести из публичного SLAM-решения.
Этап 4: проверка захвата и подъёма
Выдвигаем манипулятор, закрываем захват, ждём стабилизации, затем небольшой подъём. Во время подъёма нужно проверять, следует ли объект за захватом; при неудаче возвращаемся к поиску и не переходим сразу к маршруту до корзины.
Этап 5: перенос и размещение
Перенесите объект к корзине на низкой скорости и с устойчивой позой. Дойдя до цели, откройте захват, наблюдайте, попал ли объект в зону корзины, и подтвердите размещение.
3.2 Конечный автомат
SEARCH
-> LOCALIZE
-> APPROACH
-> EE_LOCK
-> REACH
-> CLOSE
-> LIFT_VERIFY
fail -> OPEN_RESET -> SEARCH
-> CARRY
-> BIN_ALIGN
-> RELEASE
-> PLACE_VERIFY
fail -> RECOVER or SEARCH
-> NEXT_TARGET / FINISH
В каждом состоянии логируются как минимум: episode_id, step, target_class, phase, observation_source, action_norm, distance_estimate, contact_state, grasp_state, placement_state и failure_code.
3.3 Ключевые пороги
| Порог | Критерий прохождения | Чего не делать, если не прошли |
|---|---|---|
| Наблюдение | официальный runner стабильно читает допустимые ключи и формы | не настраивайте стратегию захвата |
| Навигация | несколько целей и несколько seed достигают зоны передачи управления | не записывайте фиксированные координаты как общий метод |
| Выравнивание концевого эффектора | визуальная ошибка устойчиво уменьшается без постоянной тряски | не увеличивайте амплитуду действий напрямую |
| Захват | после подъёма объект движется вместе с захватом | не подменяйте подтверждение захвата показателем столкновения |
| Размещение | после отпускания объект попадает в зону определения корзины | не полагайтесь на «видно, что объект опустили» по видео |
| Оценка | используется официальный оценщик, сохраняются исходные журналы | не отчитывайтесь только собственными метриками |
3.4 Инженерные компромиссы Task B
Если времени на соревнование мало, сначала стоит построить объяснимый слоистый базовый вариант: эвристический поиск и визуальное сервоуправление, а затем заменять по одному модулю. Одновременная замена детектора, навигатора, полнотелого управления и стратегии захвата делает неудачи неразличимыми, и такой опыт трудно обобщить в учебном материале.