Skip to content

cPhasma/prime-robotics-control

Repository files navigation

Prime Robotics Control

Проект команды «Прайм» по программному управлению мобильными роботами. В репозитории собраны версии сайта управления, код 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 и запускает контроллеры следования. Для каждой машинки используется отдельный файл регулятора, поэтому алгоритмы можно настраивать независимо.

Общий поток работы:

  1. Пользователь подключает одну или две машинки к сайту.
  2. Сервер запрашивает список доступных команд.
  3. При запуске регулятора сервер начинает периодически получать данные датчиков.
  4. Контроллер обновляет состояние объекта.
  5. Закон управления вычисляет команды для левого и правого борта.
  6. Команды переводятся в 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 -> стоп

Основные этапы разработки

  1. Базовая версия сайта и подключения двух машинок.
  2. Исправление инверсной логики PWM.
  3. Вынос контроллеров следования в отдельные файлы.
  4. Переписывание закона управления через матричные операции.
  5. Переход MPU6050 на библиотеку I2Cdev.
  6. Однократная калибровка гироскопа при запуске.
  7. Поддержка режима работы с одной подключённой машинкой.
  8. Добавление команды sensors для совместного опроса HC-SR04 и MPU6050.
  9. Описание матричной модели объекта и карты версий.

Проверка Python-кода

В репозитории добавлен workflow GitHub Actions, который выполняет синтаксическую проверку Python-файлов:

python -m py_compile server.py controllers/*.py scripts/*.py

Это не заменяет тестирование на железе, но помогает быстро находить ошибки синтаксиса после изменений в серверной части.

Участники

  • SouthBoard — основная сборка проекта, серверная часть, структура версий, документация, описание модели и регулятора.
  • @krpff — проверка поведения системы на тестовых сценариях, анализ работы PWM и датчиков, вспомогательные утилиты для контроля логов.

About

Система программного управления роботами команды «Прайм»: Arduino, Flask-сайт, две машинки, MPU6050, HC-SR04, матричная модель и закон управления.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors