Конфигурация рамы и ориентация контроллера
Mission Planner для технического персонала · Урок 9 из 43 · Модуль 2. Ввод аппарата в эксплуатацию
Геометрия аппарата, назначение выходов и ориентация платы. Ошибка на этом шаге приводит к опрокидыванию в первые полсекунды полёта.
Неверный FRAME_TYPE — самая частая причина краша при первом взлёте. Проверка через Motor Test занимает десять секунд и снимает этот риск.
Содержание
1. Цели урока
После этого урока вы будете понимать:
- как задаются
FRAME_CLASSиFRAME_TYPEдля мультироторов и почему после них нужна перезагрузка; - что буквы на кнопках Motor Test — это порядок обхода, а не номера моторов;
- как проверить порядок и направление вращения моторов и что делать при несовпадении;
- как настраиваются выходы для самолётов, VTOL и наземных аппаратов;
- что делает
AHRS_ORIENTATIONи почему его задают до калибровок.
2. Конфигурация рамы для мультироторов
Геометрию мультиротора полностью определяют два параметра. FRAME_CLASS задаёт, сколько моторов и как они скомпонованы, FRAME_TYPE — как они расположены относительно носа. Из этой пары автопилот строит матрицу микширования: сколько тяги добавить каждому мотору, чтобы получить нужный момент по крену, тангажу и рысканию.
Экран Frame Type
SETUP → Mandatory Hardware → Frame Type.

Верхний ряд Frame Class — класс рамы, ниже Frame Type — вариант компоновки. Выбранный класс подсвечен серым. Обратите внимание на подписи в правой части: «X and H are NOT interchangeable the prop rotation changes» и «This is the Y6B and prop rotation changes from the old Y6A»
Экран — это графическая надстройка над двумя параметрами. Щелчок по картинке класса записывает FRAME_CLASS, щелчок по радиокнопке типа — FRAME_TYPE. Ничего третьего экран не пишет.
Значения FRAME_CLASS
Полный список для ArduCopter 4.6.x и 4.7 (параметр не переименовывался):
| Значение | Класс рамы |
|---|---|
| 0 | Undefined — не задано, аппарат не заармится |
| 1 | Quad — 4 мотора |
| 2 | Hexa — 6 моторов |
| 3 | Octa — 8 моторов в одной плоскости |
| 4 | OctaQuad — 8 моторов попарно (соосные пары на четырёх лучах) |
| 5 | Y6 — 6 моторов на трёх лучах |
| 6 | Heli — вертолёт классической схемы |
| 7 | Tri — 3 мотора с сервоприводом наклона хвостового |
| 8 | SingleCopter |
| 9 | CoaxCopter |
| 10 | BiCopter — 2 мотора с наклоном |
| 11 | Heli_Dual — вертолёт продольной или соосной схемы |
| 12 | DodecaHexa — 12 моторов попарно на шести лучах |
| 13 | HeliQuad |
| 14 | Deca — 10 моторов |
| 15 | Scripting Matrix — матрица микширования задаётся Lua-скриптом |
| 16 | 6DoF Scripting |
| 17 | Dynamic Scripting Matrix |
Значения FRAME_TYPE
Список зависит от класса: для Tri и классических вертолётов FRAME_TYPE не используется вообще.
| Значение | Тип | Комментарий |
|---|---|---|
| 0 | Plus | Луч смотрит вперёд по оси аппарата |
| 1 | X | Самый распространённый вариант: нос между лучами |
| 2 | V | Несимметричная V-компоновка |
| 3 | H | Не взаимозаменяем с X: отличается направлением вращения винтов |
| 4 | V-Tail | |
| 5 | A-Tail | |
| 6 | PlusRev | Plus с обратным направлением вращения моторов |
| 10 | Y6B | Направление вращения отличается от старой схемы Y6A |
| 11 | Y6F | Схема FireFlyY6 |
| 12 | BetaFlightX | Порядок моторов как в BetaFlight |
| 13 | DJIX | Порядок моторов как у DJI |
| 14 | ClockwiseX | Нумерация по часовой стрелке |
| 15 | I | Только для Octa (H, положенная набок) |
| 18 | BetaFlightXReversed | BetaFlightX с обратным вращением |
| 19 | Y4 | Четырёхмоторная схема Y4 |
Те же параметры в списке параметров
CONFIG → Full Parameter List, в поле Search введите FRAME_:

