Микширование моторов квадрокоптера

ПИД выдаёт четыре числа — газ и поправки по трём осям; микшер превращает их в команды конкретным моторам.

Микширование (motor mixing) — правило, по которому общий газ и поправки по крену, тангажу и рысканию складываются в команду каждому мотору.

Схема X-квадрокоптера

У квадрокоптера в конфигурации X четыре мотора по углам. Чтобы накрениться вправо, левые моторы добавляют тягу, правые убавляют. Чтобы клюнуть носом — задние добавляют, передние убавляют. Рыскание хитрее: диагонально расположенные моторы крутятся в одну сторону, и чтобы повернуть аппарат, мы ускоряем пару, крутящуюся в одну сторону, и замедляем другую — используется реактивный момент винтов.

Команда каждому мотору — это сумма общего газа и трёх поправок с нужными знаками:

$$ m_i = T + (\pm)\,r + (\pm)\,p + (\pm)\,y $$

Расчёт команд

throttle = 50.0   # общий газ, %
roll = 5.0        # поправка по крену
pitch = 3.0       # поправка по тангажу
yaw = 2.0         # поправка по рысканию
# Знаки для X-схемы: моторы FL, FR, RL, RR
m_FL = throttle - roll + pitch - yaw
m_FR = throttle + roll + pitch + yaw
m_RL = throttle - roll - pitch + yaw
m_RR = throttle + roll - pitch - yaw
print("Перед-лево  FL:", round(m_FL, 1))
print("Перед-право FR:", round(m_FR, 1))
print("Зад-лево    RL:", round(m_RL, 1))
print("Зад-право   RR:", round(m_RR, 1))
print("Сумма (контроль газа):",
      round(m_FL + m_FR + m_RL + m_RR, 1))

Вывод:

Перед-лево  FL: 50.0
Перед-право FR: 60.0
Зад-лево    RL: 49.0
Зад-право   RR: 41.0
Сумма (контроль газа): 200.0

Поправки добавились к моторам с правильными знаками, а их сумма по всем моторам равна $4\times$ газ (200) — поправки по осям взаимно компенсируются, общий газ (высота) не меняется при чистом манёвре. Это важное свойство правильного микшера.

Как работает под капотом

После сложения значения «обрезаются» в допустимый диапазон (0–100% газа). Если поправки большие, мотор может упереться в потолок — наступает насыщение, и манёвр выходит слабее запрошенного. Хорошие автопилоты при насыщении немного уменьшают общий газ, чтобы сохранить управляемость (приоритет — удержать угол, а не высоту).

Частые ошибки

  • Перепутать знаки моторов — аппарат «уходит» в противоположную сторону или раскачивается.
  • Забыть про насыщение: при максимальном газе моторам нечем добавить на манёвр.
  • Игнорировать направление вращения винтов при разборе рыскания.

Итог

  • Команда мотору = общий газ плюс поправки по крену, тангажу, рысканию со своими знаками.
  • Правильный микшер: чистый манёвр не меняет суммарного газа (высоту).
  • На максимуме газа наступает насыщение; приоритет отдают удержанию угла.
Проверьте себя
1. Какое свойство характеризует правильный микшер при чистом манёвре (без изменения газа)?
AВсе моторы получают одинаковую команду
BСумма команд по всем моторам не меняется — поправки взаимно компенсируются
CОдин мотор выключается
DГаз всегда падает до нуля
2. Что происходит при насыщении мотора (упор в 100% газа)?
AМанёвр становится сильнее
BМотору нечем добавить на манёвр, и поворот выходит слабее запрошенного
CАппарат набирает высоту быстрее
DРегулятор выключается навсегда