Проект команды «Прайм» по программному управлению мобильными роботами. В репозитории собраны версии сайта управления, код Arduino/ESP, контроллеры движения, описание математической модели и технические заметки по отладке.
Система предназначена для управления одной или двумя роботизированными машинками через веб-интерфейс. Сервер принимает команды от сайта, обменивается данными с ESP/Arduino, получает измерения с датчиков и запускает алгоритмы следования.
Основные задачи проекта:
- управление одной машинкой и двумя машинками;
- параллельный запуск отдельных регуляторов для
car1иcar2; - обработка измерений дальномера HC-SR04;
- получение угловой скорости с MPU6050;
- учёт инверсной логики PWM в используемой прошивке;
- перенос регулятора в отдельные файлы;
- запись модели объекта и закона управления в матричном виде.
prime-robotics-control/
├── server.py # Flask-сервер и маршруты управления
├── controllers/ # регуляторы следования
│ ├── follow_base.py # общая логика запуска, обмена и обновления состояния
│ ├── follow_car1.py # закон управления для первой машинки
│ └── follow_car2.py # закон управления для второй машинки
├── arduino/ # код Arduino/ESP
├── templates/ # веб-интерфейс
├── scripts/ # вспомогательные расчётные и тестовые скрипты
├── docs/ # техническая документация
├── versions/ # сохранённые версии проекта
├── archive/ # исходные архивы и контрольные суммы
├── CHANGELOG.md # журнал изменений
└── DOSSIER_SOUTHBOARD.md # личный вклад участника
| Файл | Содержание |
|---|---|
docs/VERSION_MAP.md |
Карта версий проекта. |
docs/FILE_MAP_AND_IMPORTANCE.md |
Назначение основных файлов и папок. |
docs/TECHNICAL_NOTES.md |
Общие технические заметки по архитектуре. |
docs/MEMORY_ESTIMATION.md |
Оценка использования памяти Arduino. |
docs/CODE_COMMENTARY.md |
Пояснение ключевых частей кода. |
docs/ACHIEVEMENTS_AND_IMPACT.md |
Итоги выполненных доработок. |
CHANGELOG.md |
Последовательность изменений по версиям. |
Сайт управления работает через Flask-сервер. Сервер хранит подключения машинок, отправляет команды на ESP/Arduino и запускает контроллеры следования. Для каждой машинки используется отдельный файл регулятора, поэтому алгоритмы можно настраивать независимо.
Общий поток работы:
- Пользователь подключает одну или две машинки к сайту.
- Сервер запрашивает список доступных команд.
- При запуске регулятора сервер начинает периодически получать данные датчиков.
- Контроллер обновляет состояние объекта.
- Закон управления вычисляет команды для левого и правого борта.
- Команды переводятся в PWM и отправляются на Arduino.
В проекте используется матричная запись модели:
x(k+1) = Ad*x(k) + Bd*u(k) + Gd*vf(k)
y(k) = C*x(k)
Закон управления записывается через расширенный вектор состояния:
q = F*xi
u = S*q
где u содержит нормированные команды для левого и правого борта. После ограничения диапазона команды переводятся в PWM с учётом инверсной схемы:
PWM = 255 * (1 - u)
В используемой прошивке:
PWM = 0 -> максимальная скорость
PWM = 255 -> стоп
- Базовая версия сайта и подключения двух машинок.
- Исправление инверсной логики PWM.
- Вынос контроллеров следования в отдельные файлы.
- Переписывание закона управления через матричные операции.
- Переход MPU6050 на библиотеку I2Cdev.
- Однократная калибровка гироскопа при запуске.
- Поддержка режима работы с одной подключённой машинкой.
- Добавление команды
sensorsдля совместного опроса HC-SR04 и MPU6050. - Описание матричной модели объекта и карты версий.
В репозитории добавлен workflow GitHub Actions, который выполняет синтаксическую проверку Python-файлов:
python -m py_compile server.py controllers/*.py scripts/*.py
Это не заменяет тестирование на железе, но помогает быстро находить ошибки синтаксиса после изменений в серверной части.
- SouthBoard — основная сборка проекта, серверная часть, структура версий, документация, описание модели и регулятора.
- @krpff — проверка поведения системы на тестовых сценариях, анализ работы PWM и датчиков, вспомогательные утилиты для контроля логов.