Колонка Options показывает допустимые значения для подключённой прошивки — это надёжнее любой таблицы в учебнике. На снимке FRAME_CLASS = 5 (Y6) при значении по умолчанию 1, FRAME_TYPE = 0 (Plus)
FRAME_CLASS или FRAME_TYPE вступает в силу только после перезагрузки автопилота — до неё Motor Test будет отрабатывать старую компоновку. Записали параметр (Write Params) — перезагрузите плату и убедитесь, что в строке Class на экране Motor Test отображается ожидаемый класс.3. Проверка через Motor Test
SETUP → Optional Hardware → Motor Test.

Экран Motor Test для Y6 в компоновке Plus. Строки Class и Type подтверждают, какую раму прошивка считает текущей, а подписи справа от кнопок дают готовое соответствие «кнопка → номер мотора и направление»
Что означают буквы на кнопках
Это место путают чаще всего. Кнопки подписаны буквами A, B, C… — и это не номера моторов. Буква — это порядковый номер обхода: моторы проверяются по кругу по часовой стрелке, начиная с переднего правого. Какому физическому выходу соответствует каждая буква, зависит от класса и типа рамы, поэтому Mission Planner подписывает соответствие прямо на экране.
На снимке выше для Y6/Plus видно:
| Кнопка | Motor Number (выход автопилота) | Вращение |
|---|---|---|
| Test motor A | 5 | CW — по часовой стрелке |
| Test motor B | 1 | CCW — против часовой |
| Test motor C | 6 | CCW |
| Test motor D | 4 | CW |
| Test motor E | 2 | CW |
| Test motor F | 3 | CCW |
Для сравнения — самая массовая схема, квадрокоптер X:
| Кнопка | Motor Number | Вращение | Положение на раме |
|---|---|---|---|
| A | 1 | CCW | Передний правый |
| B | 4 | CW | Задний правый |
| C | 2 | CCW | Задний левый |
| D | 3 | CW | Передний левый |

