Структура программы
Программная часть навигации робота для сбора клубники разделена на пять основных файлов. Каждый из них отвечает за отдельную задачу:
graph.py
↓
карта теплицы
↓
planner.py
↓
маршрут к растениям
↓
motion_controller.py
↓
движение платформы
↓
obstacle_detector.py
↓
обнаружение препятствия
↓
обновление доступного маршрута
↓
planner.py
↓
новый маршрут
На данном этапе эти пять файлов реализуют именно навигационную часть будущего робота-сборщика клубники. Распознавание спелых ягод и управление манипулятором предполагается подключить к этой архитектуре отдельными модулями на следующих этапах разработки.
Программная часть навигации робота для сбора клубники разделена на пять основных файлов. Каждый из них отвечает за отдельную задачу:
- graph.py — описывает упрощённую карту теплицы в виде сетки 5×5. Хранит логику расположения маркеров, определяет соседние доступные позиции и позволяет связать реальные координаты препятствий с клетками карты. В дальнейшем такая сетка может соответствовать рабочим позициям робота вдоль рядов клубники.
- planner.py — отвечает за построение маршрута мобильной платформы. С помощью алгоритма BFS робот ищет кратчайший путь между рабочими позициями. Если существует несколько одинаковых по длине маршрутов, предпочтение отдаётся варианту с меньшим количеством поворотов.
- motion_controller.py — непосредственно управляет движением робота. Модуль получает текущие координаты и ориентацию из одометрии, последовательно направляет платформу к маркерам маршрута и формирует команды линейной и угловой скорости. Его задача — физически доставить будущую систему сбора клубники к нужному участку растений.
- obstacle_detector.py — работает с 2D-лидаром. Модуль сравнивает состояние окружающего пространства до и после появления нового объекта, определяет координаты препятствия и связывает их с ближайшей клеткой карты. Благодаря этому робот может учитывать, например, появившийся в проходе ящик или другое препятствие.
- main.py — объединяет остальные модули в единый сценарий. Программа строит маршрут к рабочей позиции, запускает движение робота, получает данные лидара, определяет появившееся препятствие, исключает занятую клетку и строит новый маршрут для возвращения.
graph.py
↓
карта теплицы
↓
planner.py
↓
маршрут к растениям
↓
motion_controller.py
↓
движение платформы
↓
obstacle_detector.py
↓
обнаружение препятствия
↓
обновление доступного маршрута
↓
planner.py
↓
новый маршрут
На данном этапе эти пять файлов реализуют именно навигационную часть будущего робота-сборщика клубники. Распознавание спелых ягод и управление манипулятором предполагается подключить к этой архитектуре отдельными модулями на следующих этапах разработки.