Перейти к содержимому
2

87. Контроллеры полёта: PX4, ArduPilot; прошивка и параметры #

ФК (статья 86) — это «железо» + прошивка. Здесь — два открытых стандарта: PX4 и ArduPilot (характеристики, режимы, параметры), как устроены контуры управления (PID, фильтр Калмана) и как работать с прошивкой: выбор версии, обновление, параметры, логи, failsafe. После этой статьи — можно открыть QGC (статья 88) и не потерять его в 1 500+ параметрах.

Содержание

1. Цели статьи

Практика работы с полётным контроллером: выбор/понимание PX4 и ArduPilot, режимы полёта, контуры управления (PID + фильтр Калмана), регламент прошивки и параметров. Материал рассчитан на инженера и оператора: настроить ФК, прочитать логи, не «сломать» параметры.

  • Различать PX4 и ArduPilot (железо, режимы, параметры, сообщество).
  • Знать режимы: Stabilize/Accro, AltHold/AltCtrl, PosHold, Auto, RTL, Land.
  • Понимать контур: PID (P/I/D), 1–4 кГц, фильтр Калмана (EKF2).
  • Управлять прошивкой: версия, обновление (\(16 МБ \approx 20\ \text{мин} \) на 115 200), параметры (бэкап/категории).
  • Читать логи (100 Гц, 20+ каналов), настраивать failsafe (статья 89).
Позиция в категории 9. 86 — архитектура, 87 (здесь) — ФК и прошивка, 88 — связь/ГНС, 89 — миссии, 90 — нагрузки. ФК — «точка сборки» всех последующих тем категории.
↑ К оглавлению

2. Глоссарий величин

Полный перечень величин с единицами измерения.

ВеличинаОбозначениеЕдиницыТипичные значения
Частота контура управленияf_кГц (кГц)1 000–4 000
Период шагаTмс0,25–1
Коэффициент P (пропорциональный)Kpбезразмерный (1/с)1–100 (по контуру)
Коэффициент I (интегральный)Ki1/с0,1–20
Коэффициент D (дифференциальный)Kdс0,001–0,1
Ошибка (rate-контур)eрад/с (°/с)0–100
Число параметровшт1 000–2 500
Размер прошивки (флеш)МБ8–32
Лог: частота / каналыf_логГц / шт50–100 Гц / 20–100
Сигнал радиоканала (RSSI)RSSIдБм−60…−110 (порог −100…−105)
Напряжение failsafe (батарея)VfsВ6S: 19,8 (3,3 В/ячейка × 6)
↑ К оглавлению

3. ФК: железо и прошивка

Аппаратная часть ФК (статья 86):

  • Процессор (MCU): ARM Cortex-M4/M7, 400–800 МГц (одиночный или двойной — «дублированный» для безопасности, тяжёлые БПЛА).
  • IMU: 1–2 блока (gyro/accel/магнито), SPI 1–8 МГц (опрос 1–8 кГц, статья 86).
  • Память: флеш 8–64 МБ (прошивка + параметры + логи), DDR 32–256 МБ (логи, навигация, RTK).
  • Интерфейсы: UART 6–10 (связь, телеметрия, GNSS, камера), CAN 1–2 (дальние ESC/приводы), I2C/SPI (датчики), PWM 8–16 (приводы), SD-карта (логи).
  • Питание: 4,8–5,5 В (BEC/PDB, статья 86), ток 0,5–3 А.

Требования к железу по классу БПЛА: мультиротор лёгкий (до 20 кг) — 1 IMU, 1 UART-резерв; тяжёлый/крылатый (50+ кг) — 2 IMU, CAN, DDR 256, «дублированный» MCU (отказоустойчивость: при отказе одного MCU второй продолжает контур).

↑ К оглавлению

4. PX4 и ArduPilot

Два открытых стандарта ФК (PX4 — DLR и сообщество; ArduPilot — международное сообщество). [ArduPilot — ArduPilot (рисунок — Wikipedia)]

