Розподіл керування (змішування)
:::note Розподіл керування замінює застарілий підхід змішування, який використовувався в PX4 v1.13 або раніше. Документацію по PX4 v1.13 дивіться в: Змішування та приводи, Файли геометрії та Додавання налаштувань нового планера. :::
PX4 приймає бажані команди моменту та тяги від основних контролерів і перекладає їх у команди приводів, які керують двигунами чи сервоприводами.
Переклад залежить від фізичної геометрії планеру. Скажемо наприклад, за командою моменту "повернути праворуч":
- Літак з одним сервоприводом на елерон накаже одному сервоприводу підняти, а іншому опустити їх.
- Мультикоптер порине вправо змінивши швидкість всіх двигунів.
PX4 відокремлює цю логіку перекладу, що називається "змішуванням", від контролера позиції/швидкості. Це гарантує, що основним контролерам не потрібна особлива обробка для кожної геометрії планерів і значно покращує повторне використання.
Крім того, PX4 абстрагує відображення функцій виводу до конкретних апаратних виходів. Це означає, що будь-який двигун або сервопривід може бути призначений майже на будь-який фізичний вивід.
Конвеєр керування приводами
Огляд конвеєрів змішування в термінах модулів та uORB (натисніть для показу в повноекранному режимі):
Примітки:
- Регулятор швидкості видає задані значення моменту та тяги
- Модуль
control_allocator
:- обробляє різні геометрії на основі параметрів конфігурації
- робить змішування
- обробляє відмови двигунів
- публікує сигнали керування двигуном та сервоприводами
- публікує корекції для сервоприводів окремо щоб їх можна було додати як відхилення при перевірці приводів (використовуючи тестувальні повзунки).
- Драйвери виходу:
- обробляють апаратну ініціалізацію та оновлення
- використовують поділювану бібліотеку src/libs/mixer_module. Драйвер визначає префікс параметру, наприклад
PWM_MAIN
, який бібліотека використовує для налаштування. Її головне завдання зробити вибірку з вхідних дані та призначити правильні дані на виходи засновуючись на встановлених користувачем значеннях параметрів<param_prefix>_FUNCx
. Наприклад, якщоPWM_MAIN_FUNC3
встановлено у Motor 2, це означає що на 2-й двигун зactuator_motors
встановлено 3-й вивід. - функції виводу визначаються у src/lib/mixer_module/output_functions.yaml.
- Якщо ви хочете керувати виводом з MAVLink, встановіть відповідну вихідну функцію в Offboard Actuator Set x, а потім відправте MAVLink команду MAV_CMD_DO_SETUATOR.
Додавання нової геометрії або функції виводу
Дивіться цей коміт як додати нову геометрію. Інтерфейс QGC автоматично покаже правильний інтерфейс налаштування, коли в новій геометрії встановлено CA_AIRFRAME.
Цей коміт показує як додати нову функцію виходу. Будь-яка тема uORB може бути підписана і закріплена за функцією.
Зауважте що параметри для розподілу керування визначені у src/modules/control_allocator/module.yaml Схема для цього файлу є тут (конкретніше, шукайте термін mixer:
Встановлення геометрії планеру за замовчуванням
Коли додаєте нові налаштування планера, встановіть відповідне значення CA_AIRFRAME змішувача та інші значення за замовчуванням для геометрії.
Ви можете це побачити наприклад, у файлі конфігурації планера 13200_generic_vtol_tailsitter
sh
...
param set-default CA_AIRFRAME 4
param set-default CA_ROTOR_COUNT 2
param set-default CA_ROTOR0_KM -0.05
param set-default CA_ROTOR0_PY 0.2
...
Налаштування геометрії та виходів
Геометрія для плати та параметри за замовчуванням для рухомого засобу встановлюються (з файлу налаштувань планера) коли планер обирається у QGroundControl: Основне налаштування > Планери.
Параметри геометрії та відображення виводу для певних планерів та апаратного забезпечення польотних контролерів потім налаштовується у QGroundControl на екрані Приводи: Базове налаштування > Налаштування та перевірка приводу.