Skip to content

ПР08. Локализация и цепочка map→odom

Работа относится к проектной траектории. Рассчитывайте на одну лабораторную пару и примерно 2,5 часа самостоятельной доработки.

Цель

Запустить локализацию на готовой карте с численным критерием сходимости и доказать, что ошибка в цепочке map→odom→base_link найдена по одной основной причине и устранена на той же записи.

Критерии зачтено

Работа зачтена, когда выполнены все три стадии и прошла автопроверка:

СтадияЧто требуется
1 · Собратькарта с параметрами, локализация по фиксированным bag-файлу и seed, ошибка положения и доля доступного преобразования
2 · Сломатьв fixture неверна система координат, преобразование или модель сенсора
3 · Доказатьодна основная причина названа, та же запись повторена после исправления, сходимость имеет численный критерий
Автопроверкаcheck_practice.py PR08 проверит evidence/pr08/{tf.md,localization.json,map.*} и заявления public_tests_passed, defect_reproduced, defect_fixed

Что получится

Вы запустите локализацию на готовой карте, измерите её сходимость и найдёте ошибку в цепочке map→odom→base_link по дереву tf2, ковариации и меткам сенсоров.

Пакеты и понятия

  • localization_case — пакет локализации: запуск стека на готовой карте и отчёт сходимости.
  • Роли фреймов: map — глобальная карта, odom — старт движения, base_link — корпус робота. Цепочка map→odom→base_link связывает глобальную позу с локальной одометрией.
  • Ковариация — описание неопределённости позы; критерий сходимости — численное правило «когда оценку можно использовать» (например, порог по ковариации или разнице оценок), а не визуальное «выглядит ровно».

Что сделать

  1. Получите карту открытого мира, сохраните её параметры (значения ячеек, разрешение, начало координат) и локализуйте робота по фиксированным bag-файлу и seed.
  2. Задайте начальную позу и численный критерий сходимости. Посчитайте ошибку положения и долю времени, когда преобразование map→odom доступно (tf2 успешно отвечает на запрос).
  3. В fixture неверна система координат, преобразование или модель сенсора. Найдите одну основную причину (не гоняйте несколько гипотез одновременно) и повторите после исправления ту же запись и те же метрики.

Сохраните evidence/pr08/{tf.md,localization.json,map.*,report.json}. tf.md фиксирует владельцев связей, localization.json — критерий, ошибку положения и долю доступности преобразования.

Проверка

bash
colcon test --packages-select localization_case
ros2 run tf2_tools view_frames
ros2 bag play fixtures/pr08-localization --clock
python3 /path/to/course/tools/check_practice.py PR08 --submission .

Готово, если одну связь не публикуют две ноды, сходимость имеет численный критерий, а роли map и odom объясняются по наблюдаемому поведению. Дополнительно: сценарий похищения робота и повторной локализации.

Как работаем на лабораторной

После проверки синхронизации разберём временную шкалу tf2. Затем сохраните исходный отчёт локализации и добавьте тест доступности преобразования.

Общий порядок: runbook · troubleshooting.

Если использовался ИИ, применяются правила курса.

Официальные справочники

Учебные материалы: CC BY 4.0 · Код: Apache-2.0