КритерийPX4ArduPilot
ЯдроPOSIX (NuttX/RTOS), C++RTOS (ChibiOS), C
ФильтрEKF2 (ECL)EKF2 (интегрирован)
ЖелезоPixhawk (Pixhawk 4, CubeOrange/Black, CubeYellow)Pixhawk, Cube, и другие по стандарту
Режимы (коптер)Offboard, AltCtrl, PosHold, Auto, RTL, Land, TerminateStabilize, Acro, AltHold, PosHold, Land, RTL, Auto, Guided, Loiter, Circle, Drift, Brake, Flip
Параметры~1 000–1 500~1 500–2 500 (по платформе: Copter/Plane/Rover)
APIMAVLink, uXRCE-DDSMAVLink, uXRCE-DDS
Типовое применениеИсследования, промышленность, мультиротор/крылатыйЛюбители/профи, мультиротор/крылатый/лодочный (Rover)

Общее: MAVLink (статья 88), EKF2, QGroundControl и ArduPilot Mission Planner (наземная станция управления, ГНС, статья 88), параметр-менеджеры. Различия: PX4 — «чище» API (Offboard — внешний код), ArduPilot — больше режимов «из коробки». Для промышленного БПЛА (РФ) — чаще PX4 (OpenDroneID, интеграция), для любительских/средних — ArduPilot (сообщество, форумы).

↑ К оглавлению

5. Контур управления

Структура: датчики → EKF2 (фильтр Калмана) → планировщик (миссия/режим) → контуры (rate/attitude/velocity/position) → приводы.

Фильтр Калмана (EKF2). [Фильтр Калмана — Kalman_filter / Фильтр Калмана] «Склеивает» IMU (быстро, дрейфует) + баро (высота) + GNSS (позиция) + магнито (азимут): оценивает 14–25 состояний (позиция, скорость, ориентация, смещения датчиков). Выход: позиция/скорость/ориентация на каждом шаге (1–4 кГц). Ошибки: GNSS «прыгает» → фильтр «сглаживает» (но запаздывает); IMU «дрейфует» → GNSS «подтягивает».

Каскад контуров (4 уровня).

  1. Position (позиция): «где хочу» (миссия/оператор) → скорость заданная. Частота 25–100 Гц.
  2. Velocity (скорость): «насколько быстро» → наклон/тяга. Частота 100–500 Гц.
  3. Attitude (ориентация): «какой крен/тангаж/рыскание» → угловая скорость. Частота 100–500 Гц.
  4. Rate (угловая скорость): «как быстро вращаюсь» → тяга моторов/рули. Частота 1–4 кГц.

ПИД (ПИД-регулятор). \(U = Kp\cdot e \) + Ki·∫e·dt + Kd·de/dt: P — «сразу» (быстро, но «перелетает» в нуль), I — «накопленное» (убирает остаточную ошибку), D — «предупреждение» (гасит колебания). Настройка: Kp (основной) → Kd (демпфер) → Ki (последний, 0,1–20). «Качка» → Kp/Kd; «дрейф» → Ki. 20–40 итераций (по логам, статья 94: анализ).

↑ К оглавлению

6. Прошивка и параметры

Выбор версии. PX4/ArduPilot: «stable» (v1.13/v4.4.x) — для полётов; «nightly» — для тестов (не для миссий!). Версия фиксируется в логе (статья 94). Обновление: через GCS (QGC/MP) — \(16 МБ \approx 20\ \text{мин} \) на 115 200 бит/с (статья 86, задача 5); резервная копия параметров — перед обновлением.

