1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Matreshka15-USV-STM32F103-part

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Проект UAS-Project-STM32: беспилотное судно/беспилотный автомобиль на базе STM32, совместимое с Raspberry Pi, NVIDIA Jetson Nano и другими платформами

Основные моменты:

  1. Архитектура системы:
  • В STM32 используется операционная система, которая позволяет задачам выполняться с разной частотой. Преимущество этой архитектуры заключается в повышении гибкости системы и снижении её связанности. Подобный подход применяется многими производителями беспилотных летательных аппаратов, такими как Crazypony и другие.
  • Для разработки нижнего уровня можно выбрать компиляцию, изменив только одно определение макроса. Система автоматически адаптируется к выбору датчиков. Это особенно полезно при работе с двумя наборами инерциальных измерительных устройств, таких как GY901 и MPU6050+HML5883, обеспечивая бесшовный переход между ними.
  • Датчики автоматически проверяют себя после включения питания, автоматически калибруются, что обеспечивает точность данных.
  • GPS-модуль использует продвинутый протокол UBX. Перед включением системы он автоматически настраивает вывод GPS, отфильтровывая ненужные данные, что значительно повышает эффективность обработки данных.
  1. Основные аспекты системы:
  • Внутренние буферы данных верхнего и нижнего уровней используют кольцевые буферы, которые значительно снижают потери пакетов при высокоскоростной передаче данных и улучшают скорость обработки данных верхним и нижним уровнями.
  • STM32 использует конечный автомат для управления различными состояниями через пульт дистанционного управления и выполнения различных операций. Это повышает гибкость системы.
  • Используется продвинутый алгоритм градиентного спуска Madgwick для определения ориентации. По сравнению с предыдущим методом фильтрации Калмана, этот метод значительно сокращает количество итераций, необходимых для обработки данных нижнего уровня. С частотой выборки 10 Гц достигается сходимость к текущей ориентации транспортного средства. Алгоритм градиентного спуска Madgwick является окончательным решением. Его преимущество заключается в том, что он требует низкой частоты итераций и частоты выборки датчиков, что компенсирует недостаток фильтра Калмана — потребление ресурсов. Поскольку нижний уровень использует STM32F1, максимальная тактовая частота которого составляет 72 МГц, одновременное использование алгоритма определения ориентации и управления на 32 может быть непрактичным. Градиентный спуск — это широко используемый алгоритм машинного обучения, который обычно применяется для оптимизации задач. В контексте определения ориентации это означает постепенное уменьшение ошибки между расчётной ориентацией и фактической ориентацией.
  • Из-за необходимости в реальном времени обрабатывать большие объёмы данных, GPS-модуль потребляет значительную часть процессорного времени MCU. Поэтому в систему добавлен DMA. В процессе проектирования предоставляется выбор между DMA и прерываниями, что повышает эффективность и гибкость.
  1. Расширение функциональности:
  • Можно настроить модель транспортного средства (автомобильная или морская), чтобы оптимизировать использование данных GPS. Данные GPS будут адаптироваться в соответствии с выбранной моделью.
  • На Google Map можно напрямую экспортировать траекторию транспортного средства в виде точек.

Использование датчиков:

  • GPS-модуль: Ublox M8 (версия с встроенным HMC5883).
  • Инерциальный измерительный блок: MPU6050.
  • Пульт дистанционного управления: WFR07\WFT07. Подробные инструкции по подключению см. в каталоге.
  • Двигатель:
    • Два передних колеса управляются рулём (см. каталог для модели руля и подключения).
    • Задние колёса приводятся в движение отдельными двигателями (используя PID-управление для поддержания одинаковой скорости вращения обоих двигателей).
    • Если конструкция транспортного средства отличается, просто удалите исходный скрипт и внесите соответствующие изменения в функции скрипта.

Инструкция по использованию:

  1. Загрузите файл в папку.
  2. Откройте Keil5, скомпилируйте и загрузите в STM32.
  3. Подключите датчики согласно таблице в файле «STM32 ресурсы использования.xlsx».

Этого достаточно для начала работы. Без подключения верхнего уровня управление будет осуществляться только с помощью пульта дистанционного управления. При подключении верхнего уровня доступны такие функции, как навигация по точкам и сбор данных.

Примечание:

  • Модель STM32 — ZET6. Из-за использования таймера 8 требуется большой объём памяти.
  • Верхний уровень отвечает за связь с наземной станцией, планирование маршрута и т. д. Он может быть перенесён на ROS.
  • Нижний уровень имеет относительно простую архитектуру, разделяя задачи определения ориентации, управления двигателем и т. п. на частоты 5, 10, 50 и 100 Гц.
  • Raspberry Pi использует Python-скрипт, работающий в фоновом режиме как процесс (если используется версия без ROS).
  • Рекомендуется использовать версию без ROS, поскольку она проще в настройке (требуется только Python) и более стабильна.
  • Адрес верхнего уровня без ROS: https://github.com/matreshka15/raspberry-pi-USV-program.
  • Адрес верхнего уровня с ROS: https://github.com/matreshka15/ROS-based-unmanned-vehicle-project.
  • Видео с объяснением и демонстрацией алгоритма определения ориентации: https://zhuanlan.zhihu.com/p/82973264.

Важно! Все журналы разработки и руководства для нижнего уровня хранятся по следующим адресам:

  • Справочные материалы по датчикам и алгоритмам для проекта беспилотного судна: https://github.com/matreshka15/unmanned-ship-datasheets.
  • Журнал разработки содержит подробную информацию о проекте, начиная с его создания и заканчивая успешными этапами тестирования. Из-за перехода от старого алгоритма определения ориентации к новому, ранние объяснения ориентации предоставляются только для справки.
  • Часть коммуникационного протокола выделена и помещена в этот каталог. То есть: общая структура и коммуникационный протокол.docx.

Формат файла:

  • Папка Periphrals содержит код для внешних устройств STM32.
  • Папка Software содержит программный код STM32, включая алгоритмы PID и другие.
  • Файл CONFIGURATION.h используется для настройки и условной компиляции.
  • initialize.c — код, выполняемый при инициализации STM32.

Функции (совместно с верхним уровнем):

  • Голосовые подсказки о состоянии GPS и работе транспортного средства (достаточно подключить небольшой динамик к верхнему уровню).
  • Управление с помощью пульта дистанционного управления.
  • Сбор координат GPS: во время управления с помощью пульта верхний уровень записывает текущие координаты GPS.
  • Ввод координат GPS для автономной навигации (координаты можно получить с помощью Google Earth или использовать ранее собранные координаты GPS).

От разработчика:

  • Если вы заинтересованы в совместной разработке, пожалуйста, свяжитесь с автором.
  • Электронная почта: 8523429@qq.com.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Программа для беспилотных судов/беспилотных транспортных средств на базе STM32 может использоваться совместно с программой для Raspberry Pi или отдельно. Расширить Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/Matreshka15-USV-STM32F103-part.git
git@gitlife.ru:oschina-mirror/Matreshka15-USV-STM32F103-part.git
oschina-mirror
Matreshka15-USV-STM32F103-part
Matreshka15-USV-STM32F103-part
master