Проект-UAS-STM32
Программа для нижележащего устройства STM32 для беспилотных судов/автомобилей, совместима с программами верхнего уровня Raspberry Pi, NVIDIA Jetson Nano и другими.
Основные особенности:
-
Системная архитектура:
- STM32 использует операционную систему типа фреймворк, позволяющую вызывать задачи с различной частотой. Преимуществом этого подхода является повышение гибкости системы и снижение её зависимости от конкретных аппаратных средств.
Также учтены пунктуация и согласование слов.### Системная архитектура:
- STM32 использует операционную систему типа фреймворк, что позволяет вызывать задачи с различной частотой. Преимуществом такого подхода является повышение гибкости системы и снижение её зависимости. Аналогичные решения используются многими производителями автопилотов, такими как Crazyflie.
- В проекте нижележащего устройства можно выбрать компиляцию, достаточно изменить одно макроопределение, чтобы система автоматически выбрала нужные датчики. Это особенно полезно при работе с двумя типами устройств для измерения угловой скорости и ориентации — GY901 и MPU6050 + HMC5883.
- Датчики автоматически проверяются при включении питания, а также автоматически калибруются, обеспечивая высокую точность данных.
- Модуль GPS использует передовые протоколы UBX, автоматически конфигурируется до включения питания и выводит необходимые данные, отсеивая ненужные, что значительно повышает скорость обработки данных.### Системное ядро:
- Внутренние буферы данных между верхним и нижним уровнями используют передовые циклические буферы, что значительно снижает потерю пакетов при быстрой передаче данных и увеличивает скорость обработки данных.
- STM32 использует конечные автоматы состояний, позволяющие использовать радиоуправление для перехода между различными режимами и выполнения различных действий. Это повышает гибкость системы.
- Используется передовая методика Madgwick для вычисления ориентации с помощью градиентного спуска, которая значительно снижает количество итераций по сравнению с методом фильтра Калмана. При использовании этой методики требуется всего лишь 10 Гц для получения точных данных о положении.
- Методика Madgwick для градиентного спуска используется для вычисления ориентации. Этот алгоритм имеет преимущество в том, что требует меньшего количества итераций и более низкой частоты выборки датчиков, что компенсирует недостатки фильтра Калмана, таких как потребление процессора. Поскольку нижнее устройство использует серию STM32F1 с максимальной частотой 72 МГц, одновременное использование методики вычисления ориентации и управления становится затруднительным. Градиентный спуск представляет собой широко применяемый алгоритм машинного обучения, который обычно используется для решения задач оптимизации.Таким образом, "спуск" в данном контексте может быть понят как процесс постепенного уменьшения ошибки между рассчитанной и реальной ориентацией.
Модуль GPS, поскольку он требует постоянного приема большого объёма данных, серьёзно занимает время микроконтроллера на выполнение других задач, поэтому был внедрён DMA. Кроме того, в проекте предусмотрена возможность выбора между DMA и прерываниями для компиляции, что повышает эффективность и гибкость.### Расширение функциональности:
- Настройка модели средства (автомобиль или морское судно) позволяет оптимально использовать данные GPS, которые будут адаптированы в зависимости от выбранной модели.Если вам нужны дополнительные детали или корректировки, пожалуйста, сообщите мне! * Можно экспортировать маршруты движения непосредственно в Google Maps
Использование сенсоров
- Для GPS используется модуль Ublox M8 (есть версия с встроенным магнитом HMC5883)
- Для определения ориентации используется MPU6050
- Управление осуществляется с помощью WFR07/WFT07 (подключение см. два изображения в текущей директории)
- Описание электродвигателей:
- Первые два колеса поворачиваются с помощью серво (тип сервы и подключение см. изображение "servo_cables.png" в текущей директории)
- Два последних колеса приводятся в движение отдельными двигателями (скорость двигателей регулируется PID контроллером так, чтобы они работали примерно одинаково)
- В случае изменения конструкции автомобиля удалите старый скрипт и создайте новый, используя аналогичные методы определения функций
Инструкция по использованию
- Скачайте этот файл в папку
- Откройте Keil5, скомпилируйте и загрузите в STM32
- Согласно таблице "STM32 ресурсы использования.xlsx", выполните соединение соответствующих сенсоров
Это всё. Кроме того, если нет подключения к компьютеру, управление будет осуществляться только через радио; при наличии подключения к компьютеру можно использовать функции точечной навигации и сбора данных.
Примечания* Модель STM32 — ZET6, поскольку используется таймер 8, требуется модель с большим объемом памяти.
Важно! Все журналы разработки нижнего уровня и руководства хранятся по следующему адресу
- Руководство по использованию сенсоров и алгоритмы для разработки беспилотного судна
- Журнал разработки содержит подробные записи проекта от начала до успешного завершения тестирования. Из-за отказа от старого алгоритма декомпозиции ориентации и перехода к новому, ранние объяснения относительно ориентации могут служить только справочной информацией. * Часть протокола связи вырезана и находится в этой директории. То есть: общая структура и протокол связи. docx
Файловые форматы:
- Каталог Peripherals содержит код внешних устройств STM32. Папка Software хранит части кода программной составляющей STM32, такие как алгоритмы PID и т. д.
- Файл CONFIGURATION.h используется для установки параметров, условной компиляции и т. д.
- Файл initialize.c содержит код, который выполняется при инициализации STM32.
Функционал (в сочетании с верхним уровнем управления)
- Голосовое оповещение о состоянии соединения GPS, работе аппарата и т. д. (необходимо подключить небольшую аудиосистему к верхнему уровню управления).
- Управление с помощью радиоуправляемого устройства.
- Получение координат GPS: в то время как устройство управляет с помощью радиоуправляемого устройства, верхний уровень управления в фоновом режиме записывает текущие координаты GPS.
- Ввод координат GPS для автономного навигирования. (метод ввода координат может быть через Google Earth или использование ранее полученных координат GPS).
Сообщение от разработчика
- Если вас интересует совместная работа над проектом, свяжитесь с автором.
- E-mail:8523429@qq.com
Комментарии ( 0 )