Параметры (категории). ~1 500–2 500 параметров; группы:

  • Frame/моторы: тип рамы (X/+/H), порядок ESC, KV (статья 39), ограничение тока.
  • GPS/датчики: GNSS-тип, баро, IMU-калибровки, фильтр EKF2.
  • Контур (PID): rate/attitude/velocity — P/I/D (статья 87 §5).
  • Батарея: S-конфигурация, напряжения (номинал/пустой/failsafe), K/I (статьи 36–38, 93).
  • Failsafe (статья 89): RSSI/телеметрия/батарея/геозона — действия (RTL/Loiter/Land/Terminate).
  • Миссия: высота, скорость, RTL-высота, геозона.

Логирование. SD-карта: 50–100 Гц, 20–100 каналов (позиция, скорость, ориентация, ток, напряжение, IMU-сырые, EKF-статусы). Размер: 28,8 МБ/ч (статья 87, задача 3) → 32 ГБ ≈ 1 000 ч. Анализ: QGC/MP — графики (дрейф, качка, отказы датчиков).

Failsafe-«цепочка». [Failsafe — Failsafe / Отказобезопасность] «Что делать при отказе»: (1) радиоканал (RSSI ниже −100 дБм) → Loiter/RTL; (2) телеметрия (потеря пакетов) → RTL; (3) батарея (V ниже Vfs) → Land/RTL (по остатку); (4) GNSS (нет фикса) → Loiter/IMU; (5) GEOfence (выход из зоны) → RTL. Приоритет: батарея → радиоканал → GNSS → геозона (статья 89 — детально).

↑ К оглавлению

7. Практика: типовые задачи

Задача 1. PID: вклад P

Задача. Rate-контур: Kp = 10, ошибка \(e = 0{,}05\ \text{рад/с} \). Определить вклад P в управляющее воздействие.

Заданные параметры:

ПараметрЗначение
Kp10
e0,05 рад/с

Искомые параметры: UP (безразмерное/ед. привода).

Решение.

  1. UP = Kp·e = 10·0,05 = 0,5.
Ответ: 0,5 (ед. управляющего воздействия на этот контур).

Вывод. P — «пропорционально ошибке»: 0,05 рад/с (2,9°/с) — «маленький» сдвиг, 0,5 — «мягкая» коррекция. При \(e = 1\ \text{рад/с} (57\ \text{°/с}) \) — \(U_{P} = 10 \): «жёсткая». Kp 10 — типично для rate; для attitude — 0,5–2 (медленнее); для velocity — 0,1–1.

Задача 2. Период контура

Задача. Rate-контур: \(f_{к} = 2\ \text{кГц} \). Определить период шага и число шагов за 1 с манёвра.

Заданные параметры:

ПараметрЗначение
f_к2 000 Гц
t_манёвра1 с

Искомые параметры: T (мс); число шагов.

Решение.

  1. T = 1/f_к = 1/2000 = 0,0005 с = 0,5 мс.
  2. Число шагов за 1 с: 1/0,0005 = 2 000.
Ответ: 0,5 мс/шаг; 2 000 шагов за 1 с.

Вывод. 2 000 решений/с — контур «не видит» манёвр целиком, а «добирает» по 0,5 мс: при запаздывании привода 1–2 мс (статья 86: ESC 8–16 кГц) — 2–4 шага «пустые» (задержка компенсируется D-членом). При 4 кГц — 1–2 шага: быстрее, но нагрузка на MCU ×2.

Задача 3. Размер лога

Задача. Лог: \(f_{лог} = 100\ \text{Гц} \), 20 каналов (32-бит), полёт 1 ч. Определить размер лога.

Заданные параметры:

ПараметрЗначение
f_лог100 Гц
Каналы20 (× 4 байта)
t3 600 с

Искомые параметры: размер (МБ).

Решение.

  1. Скорость: \(100\cdot 20\cdot 4 = 8\,000\ \text{байт/с} \).
  2. Размер: \(8\,000\cdot 3\,600 = 28\,800\,000\ \text{байт} = 28{,}8 МБ \).
Ответ: 28,8 МБ/ч (≈ 28,8 ГБ/1 000 ч).