Квадрокоптер X, вид сверху, нос вверх. Синие цифры в кружках — номера выходов автопилота (Motor Number), красные буквы — порядок обхода в Motor Test. Хорошо видно правило: диагональные моторы вращаются в одну сторону, соседние — в противоположные
FRAME_TYPE.Порядок проверки
- Снимите винты. Проверьте, что аппарат стоит устойчиво и придержан.
- Подайте питание на силовую часть: Motor Test управляет регуляторами, поэтому одного USB недостаточно — нужна батарея (или лабораторный источник).
- Убедитесь, что в строках Class и Type отображается ожидаемая рама. Если нет — параметры записаны, но плата не перезагружалась.
- Установите Throttle 5–10 % и Duration 2 секунды. Больше не нужно: задача — увидеть, какой мотор дёрнулся и куда крутится.
- Нажимайте
Test motor A, затемB,C… по очереди. - После каждого нажатия фиксируйте: какой физический мотор отозвался и в какую сторону он крутится.
- Сверьте полученную последовательность с подписями на экране и с диаграммой ArduPilot. Моторы должны отзываться по кругу по часовой стрелке, начиная с переднего правого.
- Кнопка
Test all in Sequenceпрогоняет тот же обход автоматически — удобно для финальной проверки, когда порядок уже подтверждён вручную. - Кнопка
Test all motorsзапускает все моторы одновременно,Stop all motors— немедленно останавливает. Аварийная остановка — именноStop all motors.
MAV_CMD_DO_MOTOR_TEST с номером по порядку обхода, типом газа «проценты», значением из поля Throttle % и длительностью из поля Duration. Максимальная длительность, которую примет прошивка, — 600 секунд; всё, что больше, обрезается. По истечении времени моторы останавливаются сами, даже если связь с наземной станцией пропала.Кнопки Spin Arm и Spin Min
Две зелёные кнопки справа — это не часть проверки рамы, а быстрый способ настроить два важных параметра холостого хода прямо из этого экрана.
| Кнопка | Параметр | Смысл |
|---|---|---|
| Set Motor Spin Arm | MOT_SPIN_ARM |
Минимальный выход после армирования: моторы уже крутятся, но тяги не создают. Служит подтверждением «аппарат готов» |
| Set Motor Spin Min | MOT_SPIN_MIN |
Точка, с которой начинается тяга. Должен быть выше MOT_SPIN_ARM |
Методика подбора: постепенно увеличивайте Throttle % и жмите Test motor A, пока мотор не начнёт уверенно и без задержек стартовать. Затем нажмите соответствующую зелёную кнопку — Mission Planner предложит записать это значение с небольшим запасом (для Spin Arm — найденный процент плюс 2 %, для Spin Min — плюс 3 %).
Оба параметра хранятся не в процентах, а долей от полного диапазона выхода, то есть числом от 0 до 1. Mission Planner делает пересчёт сам:
\( \mathrm{MOT\_SPIN\_ARM} = \dfrac{P}{100} \), где \( P \) — введённый процент. Например, 6 % \( \Rightarrow \) 0,06.
Почему Motor Test отказывает
Прошивка проверяет несколько условий и при отказе присылает сообщение в DATA → Messages. Расшифровка:
| Сообщение | Причина | Что делать |
|---|---|---|
Motor Test: Board initialising |
Прошивка ещё не завершила инициализацию | Подождать несколько секунд после подачи питания |
Motor Test: vehicle not landed |
Прошивка считает, что аппарат в воздухе | Поставить аппарат на землю; в SITL — убедиться, что предыдущий полёт завершён посадкой |
Motor Test: RC not calibrated |
Не пройдена калибровка радиоаппаратуры | Выполнить Radio Calibration (урок 11) — это следующий обязательный шаг |
Motor Test: Safety switch |
Нажат предохранительный выключатель | Нажать и удерживать кнопку safety до постоянного свечения, либо BRD_SAFETY_DEFLT = 0 |
Motor Test: Motor Emergency Stopped |
Активен аварийный стоп с канала RCx_OPTION = 31 |
Вернуть тумблер аварийного стопа в исходное положение |
Command was denied by the autopilot |
Прошивка отклонила команду целиком | Смотреть DATA → Messages — там будет одно из сообщений выше |
FRAME_TYPE, ни Q_FRAME_TYPE, ни FRAME (например, вы подключены к ArduPlane без QuadPlane), Mission Planner делает весь экран Motor Test неактивным. Для Rover и Boat количество кнопок всегда равно четырём независимо от параметров.Исправление ошибок подключения
Мотор крутится не в ту сторону. Для обычных ESC с тремя фазными проводами поменяйте местами любые два из трёх. Для DShot и BLHeli направление меняется без пайки: бит соответствующего канала в маске SERVO_BLH_RVMASK (бит 0 — выход 1, бит 1 — выход 2 и так далее) либо переключение через конфигуратор BLHeli. Параметр требует перезагрузки.
Моторы отзываются не в том порядке. Возможные причины по убыванию вероятности:
- сигнальные провода надеты на выходы автопилота не в том порядке — проверьте физически;
- выбран не тот
FRAME_TYPE: рама собрана по схеме BetaFlight или DJI, а в параметре стоит обычный X; - изменено назначение выходов: моторы 1–8 соответствуют
SERVOn_FUNCTION= 33…40, моторы 9–12 — значениям 82…85.
FRAME_TYPE под вашу схему (BetaFlightX, DJIX, ClockwiseX), и только потом беритесь за перепайку. В крайнем случае выходы можно переназначить через SERVOn_FUNCTION, но этот способ труднее отследить при последующем обслуживании — обязательно зафиксируйте изменение в документации на аппарат.4. Конфигурация для самолётов
Для ArduPlane геометрия задаётся не одним параметром, а назначением функций выходам. Параметра FRAME_CLASS для самолётной части не существует: прошивка узнаёт схему аппарата по тому, какие функции вы назначили.
Назначение функций выходам
SETUP → Mandatory Hardware → Servo Output или CONFIG → Full Parameter List с поиском SERVO1_:

