Микширование моторов квадрокоптера
ПИД выдаёт четыре числа — газ и поправки по трём осям; микшер превращает их в команды конкретным моторам.
Микширование (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% газа). Если поправки большие, мотор может упереться в потолок — наступает насыщение, и манёвр выходит слабее запрошенного. Хорошие автопилоты при насыщении немного уменьшают общий газ, чтобы сохранить управляемость (приоритет — удержать угол, а не высоту).
Частые ошибки
- Перепутать знаки моторов — аппарат «уходит» в противоположную сторону или раскачивается.
- Забыть про насыщение: при максимальном газе моторам нечем добавить на манёвр.
- Игнорировать направление вращения винтов при разборе рыскания.
Итог
- Команда мотору = общий газ плюс поправки по крену, тангажу, рысканию со своими знаками.
- Правильный микшер: чистый манёвр не меняет суммарного газа (высоту).
- На максимуме газа наступает насыщение; приоритет отдают удержанию угла.