Appearance
ПР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связывает глобальную позу с локальной одометрией. - Ковариация — описание неопределённости позы; критерий сходимости — численное правило «когда оценку можно использовать» (например, порог по ковариации или разнице оценок), а не визуальное «выглядит ровно».
Что сделать
- Получите карту открытого мира, сохраните её параметры (значения ячеек, разрешение, начало координат) и локализуйте робота по фиксированным bag-файлу и seed.
- Задайте начальную позу и численный критерий сходимости. Посчитайте ошибку положения и долю времени, когда преобразование
map→odomдоступно (tf2успешно отвечает на запрос). - В 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.
Если использовался ИИ, применяются правила курса.