Управление роботом и реализация алгоритма A*
Освоить принципы работы с локальным маневрированием и уклонением от столкновений.
Разработка приложения для управления мобильным роботом.
Реализация логики для движения робота по кольцевому маршруту, заданному последовательностью путевых точек в отдельном файле.
Подготовка трассы согласно индивидуальному варианту. Активация режима динамических препятствий.
Реализация алгоритма контроля препятствий и локального маневрирования в соответствии с индивидуальным вариантом.
Реализация визуализации работы алгоритма локального маневрирования.
Общие требования к выполнению работы:
Не использовать готовые библиотеки для реализации алгоритмов планирования движения.
Весь код анализа карты, поиска пути и избегания столкновений должен быть написан самостоятельно.
Все визуализации должны осуществляться с помощью растровых изображений (bitmap или аналогичных форматов) с дальнейшим отображением на форме приложения.
Ход работы:
Работа была выполнена поэтапно:
Проектирование интерфейса: Определение необходимых элементов (кнопок, полей ввода, графиков). Создание прототипа интерфейса.
Получение и визуализация данных: Разработка кода для получения данных от симулятора и реализация их отображения на графике.
Отправка команд для управления роботом: Создание функции для отправки команд на робот и интеграция её с элементами интерфейса.
Индикация выполнения операций с грузом: Разработка способа индикации (использование иконок, сообщений, цветов).
Загрузка файла с координатами маршрута: Создание функции для чтения файла формата CSV и интеграция её с интерфейсом.
Алгоритм автоматического движения по маршруту: Определение радиуса зоны достижения целевой точки и разработка алгоритма движения по маршрутам в кольцевом режиме.
Создание файла Labyrinth.txt: Описание структуры трассы согласно индивидуальному заданию.
Формирование файла с координатами маршрута: Определение координат маршрута и создание соответствующего файла.
Активация режима динамических препятствий: Настройка симулятора для работы с динамическими препятствиями.
Разработка алгоритма локального маневрирования: Выбор подходящего алгоритма (например, DWA) и его реализация с учётом текущих данных робота, маршрута и препятствий.
Визуализация препятствий и вспомогательной информации: Использование графики для отображения препятствий и другой важной информации.
Отображение траекторий и маршрутных точек: Интеграция визуализации траектории и точек с алгоритмом маневрирования.
Анимированная визуализация в реальном времени: Обновление визуализации синхронно с работой алгоритма маневрирования.
Завершение проекта и составление отчёта:
Составление отчёта: Описание всех этапов разработки, включая проблемы и принятые решения. Включение скриншотов и иллюстраций для наглядности.
Презентация результата: Подготовка презентации проекта для демонстрации достигнутых результатов.
Основные задачи программы:
Отображение карты: Загрузка текстовой карты из файла и отображение её в графическом интерфейсе.
Управление движением робота: Перемещение робота по клеткам карты, расчёт путей и их отображение.
Обработка данных: Получение данных через UDP-соединение (энкодеры, сенсоры) и их использование для управления роботом.
Отправка команд роботу: Формирование и отправка команд (скорость, направление) через UDP.
Главные компоненты:
Отображение карты: Загрузка карты из файла, рисование битмапа с различными цветами клеток (стены — чёрные, свободные клетки — белые).
Управление движением: Движение вперёд по клеткам, основанное на данных энкодеров, и выполнение поворотов на 90 градусов.
Обработка данных: Прием данных через UDP, декодирование JSON-данных и сохранение значений в переменных.
Отправка команд: Сериализация команд в JSON и их отправка через UDP.