Руководство · Средний · 21 мин чтения
SLAM, построение карты, локализация и дрейф одометрии
Как мобильные роботы объединяют одометрию и данные дальности для SLAM, чем локализация отличается от построения карты и как исправлять дрейф.
Мобильному роботу нужны два связанных ответа: как выглядит окружение и где в нём находится робот. Одновременная локализация и построение карты (SLAM) даёт оба ответа, пока робот исследует окружение. После создания устойчивой карты система локализации может оценивать позу относительно этой неподвижной карты, не строя её заново.
SLAM не заменяет одометрию. Она использует локальные оценки перемещения, чтобы связать наблюдения датчиков, а затем исправляет накопленный дрейф, когда окружение предоставляет достаточно подтверждений.
Разделите четыре задачи
Термины становятся понятнее, если у каждого определён результат:
- Одометрия: плавное локальное перемещение по данным колёсных энкодеров, инерциального измерительного блока, визуальной одометрии или их слияния. Со временем возникает дрейф.
- Построение карты: создание по наблюдениям и позам представления, например сетки занятости.
- Локализация: оценка позы робота в существующей карте.
- SLAM: построение карты с одновременной оценкой поз и пересмотром прошлых оценок.
Навигация добавляет поверх этого планирование и управление. Хорошая карта сама по себе не формирует безопасную команду скорости.
Проследите за потоком данных в системе
Для двумерного SLAM в помещении типичен следующий поток данных:
- Колёсные энкодеры и инерциальный измерительный блок оценивают локальное перемещение.
- Лидар публикует сканы дальности с метками времени и системой координат датчика.
- TF2 связывает датчик с
base_link, а локальную позу — сodom. - Сопоставление сканов совмещает новые наблюдения с недавними сканами или растущей картой.
- Серверная часть оптимизирует граф поз и ограничений.
- Сетка занятости обновляется по исправленным позам и данным дальности.
Одометрия обеспечивает полезное начальное приближение. Без неё сопоставление сканов может искать в значительно большем пространстве или совместить наблюдение с неверной повторяющейся структурой. Без внешних наблюдений ошибки одометрии остаются неограниченными. Именно это ограничение определяет, может ли робот проходить пол параллельными полосами: после примерно десяти полос они перестают быть параллельными, поэтому машина, планирующая покрытие, также использует гироскоп, камеру под потолком или маяк. На улице ту же задачу решает GPS, объединённый с другими данными, а не используемый отдельно.
Поймите сопоставление сканов и замыкание цикла
Сопоставление сканов находит относительную позу, которая наилучшим образом совмещает текущие измерения дальности с существующей структурой. Оно может исправить небольшую пробуксовку и ошибку масштаба, но требует геометрических особенностей. Длинный коридор без особенностей, стеклянная стена, движущееся скопление людей или однотипные повторяющиеся ряды стеллажей могут сделать несколько поз похожими.
Замыкание цикла происходит, когда система распознаёт ранее посещённое место и добавляет ограничение между текущей и более старой позами. Оптимизация этого ограничения распределяет накопленную ошибку по траектории и выравнивает стены.
Замыкание цикла не всегда корректно. Ложное совпадение в двух похожих коридорах может деформировать или разорвать карту. Надёжные системы применяют геометрические проверки, оценки и настраиваемые пороги приёмки. Следует проверять подозрительные большие коррекции, а не радоваться каждому замкнутому циклу.
Подготовьте робота перед настройкой SLAM
SLAM не компенсирует неверные входные данные. Сначала проверьте:
- направление, масштаб и метки времени энкодеров;
- правдоподобную локальную одометрию при движении прямо и повороте;
- правильные преобразования
odom → base_link → sensor; - данные дальности в правильных единицах и выделение недопустимых показаний;
- согласованность часов между узлами;
- жёсткое крепление датчика;
- достаточную дальность обнаружения и поле зрения для среды.
При определении базовой линии двигайтесь медленно. Искажения движения и разреженные сканы становятся заметнее с ростом угловой скорости. Если датчик или драйвер поддерживает компенсацию времени, настройте её по измеренным характеристикам, а не считайте, что она не нужна.
Строьте карту осознанно
Начните в месте с большим числом особенностей и перемещайтесь по циклам, а не только по длинным маршрутам туда и обратно. Поворачивайтесь плавно, чтобы сканер наблюдал одни и те же структуры с перекрывающимися углами обзора. Не переносите и не перемещайте рядом с роботом крупные объекты во время построения карты.
Следите за динамической картой и ищите удвоенные стены, размытые углы, скачки и раздельные комнаты. Это свидетельства проблем, а не косметические дефекты:
- удвоенные параллельные стены указывают на ошибку позы или времени;
- искривлённые стены при повороте указывают на неверные преобразования или искажение движения;
- постепенный дрейф масштаба указывает на калибровку колёс или слабые ограничения сканов;
- внезапная глобальная перестройка указывает на замыкание цикла — корректное или ложное.
Сохраняйте карту только после проверки того, что важные коридоры остаются проходимыми при выбранном разрешении. Более мелкая сетка расходует память и может сохранять шум датчика; крупная сетка способна закрыть узкие проходы.
Локализация по сохранённой карте
После построения карты переключитесь в режим локализации по сохранённой карте. Локализатор на основе фильтра частиц, например адаптивная локализация Монте-Карло (AMCL), оценивает позу по наблюдениям дальности и перемещению. Ему по-прежнему необходимы разумная модель датчика, преобразования и одометрия.
Задайте начальную позу достаточно близко, чтобы система смогла определить правильное местоположение, особенно в симметричной среде. Проверьте восстановление, сначала вводя небольшие ошибки позы, затем большие. Восстановление после ситуации «похищенный робот» — отдельное требование, о котором нельзя заключать только из успешного обычного отслеживания.
В стандартной модели систем координат локальная одометрия публикует odom → base_link, а SLAM или локализация публикует map → odom. Глобальное преобразование исправляет дрейф, не вызывая скачков локальной системы управления.
Измеряйте точность и повторяемость
Используйте физические ориентиры с геодезически или тщательно измеренными положениями. Записывайте оценку позы при остановке робота у каждого ориентира при разных направлениях подхода. Разделяйте:
- повторяемость в одной точке;
- краткосрочный локальный дрейф;
- глобальную согласованность карты после цикла;
- время восстановления после временной потери датчика.
Сравнивайте карту с известными расстояниями, но не оценивайте её только по визуально привлекательному изображению. Навигации нужнее правильное свободное пространство, границы препятствий и стабильность позы, чем правдоподобная толщина стен.
Записывайте сканы, одометрию, преобразования и результаты SLAM, чтобы отказ можно было воспроизвести. Проблему, возникающую только при работе системы, диагностировать гораздо сложнее.
Диагностируйте типичные отказы SLAM
- Стены удваиваются при движении прямо: масштаб одометрии, метки времени датчика или сопоставление сканов не согласованы.
- Карта искривляется при повороте: неверно преобразование датчика, угловая одометрия или искажение движения.
- Поза скачет в повторяющихся коридорах: сопоставление сканов или замыкание цикла приняло неоднозначное совмещение.
- Ни один цикл не замыкается: маршрут не имеет перекрытия, наблюдения слишком разрежены или пороги приёмки слишком строги.
- Локализация работает только рядом с начальной позой: среда симметрична или глобальное восстановление не настроено.
- Карта выглядит правильной, но навигация врезается в стены: неверны габариты робота, раздувание или настройка карты стоимости.
- Изменение каждого параметра SLAM ничего не меняет: неверны соглашения одометрии, TF и параметры датчика.
Начните с калибровки квадратурного энкодера и одометрии дифференциального привода, затем используйте системы координат ROS 2 TF2 для проверки геометрической цепочки. Симулятор датчиков робота показывает, почему смещение и дрейф нельзя устранить только простым сглаживанием.
Исследуйте граф
Входит в эти сборки
Проекты и учебные пути, в которые входит это руководство.
Дополнительные материалы