Что такое алгоритм избегания препятствий у робота?
Хочу, чтобы мой робот ездил по комнате и сам объезжал стены и мебель. Какие есть простые алгоритмы избегания препятствий для новичка и как они работают?
2 ответа
Избегание препятствий — это логика «увидел преграду → не врезайся, объезжай». Для школьного робота есть несколько уровней сложности.
1. Самый простой — «отскок» (bump-and-go): робот едет вперёд, пока датчик расстояния не покажет, что стена близко (например, ближе 20 см). Тогда он останавливается, поворачивает на случайный или фиксированный угол и едет дальше. Так ездят простые роботы-пылесосы. Логика буквально:
если расстояние < 20 см:
стоп
повернуть направо
иначе:
ехать вперёд
2. «Следование вдоль стены» (wall-following): робот держит постоянное расстояние до стены сбоку (с помощью ПИД) и так обходит помещение по периметру. Хорошо для лабиринтов.
3. Несколько датчиков по кругу: робот смотрит влево, вперёд, вправо и едет в ту сторону, где свободнее. Это уже сглаженный объезд, а не дёрганые отскоки.
4. Продвинутое — карта (SLAM): с лидаром робот строит карту и планирует маршрут в обход препятствий. Это уровень беспилотников.
Новичку советую начать с варианта 1 на одном ультразвуковом датчике — он заводится за вечер. Потом добавь датчики по бокам и сделай выбор «куда свободнее». Частая ошибка: ставить порог срабатывания слишком близко — робот не успевает затормозить и бьётся.
Минимальный рабочий рецепт: один датчик расстояния спереди + правило «близко стена — стоп и поворот». Этого хватает, чтобы робот не врезался и катался сам. Дальше усложняешь: датчики по бокам → едем туда, где просторнее; потом ПИД для плавного объезда вдоль стены. До SLAM и лидара дойдёшь позже — это уже когда захочешь, чтобы робот строил карту и ездил по маршруту.