Группа параметров одного выхода. SERVO1_FUNCTION = 4 — Aileron: значение выбирается из выпадающего списка в колонке Options. Рядом — предельные и нейтральное положения (MIN, MAX, TRIM в микросекундах) и флаг реверса SERVO1_REVERSED
| Схема | Как настраивается |
|---|---|
| Классическая (элероны, руль высоты, руль направления) | SERVOn_FUNCTION: 4 — Aileron, 19 — Elevator, 21 — Rudder, 70 — Throttle |
| Flying wing / дельта | SERVOn_FUNCTION = 77 и 78 (Elevon Left/Right), микширование выполняет автопилот |
| V-tail | SERVOn_FUNCTION = 79 и 80 (VTail Left/Right) |
| QuadPlane | Основные поверхности + Q_ENABLE = 1, Q_FRAME_CLASS, Q_FRAME_TYPE, подъёмные моторы на функциях 33–40 |
Три сопутствующих параметра каждого выхода видны на снимке и настраиваются вместе с функцией: SERVOn_MIN и SERVOn_MAX ограничивают ход поверхности, SERVOn_TRIM задаёт нейтраль, SERVOn_REVERSED = 1 меняет направление отклонения. Направление проверяют на земле: отклоняете аппарат по крену вправо — правый элерон должен идти вверх.
QuadPlane
Q_ENABLE = 1 в ArduPlane появляется полный набор мультироторных контуров с префиксом Q_. По сути вы настраиваете два аппарата: самолётную часть (TECS, L1/NPFG) и мультироторную (Q_A_RAT_*, Q_P_*). Тюнинг ведётся раздельно: сначала висение в режиме QHOVER, затем горизонтальный полёт в FBWA. Значение Q_ENABLE = 2 дополнительно включает вертикальный взлёт при старте миссии в режиме AUTO. Параметр требует перезагрузки.Набор допустимых значений Q_FRAME_CLASS уже, чем у FRAME_CLASS в ArduCopter: 1 — Quad, 2 — Hexa, 3 — Octa, 4 — OctaQuad, 5 — Y6, 7 — Tri, 10 — Single/Dual, 12 — DodecaHexa, 14 — Deca, 15 и 17 — скриптовые матрицы. Вертолётных классов здесь нет.
5. Конфигурация для наземных аппаратов
Для Rover ключевой параметр — FRAME_CLASS, но список значений у него свой, не совпадающий с ArduCopter:
| Значение | Тип |
|---|---|
| 0 | Undefined |
| 1 | Rover — колёсная машина с раздельным управлением газом и рулём |
| 2 | Boat — катер |
| 3 | Balance Bot — двухколёсный балансирующий робот |
Тип рулевого управления задаётся назначением функций выходам:
- Ackermann (автомобильная схема):
SERVO1_FUNCTION = 26(GroundSteering),SERVO3_FUNCTION = 70(Throttle); - Skid steering (танковая схема, поворот разностью скоростей):
SERVO1_FUNCTION = 73(ThrottleLeft),SERVO3_FUNCTION = 74(ThrottleRight).
Экран Motor Test работает и для Rover, но кнопок всегда четыре независимо от реального числа приводов — Mission Planner не разбирает компоновку наземных аппаратов.
↑ К оглавлению6. Ориентация платы
Параметр AHRS_ORIENTATION описывает, как полётный контроллер установлен относительно аппарата. Значение 0 (None) означает: стрелка на плате смотрит вперёд, плата установлена горизонтально компонентами вверх. Прошивка разворачивает показания IMU и внутреннего компаса в систему координат аппарата.
Значения AHRS_ORIENTATION
Доступны все повороты, кратные 45°. Наиболее употребительные:
| Значение | Название | Описание |
|---|---|---|
| 0 | None | Штатная установка: стрелка вперёд, компонентами вверх |
| 1 | Yaw45 | Повёрнута на 45° по часовой стрелке (вид сверху) |
| 2 | Yaw90 | Повёрнута на 90° по часовой стрелке |
| 4 | Yaw180 | Развёрнута назад |
| 6 | Yaw270 | Повёрнута на 270° по часовой (то же, что 90° против) |
| 8 | Roll180 | Перевёрнута вверх ногами, стрелка по-прежнему вперёд |
| 10 | Yaw90Roll180 | Перевёрнута и повёрнута на 90° |
| 12 | Pitch180 | Перевёрнута через нос |
| 14 | Yaw270Roll180 | Перевёрнута и повёрнута на 270° |
| 16 | Roll90 | Поставлена на бок |
| 24 | Pitch90 | Поставлена вертикально, «носом вверх» |
| 101 / 102 | Custom 1 / Custom 2 | Произвольный угол через CUST_ROT1_ROLL/PIT/YAW или CUST_ROT2_* |
Yaw90Roll180 — сначала рыскание 90°, затем крен 180°. Порядок важен: Roll180Yaw90 дал бы другой результат, поэтому в списке параметров имена приведены строго в порядке применения. Всего в прошивке 4.7 определено 44 стандартных ориентации (0–43) плюс пользовательские.AHRS_ORIENTATION задаётся до калибровки акселерометра. Калибровка определяет смещения в системе координат, уже развёрнутой согласно этому параметру. Если изменить ориентацию после, записанные смещения станут бессмысленными, и калибровку придётся повторять целиком. Параметр вступает в силу после перезагрузки.Ориентация компаса
Ориентация внешнего компаса задаётся отдельно: COMPASS_ORIENT для первого, COMPASS_ORIENT2 и COMPASS_ORIENT3 для второго и третьего. Набор значений тот же, что у AHRS_ORIENTATION.
COMPASS_ORIENTигнорируется, если компас не помечен как внешний (COMPASS_EXTERNAL). Для внутренних компасов действуетAHRS_ORIENTATION— задавать ориентацию дважды не нужно.- Проверка правильности в северном полушарии: наклон носом вниз должен увеличивать
MagX, наклон правым боком вниз —MagY, переворот вверх ногами — уменьшатьMagZ. В южном полушарии знаки противоположны.
COMPASS_AUTO_ROT: 0 — выключено, 1 — только проверить и сообщить, 2 — проверить и исправить автоматически для внешних компасов, 3 — то же с распознаванием поворотов на 45°. Не путайте с галочкой Automatic Declination на экране калибровки: она относится к магнитному склонению, а не к ориентации датчика.7. Практика
Задания выполняются в симуляторе SITL и не требуют реального аппарата. Выполните их до перехода к следующему уроку.
Задание 9.1. Смена класса рамы и её последствия
Выполняется в симуляторе SITL, реальный аппарат не требуется.
- Запустите SITL с ArduCopter, дождитесь загрузки параметров и откройте SETUP → Optional Hardware → Motor Test. Запишите, сколько кнопок Test motor показано и что написано в строках Class и Type.
- В CONFIG → Full Parameter List найдите
FRAME_CLASS, поставьте 2 (Hexa), нажмите Write Params. Вернитесь на экран Motor Test без перезагрузки и убедитесь, что число кнопок не изменилось. - Перезагрузите SITL, снова откройте Motor Test. Кнопок должно стать шесть. Это практическое подтверждение флага RebootRequired у параметра.
- Выпишите соответствие «кнопка → Motor Number → вращение» для Hexa X и сравните с диаграммой из документации ArduPilot.
- Верните
FRAME_CLASS = 1иFRAME_TYPE = 1.
Задание 9.2. Порядок обхода для разных типов рамы
Выполняется в симуляторе SITL, реальный аппарат не требуется.
- При
FRAME_CLASS = 1последовательно установитеFRAME_TYPE= 1 (X), затем 13 (DJIX), затем 14 (ClockwiseX), каждый раз перезагружая SITL. - Для каждого варианта выпишите таблицу «кнопка → Motor Number → вращение» с экрана Motor Test.
- Ответьте письменно: геометрия рамы во всех трёх случаях одинакова — что именно меняется и в какой ситуации это избавляет от перепайки?
- Проверьте на всех трёх таблицах правило диагоналей: моторы на одной диагонали вращаются в одну сторону.
Задание 9.3. Ориентация платы и горизонт
Выполняется в симуляторе SITL, реальный аппарат не требуется.
- На стоящем аппарате запомните показания крена и тангажа в HUD (должны быть около нуля).
- Установите
AHRS_ORIENTATION = 8(Roll180), перезагрузите SITL и посмотрите на HUD. Объясните, почему горизонт перевернулся, хотя аппарат в симуляторе не двигался. - Установите
AHRS_ORIENTATION = 2(Yaw90), перезагрузите и сравните курс в HUD с прежним значением. На сколько градусов он сместился? - Верните
AHRS_ORIENTATION = 0и убедитесь, что показания вернулись к исходным. - Сделайте вывод: почему изменение этого параметра после калибровки акселерометра требует её повторения?
Задание 9.4. Самолётные выходы
Выполняется в симуляторе SITL, реальный аппарат не требуется.
- Запустите SITL с ArduPlane. В CONFIG → Full Parameter List найдите по маске
SERVO1_…SERVO4_текущие значенияSERVOn_FUNCTIONи выпишите, какая функция назначена каждому выходу по умолчанию. - Переведите аппарат в схему «летающее крыло»: назначьте двум выходам функции 77 и 78, уберите отдельные элероны и руль высоты.
- Установите
Q_ENABLE = 1, перезагрузите SITL и оцените, на сколько выросло общее число параметров. Найдите пять групп с префиксомQ_и объясните, какому контуру управления каждая соответствует. - Верните исходные значения.
8. Проверьте себя
Сформулируйте ответ своими словами, прежде чем сверяться со справочником ответов.
- Какие два параметра полностью определяют геометрию мультиротора и как проверить их корректность без взлёта?
- Что означает
Q_ENABLE = 1и какие два независимых набора настроек это порождает? - Почему
AHRS_ORIENTATIONнеобходимо задавать до калибровки акселерометра?
9. Чек-лист самопроверки
Урок освоен, если каждый пункт выполнен на практике:
FRAME_CLASSиFRAME_TYPEсверены с колонкой Options в списке параметров, плата перезагружена- Строки Class и Type на экране Motor Test показывают ожидаемую раму
- Motor Test пройден со снятыми винтами, порядок отклика моторов совпал с подписями на экране
- Направление вращения каждого мотора соответствует диаграмме, правило диагоналей выполняется
- Понятно, что буквы на кнопках — порядок обхода, а не номера выходов
AHRS_ORIENTATIONзадан до калибровки акселерометра- Для внешнего компаса задан
COMPASS_ORIENT, для внутреннего он не требуется
10. Что дальше
- Предыдущий урок: 8. Прошивка автопилота: выбор версии и процедура
- Следующий урок: 10. Калибровка акселерометра и компаса
- Полный перечень тем: Содержание курса
- мод. : Вторник, 25 августа 2026

