Обход препятствий
Кратко
Обход препятствий (obstacle avoidance) — способность робота или БПЛА заметить препятствие датчиками и не столкнуться с ним: затормозить, отъехать или перестроить маршрут в объезд. Это то, что отделяет аппарат, слепо летящий по точкам, от аппарата, которому можно доверить полёт рядом с деревьями, стенами и людьми.
Для чего используется
- Автономные миссии в сложной среде: обследование объектов, полёты под кронами и в промзонах, где заранее нарисованный маршрут не гарантирует чистого коридора.
- Страховка пилота: система придерживает аппарат, когда человек не заметил провод или ветку.
- Наземные роботы: складские и сервисные машины непрерывно объезжают людей и тележки, которых не было на карте.
- Потребительские дроны: у DJI обход включён по умолчанию и работает даже при автоматическом возврате домой.
Как работает
Задача распадается на два уровня. Первый — реактивный: не врезаться прямо сейчас. Второй — планирующий: найти путь в объезд и продолжить миссию. Разные системы останавливаются на разных уровнях.
Реактивный уровень. PX4 называет его Collision Prevention: аппарат строит вокруг себя карту из 72 угловых секторов и, если движение ведёт к препятствию ближе заданной дистанции (параметр CP_DIST), ограничивает скорость вплоть до полной остановки. Объезжать PX4 не станет — это осознанное ограничение: функция работает в ручном Position Mode и лишь страхует пилота. Направление, не покрытое датчиками, по умолчанию считается запретным.
Планирующий уровень. ArduPilot помимо простого обхода (остановиться или отъехать) умеет строить объезд. Алгоритм BendyRuler «прощупывает» пространство лучами во многих направлениях и выбирает курс, балансируя между безопасностью и продвижением к цели: дальность зондирования задаёт параметр OA_BR_LOOKAHEAD (типично 5 м), отступ от препятствий — OA_MARGIN_MAX (типично 2 м). Альтернатива — алгоритм Дейкстры, строящий кратчайший путь вокруг запретных зон геозон; их можно совмещать. Работает всё это в автоматических режимах AUTO, GUIDED и RTL, а с версии 4.1 BendyRuler умеет и вертикальный объезд — перелететь препятствие сверху.
Наземная классика. В стеке Nav2 (ROS 2) окружение робота представлено costmap — сеткой, где каждая ячейка хранит «стоимость» прохождения. Карта складывается из слоёв: статического (заранее построенная карта), слоя препятствий (живые данные датчиков) и слоя инфляции — буферной зоны вокруг препятствий. Глобальный планировщик строит по costmap путь к цели, локальный контроллер ведёт робота по нему, уворачиваясь от нового. Если план провалился, включаются recovery behaviors: развороты, отступление, очистка карты и повторное планирование.
Основные компоненты
- Датчики препятствий: сканирующие 360° лидары (proximity-датчики), дальномеры, камеры глубины (Intel RealSense), у наземных роботов — лидары и сонары.
- Источник данных по MAVLink: компьютерное зрение на companion computer передаёт PX4 сообщения OBSTACLE_DISTANCE — не реже 10 Гц при скорости 4 м/с.
- Представление мира: карта секторов (PX4), costmap (Nav2).
- Алгоритмы: BendyRuler, Дейкстра (ArduPilot); глобальный планировщик + локальный контроллер (Nav2).
Примеры
- Квадрокоптер на ArduPilot со сканирующим 360° лидаром в миссии огибает лесополосу: BendyRuler отклоняет маршрут, аппарат возвращается на линию за препятствием.
- Дрон DJI с системой APAS сам планирует траекторию обхода по командам пилота и окружению; действие выбирается в приложении — Bypass (объезд, по умолчанию) или Brake (торможение). Система опирается на камеры и не работает в темноте и против солнца; APAS 5.0 закрывает все направления.
- Складской робот на Nav2 объезжает поставленную в проходе палету: слой препятствий добавил её в costmap, планировщик перестроил путь.
Связанные темы
Источники
- ArduPilot: Object Avoidance — simple avoidance, BendyRuler, Дейкстра, датчики.
- PX4: Collision Prevention — карта секторов, параметры, OBSTACLE_DISTANCE.
- Nav2 Documentation — costmap, планировщик и контроллер, recovery behaviors.
- DJI: Introduction to APAS — режимы Bypass/Brake, ограничения по освещению.