Вывод. \(SD 32 ГБ \approx 1\,000 \) ч полёта; 64 ГБ ≈ 2 000 ч. При 100 каналах (полный EKF) — 288 МБ/ч: 100 ГБ ≈ 350 ч. «Полёт + анализ» — 50–100 МБ на 30-минутный миссионный полёт (статья 94).

Задача 4. Запас по RSSI

Задача. Failsafe: RSSI = −95 дБм на 10 км; порог −100 дБм. Определить RSSI на 5 км и запас.

Заданные параметры:

ПараметрЗначение
RSSI (10 км)−95 дБм
Порог−100 дБм
Новая дистанция5 км

Искомые параметры: RSSI (5 км); запас (дБ).

Решение.

  1. Дальность ×0,5 → затухание −6 дБ (закон обратных квадратов, статья 47).
  2. RSSI \((5\ \text{км}) = -95 + 6 = -89 \) дБм.
  3. Запас: \(-89 - (-100) = 11\ \text{дБ} \).
Ответ: −89 дБм; запас 11 дБ.

Вывод. 11 дБ — «комфортный» запас (порог −100: «почти обрыв»). На 10 км запас 5 дБ — мал (на пределе): failsafe (Loiter/RTL) может сработать на границе зоны. Практика: порог −100 + запас 5–10 дБ = «предупреждение» при −90 (статья 89: 2 уровня).

Задача 5. Обновление прошивки

Задача. Прошивка: 16 МБ, канал 115 200 бит/с. Определить время обновления.

Заданные параметры:

ПараметрЗначение
Размер16 МБ = 16 777 216 байт
R115 200 бит/с

Искомые параметры: время (с, мин).

Решение.

  1. Биты: \(16\,777\,216\cdot 8 = 134\,217\,728\ \text{бит} \).
  2. Время: \(\frac{134\,217\,728}{115\,200} = 1\,165\ \text{с} \approx 19{,}4\ \text{мин} \).
Ответ: ≈ 19,4 мин (≈ 20 мин).

Вывод. 20 мин — «запланировать» в регламенте (статья 91: пре-флайт). На 921 600 бит/с — 2,5 мин (но UART ФК обычно 115 200 — ограничение MCU). Резервная копия параметров — 5–10 с (50 КБ на 115 200): всегда перед обновлением.

↑ К оглавлению

8. Чек-лист самопроверки знаний

Отметьте пункты, которые вы действительно понимаете и можете применить без подсказок.

НавыкПроверка
ФКMCU 400–800 МГц, IMU 1–2, флеш 8–64 МБ, DDR 32–256, UART 6–10, CAN 1–2.
PX4 против ArduPilotOffboard/EKF2/POSIX против 13 полётных режимов, EKF2 и собственной RTOS.
Каскадposition → velocity → attitude → rate (25 Гц → 4 кГц).
ПИДKp (быстро) → Kd (демпфер) → Ki (остаточная ошибка).
Лог100 Гц × 20 ch × 4 B = 28,8 МБ/ч; 32 ГБ ≈ 1 000 ч.
Failsafe-цепочкабатарея → радиоканал → GNSS → геозона (статья 89).
↑ К оглавлению

9. Источники

  1. Wikipedia, «ArduPilot» — полётный контроллер. en.wikipedia.org/wiki/ArduPilot
  2. Wikipedia, «Kalman filter» — фильтр Калмана. en.wikipedia.org/wiki/Kalman_filter / ru.wikipedia.org/wiki/Фильтр_Калмана (Фильтр Калмана)
  3. Wikipedia, «Failsafe» — резервный режим. en.wikipedia.org/wiki/Failsafe / ru.wikipedia.org/wiki/Отказобезопасность (Отказобезопасность) Fail-safe / Отказобезопасность / ru.wikipedia.org/wiki/Отказобезопасность (Отказобезопасность)

Проверено: 05.09.2026.

↑ К оглавлению
  • мод. : Воскресенье, 13 сентября 2026