Навигация
Одна из самых важных задач мобильного робота это задача автономного перемещения его из одной точки в другую или, одним словом, задача Навигации.
Навигация для робота на самом деле не так проста, как кажется. Для ее решений у робота должна быть карта, информация о собственном расположении на этой карте. Также важно рассчитать оптимальный маршрут среди различных вариантов маршрута и избежать столкновения с препятствиями.
Это просто с точки зрения человека, но с точки зрения "вычислительного устройства" это сложная задача, для решения которой необходимо использовать множество различных алгоритмов и сложных вычислений.
На сегодняшний день, глобально системы навигации можно разделить на навигацию внутри помещений – indoor, и вне помещений – outdoor.
Навигация внутри помещений используется мобильными роботами сервисного назначения, например, для перемещения грузов на складе, роботами-уборщиками, официантами и т.д.
Для навигации внутри помещений мы не можем использовать системы спутниковой навигации, по причине отсутствия сигнала и недостаточной точности. С другой стороны, благодаря тому что пространство внутри зданий ограниченно небольшими площадями, и имеют заранее известную коридорно-комнатную "архитектуру" мы будем получать информацию из окружающей среды и работать с ней.
В нашем курсе мы рассмотрим проблемы навигации роботов в помещениях.
Базовые понятия навигации
В общем виде мы можем описать решение задачи навигации на изображении ниже.

Что нам необходимо для работы навигации
- Датчики: Получение данных о состоянии окружающей среды
- Карта: Карта для расчета маршрута и информацией о препятствиях
- Положение: Оценка и расчет положения робота в пространстве
- Путь: Рассчитанный маршрут движения робота от точки старта до финиша
Датчики
Для определения препятствий и вообще внешней среды, применяются несколько типов датчиков.
Датчики расстояния
- Лидары (лазерные дальномеры)
- Ультразвуковые датчики расстояния
- Инфракрасные датчики расстояния

Обзорные датчики
- Стерео камеры
- Моно камеры

Камеры глубины
- RealSense
- Kinect 1/2
- SwissRanger

Чем больше датчиков, тем больше возможностей робота, но также возрастают требования к вычислительным мощностям и сложности программ.
На нашем роботе мы научимся работать с лазерным дальномером (lidar) c круговым углом сканирования в одной плоскости.
Карта
Скорее всего с картами вы уже сталкивались. Карта - это графическая визуализация окружающей нас среды. В зависимости от масштаба это может быть карта всего мира, или карта учебного класса.
Для робота карта это графическое изображение. Где каждый пиксель в зависимости от масштаба соответствует определенным координатам. А его цвет отвечает за то, что находится на этом месте.
Так составленная карта для некоторого полигона может выглядеть следующим образом:

Мы отчетливо видим "пикселизацию" карты:
- Светло-серый - это "пиксели" карты, которые свободны для перемещения
- Черный - это преграда для робота
- А темно-серый - это неизвестные, пока, области карты для робота.
Карты можно хоть рисовать руками, но автоматический это делать конечно удобнее.
Положение робота (локализация)
Если у нас есть карта, то следующей необходимой информацией, будет информация, где робот на этой карте находится.
Для решения этой задачи, у нас есть несколько технологических решений.
Например, для навигации в помещении мы можем использовать внешние системы определяющие положение робота:
- Графические или цветные метки, расположенные на препятствиях
- Системы Indoor GPS
- Метки Beacon
- Системы камер (Vicon MX и тд)
![]()
Но использование данных систем требует дооборудования рабочего пространства, что не всегда возможно и приемлемо в реальном мире.
По этой причине, чаще для решения задач оценки положения робота, используется только информация которой располагает сам робот "на борту". Обычно это информация, которую робот получает с энкодеров колес, и данные с датчика IMU.
Такой метод оценки сильно зависит от внешних условий (движение без проскальзывания, ровный пол и тп), но при комбинации с другими данными позволяет решить вопрос расчета положения робота.
Построение маршрута

"Его система построения пути немного не оптимальна, но у него точно есть чутье."
Эта часть системы завершает необходимые модули, и отвечает непосредственно за построение пути и движение в пункт назначения.
Отметим основные алгоритмы построения пути:
- Dynamic Window Approach (DWA) / Подход с динамическим окном
- A* algorithm (A Стар) / Алгоритм Дейкстры
- Potential Field / Метод потенциальных полей