Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Внести вклад в разработку кода
Синхронизировать код
README.md
PYB差速主控底盘开源工程
Проект представляет собой
Это двухколёсная тележка с дифференциальным приводом или робот-платформа, основанная на PYB в качестве однокристального микроконтроллера.
Система хорошо подходит для систем управления двухколёсным дифференциальным приводом. В систему уже интегрированы такие датчики, как одометр и IMU, а также разработана функция последовательной связи с узлом ROS, что делает её подходящей для использования в качестве нижнего узла робота ROS.
Сопровождающие:
- Гао Хунчжи
- Ли Цзяло
- Го Хэ
История версий
pyb-controller-v3.4 2021/4/25
- Значительно улучшен код, добавлены комментарии к параметрам, чтобы различать настраиваемые и системные параметры по умолчанию.
- Интегрировал модуль mpu9250 в driver_flag для выполнения, только считывает 9-осевые значения IMU в однокристальном микроконтроллере, но не отправляет их на верхний узел по умолчанию.
- По умолчанию установил кодировщик как оптический кодировщик, если требуется замена, необходимо изменить параметры PID в main.py и параметры робота и кодировщика в encoder.py.
pyb-controller-v3.3 2021/4/15
- Добавлена коммуникационная связь Micropython и анонимного рабочего места для реализации задач связи и управления, которые могут реализовать функцию отображения параметров двигателя в реальном времени и настройки PID.
- Оптимизирован код для повышения эффективности выполнения кода, удалён ненужный OLED (можно добавить самостоятельно).
pyb-controller-v3.2 2021/3/24
- Улучшена связь между верхним и нижним узлами ROS.
pyb-controller-v3.1 2021/3/1
- Добавлен USB-порт, который настроен как режим USB_VCP, так что однокристальный микроконтроллер может напрямую взаимодействовать с верхним узлом через USB-порт.
pyb-controller-v3.0 2021/2/20
- После добавления обратной связи PID для двигателя добавлена линейная коррекция, поскольку параметры были плохо настроены, используется этот метод.
Архитектура проекта
Структура кода
- main.py
- motor.py
- encoder.py
- pid.py
- oled.py
- ps2.py
- serial.py
- imu.py
- mpu9250.py
Аппаратные средства
-
PYB(STM32F405)* 1
-
Тележка с кодированным двигателем (кодированный двигатель * 2 + L298N * 1) * 1
-
Джойстик PS2 * 1
-
Модуль привода двухколёсного кодированного двигателя * 1
-
Общий модуль питания * 1
-
mpu9250(9 осей) модуль датчика * 1
Схема подключения
Внешний контакт |
Левый контакт PYB |
|
|
|
Правый контакт PYB |
Внешний контакт |
encoderMA_A |
Y1(TIM8 CH1) |
|
|
|
|
|
encoderMA_B |
Y2(TIM8 CH2) |
|
|
|
|
|
PWMA |
Y3(TIM4 CH3) |
|
|
|
|
|
PWMB |
Y4(TIM4 CH4) |
|
|
|
|
|
AIN1 |
Y5 |
|
|
|
Y12 |
\ |
AIN2 |
Y6 |
|
|
|
Y11 |
\ |
\ |
Y7 |
|
|
|
(IIC2 SDA)Y10 |
SDA(OLED) |
\ |
Y8 |
|
|
|
(IIC2 SCL)Y19 |
SCL(OLED) |
SCL(mpu9250) |
X9(IIC1 SCL) |
|
|
|
X8 |
\ |
SDL(mpu9250) |
X10(IIC1 SDA) |
|
|
|
X7 |
\ |
BIN1 |
X11 |
|
|
|
X6 |
\ |
BIN2 |
X12 |
|
|
|
|
\ |
|
|
|
|
|
(UART2 RX)X4 |
TX(USB-TTL) |
|
|
|
|
|
(UART2 TX)X3 |
RX(USB-TTL) |
|
|
|
|
|
X2 |
encoderMB_B(TIM5 CH2) |
|
|
|
|
|
X1 |
encoderMB_A(TIM5 CH1) |
--- |
--- |
--- |
--- |
--- |
--- |
--- |
|
X18 |
X19 |
X20 |
X21 |
X22 |
|
|
DAT(PS2) |
CMD(PS2) |
CS(PS2) |
CLK(PS2) |
\ |
|
Приложение
- STM32 имеет кодированные функции таймера: 1, 2, 3, 4, 5, 8, эти несколько таймеров CH1, CH2 можно использовать для измерения скорости кодировщика AB, CH1N и другие каналы с N не могут использоваться для измерения скорости кодировщика. Таймеры 6 и 7 являются базовыми периодическими, используются только для синхронизации и подсчёта функций, без таких специальных функций, как PWM.
- Встроенный акселерометр — MMA7660, это трёхмерный датчик ориентации/обнаружения движения от NXP, который представляет собой трёхмерный акселерометр без трехосного гироскопа, такого как mpu6050 шестиосный модуль датчика, то есть трёхосный акселерометр + трёхосный гироскоп. Диапазон измерения этого акселерометра составляет ±1,5 г, он использует интерфейс связи I2C, при использовании встроенного акселерометра нельзя использовать контакты X9 и X10, иначе акселерометр не сможет нормально работать, и наоборот.
- Этот однокристальный микроконтроллер имеет мало контактов, он не подходит для управления четырёхколёсными транспортными средствами, вам необходимо приобрести PLUS версию с большим количеством обычных портов ввода-вывода.
- Коммуникационный протокол верхнего и нижнего узлов ROS использует кортежи в качестве основного формата связи, отправляющей и принимающей сторонам нужно только выполнять операции кодирования и декодирования, чтобы напрямую использовать его, что удобно и быстро.
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )