Руководство по настройке ArduPilot

Все статьи

Руководство по настройке ArduPilot

Настройка ArduPilot

Версия: ArduCopter V4.6.0-beta
Mission Planner: 1.3.82

Проводка и подключение

Проводка ESC (4in1)

Проводка между полётным контроллером и ESC очень важна. Если вы не купили готовый стек, вы ДОЛЖНЫ тщательно проверить распиновку между FC и ESC.

⚠️ Внимание: Некоторые комбинации применяют обратную полярность и могут сжечь полётный контроллер при первом включении питания!

Если распиновка не совпадает, вы можете переподключить штекер, используя пинцет.

Проводка GPS и Компаса

Проводка приёмника ELRS

Запомните номер серийного порта для приёмника.

Проводка DJI O3/O4

Запомните номер серийного порта для воздушного блока.

Настройка Mission Planner

Установка начальных параметров

Тип рамы

Mission Planner → вкладка SetupMandatory HardwareFrame Type

  • Frame Class (класс рамы): Quadcopter
  • Frame Type (тип рамы): X (в зависимости от конфигурации)

Начальные параметры настройки

В вкладке SetupMandatory HardwareInitial Tune Parameters:

  • Airscrew Size (размер воздушного винта): диаметр пропеллера
  • Battery Cell Count (количество ячеек батареи)
  • Battery Chemistry (тип батареи)

Ориентация платы

Mission Planner → вкладка ConfigFull Parameter ListAHRS_ORIENTATION

Вам нужно изменить это только если ориентация платы отличается от стандартной ориентации производителя.

Калибровка акселерометра

  1. Mission Planner → вкладка SetupMandatory HardwareAccel Calibration

  2. Нажмите Calibrate Accel
  3. Перезагрузитесь!

  4. Нажмите Calibrate Level

Калибровка компаса

  1. Mission Planner → вкладка SetupMandatory HardwareCompass

  2. Выполните Onboard Mag Calibration (встроенную калибровку магнитометра)

  3. Нажмите Start
  4. Перезагрузитесь!

Калибровка радио

  1. Mission Planner → вкладка SetupMandatory HardwareRadio Calibration

  2. Нажмите Calibrate Radio

  3. Проверьте каналы Roll, Pitch, Yaw, Throttle корректны

  4. Центральная позиция стика должна быть ровно 1500

  5. Минимальное положение стика: 1000

  6. Максимальное положение стика: 2000

Выход сервоприводов

Mission Planner → вкладка SetupMandatory HardwareServo Output

Установите серво-выходы 1-4 как выходы мотора 1-4. Для типичного 4in1 ESC правильный номер сервопривода и номер мотора не совпадают. Это будет исправлено в Motor Test позже.

Серийные порты

Mission Planner → вкладка SetupMandatory HardwareSerial Ports

Установите серийные порты в соответствии с проводкой:

  • Приёмник: RCIN, скорость передачи не критична
  • GPS: GPS, скорость передачи обычно 57600
  • DJI O3/O4: Display Port, скорость передачи 115200

Калибровка ESC

⚠️ Важно: Не нажимайте «Calibrate ESCs» — это может заблокировать FC в цикле и вызвать проблемы с цифровыми ESC, не поддерживающими PWM протокол (например, BlueJay).

Установите:

  • ESC Type (тип ESC): DShot300
  • Spin when armed (вращение при готовности): 0.05 — 0.1
  • Spin minimum (минимальное вращение): 0.1 — 0.15
  • Spin maximum (максимальное вращение): 1.0

Режимы полёта

Установите переключатель режимов полёта. Вы можете изменить, какой канал на радио контролирует режимы полёта через Full Parameter ListFLTMODECH.

Failsafe

Ваша система безопасности Failsafe должна быть установлена на RTL (Return To Home, вернуться домой) и Land (приземление). Проверьте напряжение батареи и время по умолчанию.

Мониторинг батареи

Mission Planner → вкладка SetupOptional HardwareBattery Monitor


  • Измерение напряжения должно быть правильным по умолчанию, если вы прошили правильную целевую платформу
  • Измерение тока зависит от значения резистора датчика тока на ESC:

    • Типичный 25 мОм: 40 ампер на вольт

    • Типичный 10 мОм: 100 ампер на вольт

Тестирование моторов

⚠️ Внимание: СНИМИТЕ ПРОПЕЛЛЕРЫ!

Для типичного 4in1 ESC порядок моторов может быть неправильным! Вы должны протестировать и проверить, что правильный мотор вращается и вращается в правильном направлении.

Двойная проверка — иначе произойдёт большой крах при взлёте!

Если вы используете типичный Betaflight 4in1 ESC в стандартной ориентации:


  • Сервопривод 1 → Мотор 4

  • Сервопривод 2 → Мотор 1

  • Сервопривод 3 → Мотор 2

  • Сервопривод 4 → Мотор 3

Мотор тестируется в порядке вращения по часовой стрелке, начиная с переднего правого.

Проверка помех компаса

Mission Planner → вкладка SetupOptional HardwareCompassMotor Calibration

Это не обязательно, но может быть полезно проверить:


  1. Переверните пропеллеры так, чтобы дрон давил на землю

  2. Разгонитесь до 50-75% дросселя на 5-10 секунд
  3. Посмотрите на эффект помех компаса:
    • Менее 30: приемлемо
    • Менее 60: может быть в порядке, но рассмотрите возможность переместить компас подальше от проводов моторов/кабелей батареи
    • Более 60: необходимо переместить компас

Настройка гироскопа и логирования

Настройки гироскопа

Mission Planner → вкладка ConfigFull Parameter List

Для плат F7 и H7 может быть полезно для производительности полёта и настройки дронов меньшего размера установить:

  • INS_FASTSAMPLE: 1
  • INS_GYRO_RATE: 2 кГц (2000 Hz)

Это предотвращает наложение спектра моторных частот выше 500 Гц. Должно быть установлено по умолчанию на современных платах.

Настройка логирования FFT

Правильные настройки логирования необходимы для процесса настройки.

Mission Planner → вкладка SetupOptional HardwareFFT Setup

  • Sample count (количество образцов): 1024 или 2048

  • Обычно лучше логировать только IMU1, чтобы избежать перегрузки и потери логов
  • Log bitmask (маска битов логирования) должна быть установлена как показано

Это захватывает все данные, необходимые для процесса настройки.

Варианты пакетного логирования (Batch Logging Options)

  • Sensor-Rate Logging: логирование при полной скорости датчика
  • Sample post-filtering: образец после фильтрации
  • Sample pre- and post-filter: образец до и после фильтрации

Расширенная настройка

Проверка данных RPM

После тестирования зависания проверьте данные RPM в логе.

Если вы видите случайные скачки только на одном ESC — это конфликт на пине выхода сервопривода. Рассмотрите возможность:


  1. Переподключить и использовать другой пин выхода сервопривода для этого мотора

  2. Изменить SERVO_BLHBD_MASK для игнорирования этого канала

  3. Использовать FFT вместо BDSHOT для гармонического фильтра-пробки

Гармонические фильтры-пробки (Harmonic Notch Filters)

Bi-Directional DShot для RPM (лучше всего)

Установите следующие параметры:

  • RPM1_TYPE: 5 (для Bi-Directional DShot)
  • RPM1_ESC_MASK: 15 (для всех 4 моторов)
  • SERVO_BLHBD_MASK: 15 (для всех 4 моторов)
  • SERVO_BLHBD_POLES: N (где N — количество магнитов в моторе)

    • 14 типично для моторов 4-10 кВт

    • 12 типично для моторов 3 кВт
  • SERVO_DSHOT_ESC:

    • 1 для KissAM32/BL32

    • 2 для BlueJay

    • 3 или 4 для последних прошивок ESC с расширённой телеметрией DShot

Dynamic FFT (если нет RPM данных)

Установите параметры для анализа спектра по FFT:

  • FFT_ENABLE: 1 (включить FFT и показать параметры)
  • INS_HNTCH_MODE: 4 (использовать FFT для управления пробками)
  • FFT_MAXHZ: X = 0.8 × Vbatt × KV / 60

    • Vbatt: напряжение полностью заряженной батареи

    • KV: килиВольт мотора
  • FFT_MINHZ: Y = 500 (по умолчанию)
  • FFT_WINDOW_SIZE: 256 (F7) или 512 (H7)

    • Разрешение: 8 Гц для 256, 4 Гц для 512

    • Вы будете иметь выгоду от FFT_WINDOW_SIZE = 1024 на H7, если CPU позволяет!

Что такое Dynamic FFT?

Dynamic FFT просматривает образец данных от гироскопа, пытаясь определить наличие пиков шума и их частоту. Это может использоваться для управления фильтрами-пробками для уменьшения эффекта шума.

Это медленнее и менее точно, чем RPM данные для шума моторов. Это может быть полезно для резонансов рамы, но требует больших вычислительных ресурсов.

Dynamic FFT использует данные гироскопа для определения пиков шума между минимальной и максимальной частотой.

Анализ фильтров и фильтрация

Filter Review в ArduPilot WebTools

Откройте ваш лог в ArduPilot WebTools Filter Review:
https://firmware.ardupilot.org/Tools/WebTools/FilterReview

Проверьте, что график данных полёта выглядит правильно и нет пропусков или потерь логирования.

Спектр IMU (IMU Spectrum)

Прокрутите вниз до спектра IMU. Вы должны быть в состоянии увидеть:

  • Pre-Filter Gyro Data (данные гироскопа до фильтра)
  • Post-Filter Gyro Data (данные гироскопа после фильтра)
  • Notch Tracking (отслеживание пробок)

Вы также увидите эффект фильтра низкой частоты гироскопа, снижающего мощность шума на высоких частотах.

Фильтр низкой частоты гироскопа (Gyro Low Pass Filter)

INS_GYRO_FILTER (фильтр гироскопа)

Гироскоп в дроне чувствителен как к жёстким движениям тела дрона (сигнал), так и к вибрациям (шум).

Вибрации генерируются вращающимися моторами и пропеллерами, а также некоторыми полезными нагрузками. Резонанс кинематической конструкции и полезной нагрузки может также усилить определённые частоты.

Важно: Энергия в вибрациях/шуме обычно намного выше, чем энергия в жёстких движениях тела дрона!

К счастью, реальные движения находятся на низкой частоте, а вибрации — на более высоких частотах. Фильтр низкой частоты гироскопа использует это преимущество для снижения шума без излишних потерь сигнала!

  • Реальные движения дрона: обычно ниже 30 Гц
  • Вибрации: обычно выше 50 Гц (зависит от RPM пропеллера!)

Компромиссы фильтра низкой частоты гироскопа

К сожалению, фильтр низкой частоты гироскопа имеет некоторые компромиссы:


  • Любой фильтр низкой частоты ослабляет высокие частоты, но также добавляет задержку

  • Чем ниже частота среза фильтра на 3 дБ, тем больше задержка добавляется

  • Эта задержка замедляет реакцию дрона на турбулентность воздуха и входные команды управления

Настройка фильтра низкой частоты гироскопа

Мы хотим постепенно увеличивать частоту среза фильтра низкой частоты гироскопа как можно выше, не позволяя шуму проходить.

Наш главный враг:

  1. Фундаментальная частота мотора
  2. Самая низкая частота резонанса рамы

Мы хотим, чтобы этот пик был ниже -50 дБ в данных после фильтра. Мы будем решать эту проблему, используя гармонические фильтры-пробки ArduPilot.

RPM-основанная фильтрация гармоник (RPM Based Harmonic Notch Filtering)

Гармонический фильтр-пробка (Harmonic Notch Filter)

INS_HNTCH (гармонический фильтр)

Помимо широкополосного высокочастотного шума, дроны также испытывают пики шума на определённых частотах. Эти пики создаются:

  1. Частотой вращения моторов
  2. Резонансами кинематической конструкции

Пики шума лучше всего обрабатываются фильтрацией пробкой (notch filtering). Фильтр-пробка обеспечивает очень высокую степень ослабления шума около целевой частоты и создаёт намного меньше задержки, чем эквивалентный фильтр низкой частоты.

  • Чем уже пробка, тем меньше задержки, но тем точнее должна быть целевая частота
  • Чем шире пробка, тем менее критична точность, но больше задержки

Настройка фильтров-пробок — это нацеливание узких пробок ровно там, где находятся пики шума.

Спектрограмма IMU (IMU Spectrogram)

Спектрограмма IMU используется для проверки и настройки гармонических фильтров-пробок. Она показывает мощность шума на разных частотах со временем.

Уменьшение масштаба до нескольких секунд зависания позволяет нам рассмотреть ключевые особенности:

Ищите красную линию:


  • При F_motor = RPM_hover / 60 (фундаментальная частота мотора)

  • При 2 × F_motor (вторая гармоника) — вероятно, сильнее для 2-лопастных пропеллеров

  • При 3 × F_motor (третья гармоника) — вероятно, сильнее для 3-лопастных пропеллеров

  • Красный на очень низкой частоте — жесткие движения тела дрона

Настройка фильтра RPM

INS_HNTCH_FREQ должна быть установлена на частоту, при которой шум мотора начинает становиться проблемой. Это можно найти, медленно увеличивая дроссель с нуля и глядя в лог.

INS_HNTCH_BW должна быть уменьшена как можно больше. Увеличивайте до тех пор, пока не начнёте видеть, что шум мотора пробивается через в данные после фильтра, затем отступите немного назад (примерно на 10).

Multi-Source RPM Filter (Многоисточниковый фильтр RPM)

Решение — использовать многоисточниковую фильтрацию RPM ArduPilot для применения отдельной пробки к каждому RPM мотора:

  • INS_HNTCH_MODE: 3 (RPM)
  • INS_HNTCH_OPTIONS: 6 (включить многоисточник и обновлять пробки на частоте цикла)
  • INS_HNTCH_BW: уменьшить пропускную способность каждой пробки, чтобы держать задержку под контролем с 4× большим количеством пробок

Количество гармоник

  • Трёхлопастные пропеллеры: обычно нужны 3 гармоники, но иногда только первая и третья
    • INS_HNTCH_HMNCS: 7 или 5
  • Двухлопастные пропеллеры: обычно нужны как минимум 2 гармоники, но иногда больше (проверьте логи!)
    • INS_HNTCH_HMNCS: 3 или больше

Вероятно, нам не нужна 4-я гармоника, так как мощность шума очень низкая. Мы также могли бы попробовать без второй гармоники!

FFT-основанная фильтрация гармоник (FFT Based Harmonic Notch Filtering)

Что такое Dynamic FFT?

FFT расшифровывается как Fast Fourier Transform (быстрое преобразование Фурье).

Она берёт кусок данных гироскопа (0.5 секунды) и использует его для расчёта количества энергии на каждой частоте. Частота самых больших обнаруженных пиков может затем передаваться гармоническим фильтрам-пробкам.

Время ↔ Частота: FFT берёт временную область и преобразует в частотную область.

FFT vs RPM для шума мотора

  • RPM-основанная фильтрация лучше, чем динамическая FFT для шума мотора

  • Если вы знаете RPM мотора, вы знаете точную частоту шума немедленно, без задержки

  • С Dynamic FFT вы должны вычислить её с компромиссом: чем выше разрешение частоты, тем ниже временное разрешение

  • Для разрешения 2 Гц вам нужно выбрать образец в течение 0.5 секунды, и это долгое время в мире фильтров-пробок!

Dynamic FFT чрезвычайно полезна в дополнение к фильтрации RPM для работы с резонансом рамы.

FFT для резонанса рамы (NOTCH 2)

Первый фильтр-пробка: RPM
Второй фильтр-пробка: FFT для резонанса рамы

Установите параметры:

  • FFT_ENABLE: 1
  • FFT_MINHZ: нижний предел, где видны резонансы рамы
  • FFT_MAXHZ: верхний предел, где видны резонансы рамы
  • FFT_NUM_FRAMES: 0-3 (усреднение кадров FFT для уменьшения шума, обычно не требуется для больших систем)
  • FFT_WINDOW_SIZE: 1024 (если позволяет нагрузка на CPU, или как можно выше)
  • FFT_OPTIONS: 1 (для применения фильтра низкой частоты гироскопа и фильтров RPM перед выполнением FFT)

Для второго фильтра-пробки установите:

  • INS_HNTCH2_ENABLE: 1 (для включения второго фильтра)
  • INS_HNTCH2_MODE: 4 (для использования Dynamic FFT)
  • INS_HNTCH2_FREQ: FFT_MINHZ (нижний предел)
  • INS_HNTCH2_BW: INS_HNTCH2_FREQ / 2 (начните отсюда, затем настройте)
  • INS_HNTCH2_REF: 1 (масштабирование не требуется)
  • INS_HNTCH2_FMRAT: 1 (предотвратить опускание пробки ниже INS_HNTCH2_FREQ)
  • INS_HNTCH2_HMNCS: 1 (мы ищем резонанс рамы, а они обычно не имеют гармоник)
  • INS_HNTCH2_OPTS: 0 (для одного резонанса рамы)
  • INS_HNTCH2_OPTS: 2 (для использования Multi-Source при наличии нескольких резонансов)

FFT для шума мотора (NOTCH 1)

Если нет данных RPM, используйте FFT для шума мотора:

  • FFT_ENABLE: 1
  • FFT_MINHZ: самая низкая частота, где виден шум мотора (при низком дросселе)
  • FFT_MAXHZ: немного выше фундаментальной частоты мотора при полном дросселе

    • Вычисляется как: 0.8 × Vbatt × KV / 60
  • FFT_NUM_FRAMES: 0 (FFT должна быть реактивной на изменения RPM)
  • FFT_OPTIONS: 1 (для применения фильтров низкой частоты перед выполнением FFT)
  • FFT_WINDOW_SIZE: 1024 (если позволяет нагрузка на CPU, или как можно выше)

Для первого фильтра-пробки установите:

  • INS_HNTCH_ENABLE: 1 (для включения первого фильтра)
  • INS_HNTCH_MODE: 4 (для использования Dynamic FFT)
  • INS_HNTCH_FREQ: FFT_MINHZ (самая низкая частота)
  • INS_HNTCH_BW: INS_HNTCH_FREQ / 2 (начните отсюда, затем настройте)
  • INS_HNTCH_REF: 1 (масштабирование не требуется)
  • INS_HNTCH_FMRAT: 1 (предотвратить опускание пробки ниже INS_HNTCH_FREQ)
  • INS_HNTCH_HMNCS: 7 (для 3-лопастных пропеллеров)

Что такое статические или дроссельные пробки?

Я не рекомендую использовать статические или дроссельные пробки (Static or Throttle Notches). Это хрупкий подход к фильтрации, потому что они могут полностью потерять эффективность из-за изменений, таких как:


  • Изменение пропеллеров

  • Изменение высоты полёта

  • Производственные допуски на рамы

  • Полезная нагрузка

Фильтры на основе RPM и FFT эффективны на нескольких дронах одинакового дизайна, даже если части и полезные нагрузки меняются.

Если вы используете FFT для шума мотора без данных RPM, вам может потребоваться использовать статическую пробку для резонанса рамы.

Настройка фильтра низкой частоты гироскопа (Tuning the Gyro Low Pass Filter)

Теперь, когда наши фильтры-пробки хорошо настроены, мы должны быть в состоянии постепенно увеличивать частоту среза фильтра низкой частоты гироскопа INS_GYRO_FILTER как можно выше, сохраняя шум после фильтра ниже примерно -50 дБ или ниже.

Рекомендации при повышении INS_GYRO_FILTER

Когда повышаете INS_GYRO_FILTER, слушайте любые колебания. Также проверяйте температуру мотора после короткого зависания.

  • Слышимые колебания или горячие мотора могут указывать на недостаточную фильтрацию
  • Они также могут быть из-за плохой настройки PID
  • Проверьте логи для определения источника

Настройка PID

Предпосылки

ArduPilot использует каскад PID контроллеров для управления дроном. Для хорошей производительности автономного полёта каждый из этих циклов PID должен быть настроен.

Мы начнём с дна и будем работать в гору:

Навигация по маршрутным точкам

Контроль Loiter (зависание)

Контроль вертикального положения

Контроль вертикальной скорости

Контроль дросселя (тяги)

Контроль горизонтального положения

Контроль горизонтальной скорости

Контроль стабилизации отношения (крен/тангаж)

Контроль скорости вращения (крен/тангаж/рыскание)

ArduPilot Autotune

ArduPilot имеет несколько функций автоматической настройки, которые пытаются найти хорошие значения PID для контроллеров скорости и углов.

Эти инструменты имеют ограничения:


  • Они могут создавать настройки, подходящие для хобби на небольших дронах

  • Они будут бороться на больших дронах и создавать неоптимальные настройки, которые могут быть опасно нелетаемыми!

Методичный ручной подход к настройке даст лучшие результаты более безопасно. Это то, что мы будем освещать в этом руководстве.

PID-FF-DFF контроллер

Контроллер PID-FF-DFF ArduPilot состоит из пяти основных частей:

  • P (пропорциональный член)
  • I (интегральный член)
  • D (производный член)
  • FF (feedforward член, прямая подача)
  • DFF (производный feedforward, производная прямая подача)

Контроллер Rate PID-FF-DFF ArduPilot

Целевая скорость вращения

Ошибка PID (целевая — фактическая)

┌─── P (Пропорциональный) ───┐
├─── I (Интегральный) ───────┤
├─── D (Производный) ────────┤
├─── FF (Feedforward) ────────┤
└─── DFF (Derivative Feedforward) ┘

Микшер моторов — PID доходит сюда

Члены контроллера

Пропорциональный член (P Term)

  • Чем больше ошибка, тем сильнее P член толкает обратно к целевому
  • P член действует как пружина в амортизаторе подвески

Производный член (D Term)

  • D член хочет, чтобы фактическое значение оставалось неизменным и толкает против любого изменения
  • D член действует как амортизатор в амортизаторе подвески

Баланс PD

Как в амортизаторе, баланс между силой пружины (P член) и размером амортизатора (D член) очень важен.

Баланс PD ArduPilot по умолчанию обычно подходит в качестве точки отсчёта, но не всегда! Правильный баланс между P и D членами — первый шаг хорошей настройки PID.

Интегральный член (I Term)

  • I член добавляет ошибку с течением времени и толкает всё сильнее и сильнее, чем дольше сохраняется ошибка

  • Ошибка PID накапливается

  • Правильный баланс PI — это то, что позволяет максимальный I член без колебаний

Feedforward (FF) член

  • Feedforward толкает в соответствии с абсолютным значением целевого
  • FF помогает преодолеть сопротивление, которое увеличивается пропорционально целевому значению
  • Очень полезен для контроллера вертикальной скорости, где гравитация создаёт ровно этот эффект

Derivative Feedforward (DFF) член

  • DFF толкает в направлении, в котором движется целевое
  • DFF позволяет контроллеру PID реагировать мгновенно до того, как ошибка PID нарастёт

  • Правильно установленный он помогает уменьшить и даже устранить задержку между целевым и фактическим значениями

Соотношение PI и подход D-P-I-DFF-FF

Так же, как D член предотвращает колебания P члена, P член предотвращает колебания I члена.

В результате существует идеальное соотношение PI, которое позволяет максимальный I член без колебаний.

Это даёт нам соотношение D-P-I-DFF-FF, которое направляет процесс настройки:

Порядок настройки:

  1. D член сначала

  2. Затем P член
  3. I член
  4. DFF (Derivative Feedforward)
  5. FF (Feedforward)

Контроллеры скорости вращения

В ArduPilot есть 3 контроллера скорости вращения:


  • Один для крена (Roll)

  • Один для тангажа (Pitch)

  • Один для рыскания (Yaw)

Все они работают одинаково. Однако, производный член на оси рыскания обычно установлен на 0, потому что отсутствие полномочий на оси рыскания означает, что он обычно чрезмерно амортизирован и не требует дополнительного производного члена.

Советы по настройке полёта

Полёты по настройке PID состоят из острых колебаний на всех 3 осях.

При выполнении острых движений убедитесь, что вы держите стик, пока он возвращается в центр. Если вы отпустите стики, они могут подпрыгивать вокруг центра при возвращении, что вызовет колебания и может заставить вас думать, что у вас слишком много P усиления, когда на самом деле это не так.

Вы можете выполнять эти острые движения в режиме Stabilize или Altitude Hold, но не в Loiter.

Рецензирование PID (PID Review)

Откройте ваш лог в ArduPilot WebTools

PID Review: https://firmware.ardupilot.org/Tools/WebTools/PIDReview

Проверьте, что график данных полёта выглядит правильно и нет пропусков в логировании.

Чтение временных рядов данных (Time series data)

Данные временной области нечитаемы при масштабе по умолчанию. Увеличивайте масштаб до части логов, где вы колебали дрона на выбранной оси.

На этом уровне масштаба мы можем видеть отдельные движения. Цель — получить, чтобы линии Actual и Target идеально совпадали.

Возможно настроить баланс PD только с использованием данных временных рядов.

Настройка баланса PD

Без DFF фактическое будет всегда отставать от целевого — это нормально на данном этапе.

Ответное переходное поведение

Шаговый ответ (Step Response):


  • Красная линия — это цель!

  • Небольшое перерегулирование — это нормально, но абсолютно без колебаний

Влияние демпфирования

  • Недо-демпфирование: слишком много P относительно D

    • Решение: уменьшить P относительно D
  • Критически демпфирование: баланс PD правильный
  • Чрезмерное демпфирование: недостаточно P относительно D

    • Решение: увеличить P относительно D

Важно помнить

Важно соотношение PD, а не отдельные значения. Я предлагаю только изменять P член на этом этапе настройки баланса PD, чтобы всё было просто.

Если у вас несимметричный дрон, разблокируйте значения крена и тангажа и настройте каждую ось отдельно.

Устранение колебаний (Troubleshooting Oscillation)

Если вы страдаете от колебаний, которые не улучшаются при снижении P члена, это может быть двумя вещами:

1. Колебания D члена


  • Высокие коэффициенты усиления D могут самоколебаться независимо от P члена

  • Для исправления уменьшите оба D и P члена поэтапно на 10%

2. Чрезмерная задержка фильтра


  • Чрезмерная задержка фильтра может также вызвать колебания

  • Дважды проверьте, что вы не можете улучшить настройки фильтра гироскопа

Абсолютная настройка PID усиления (Absolute PID Gain Tuning)

Как только баланс PD дрона найден, мы хотим увеличить общее усиление PID для снижения ошибки PID.

Способ сделать это — увеличить P, I и D на один и тот же множитель:

P_новый = P_старый × 1.1
I_новый = I_старый × 1.1
D_новый = D_старый × 1.1

Это сохраняет соотношения PD и PI одинаковыми.

Продолжайте увеличивать, пока не начнёте видеть колебания в логах, затем отступите на 10-20%.

Каждая ось должна быть отрегулирована отдельно.

Ось рыскания (Yaw Axis)

Ось рыскания обычно не нуждается в D члене для типичных мультикоптеров.

Это означает, что только баланс PI и общие коэффициенты усиления нужно настроить.

Перед увеличением коэффициентов усиления P и I рассмотрите снижение фильтрации ошибок рыскания для дронов меньшего размера.

Контроллер скорости вращения (Rate PID Tuning)

На этом этапе у вас должна быть отличная настройка Rate PID на вашем дроне.

Если настройка скорости хорошая, то настройка контроллеров более высокого уровня будет простой.

Надеюсь, вы уже видите большое улучшение в поведении полёта во всех режимах.

Контроль отношения (Attitude Control Stabilize)

Фон

Контроллер отношения контролирует угол дрона относительно земли для осей крена и тангажа и север для оси рыскания.

Это простые пропорциональные контроллеры. Разница между желаемым и фактическим углом умножается на коэффициент для получения целевой скорости вращения.

Настройка контроллера отношения

Вы можете настроить P члены для этих контроллеров на вкладке Extended Tuning.

Большее значение даст более агрессивный ответ на ошибки отношения.

Увеличивайте значение постепенно до тех пор, пока не начнёте испытывать колебания, затем отступите на 20%, чтобы обеспечить стабильность.

Логирование отношения

Вы можете пересмотреть желаемые vs фактические углы в разделе лога ATT.

Здесь вы можете проверить колебания или перерегулирование, когда вы увеличиваете коэффициент усиления P отношения.

Настройте каждую ось отдельно.

Максимальные углы наклона (Maximum Lean Angles)

Расчёт максимального угла наклона

Максимальный угол наклона обычно должен быть установлен, чтобы обеспечить, чтобы дрон имел достаточную тягу для поддержания высоты и управления даже при максимальном угле наклона.

Где:


  • = необходимый вес для маневра

  • = максимальная доступная тяга

  • = максимальный угол наклона

Эта уравнение может дать большие углы 45 градусов или больше.

Для большинства приложений максимальный угол 30 градусов достаточен, и большие значения могут быть проблемой для пилотов!

Установка максимального угла наклона

После того, как максимальный угол наклона был определён, установите максимальные углы:

  • ANGLE_MAX: максимальный угол, разрешённый во всех режимах
  • POSCON_ANGLE_MAX: максимальный угол, разрешённый в режиме удержания позиции (установите 0 для использования ANGLE_MAX)
  • LOITER_ANGLE_MAX: максимальный угол, запрашиваемый пилотом, разрешённый в режиме Loiter (установите 0 для использования 2/3 ANGLE_MAX)

Рекомендации:


  • ANGLE_MAX = 30°

  • POSCON_ANGLE_MAX = 0 (то же, что ANGLE_MAX)

  • LOITER_ANGLE_MAX = 30° (то же, что ANGLE_MAX)

Контроллер дросселя (тяги) (Throttle Controller)

Фон

Контроллер дросселя контролирует высоту дрона. Он преобразует запрошенное вертикальное ускорение в выход мотора.

Включает члены P-I-D-FF-DFF как контроллеры скорости и настраивается одинаково.

Полёты для настройки контроллера дросселя

Полёты для настройки контроллера дросселя должны быть выполнены в режиме Altitude Hold.

Они будут состоять из острых вертикальных движений:


  • Быстрый подъём

  • Быстрое снижение

  • Быстрый подъём и т.д.

Так как мы смотрим на ускорение, дрон не должен менять высоту очень сильно, и колебания могут быть довольно быстрыми.

Логирование контроллера дросселя

Вы можете пересмотреть логи контроллера дросселя в разделе логирования PIDA.

Настройки по умолчанию могут быть очень колебательными, потому что отсутствует D усиление.

  • P усиление колеблется из-за нулевого D усиления по умолчанию

Уменьшение P усиления и добавление D усиления

Уменьшение P усиления и добавление некоторого D усиления устранит колебания.

В этом логе дрона P/D баланс примерно 50:1:


  • P = 0.25

  • D = 0.005

Результат: некоторая задержка и недостаток, но колебания устранены.

D-член шум контроллера дросселя

Как с контроллерами скорости, важно проверить, что D член не слишком шумный.

Чрезмерный шум D члена может быть решен путём уменьшения частоты среза фильтра PSCD_ACCEL_Z_FLTD:


  • 0 = отключен

  • Если требуется, начните с 20 Гц

  • D член приемлем здесь с SNR (signal-to-noise ratio) ≥ 10

  • FLTD отключен хорошо работает

Feedforward контроллера дросселя

Подобно рысканию, контроллер дросселя может выиграть от положительного Feedforward члена.

Большее положительное вертикальное ускорение естественно требует большей настройки дросселя.

FF обеспечивает это без необходимости ошибки между целевым и фактическим значениями.

Попробуйте PSCD_ACCEL_Z_FF = 0.05 в качестве начальной точки.

FF увеличивает выход мотора, когда запрашивается большее вертикальное ускорение.

Производный Feedforward контроллера дросселя

Контроллер дросселя может выиграть от положительного Derivative Feedforward члена.

DFF уменьшает задержку между целевыми и фактическими кривыми.

Как с другими контроллерами скорости, производное feedforward помогает уменьшить задержку между целевыми и фактическими кривыми.

Настраивается одинаково — увеличьте DFF для уменьшения задержки, слишком много вызывает переход Actual впереди Target и перерегулирование.

PSCD_ACCEL_Z_FLTT: отношение сигнал-шум DFF должно быть как минимум 10. Если нет, рассмотрите уменьшение частоты среза фильтра PSCD_ACCEL_Z_FLTT.

Контроллер вертикальной скорости (Vertical Velocity Controller)

Находится над контроллером дросселя контроллер вертикальной скорости.

Это ещё один PID контроллер: PSCD_VEL_Z (P, I, D, FF, FLTE, FLTD)

Нет производного feedforward или целевого фильтрации в контроллере вертикальной скорости.

Настройка контроллера вертикальной скорости

Для настройки контроллера вертикальной скорости вы можете использовать данные в разделе лога CTUN:

  • CTUN DCRt: желаемая скорость подъёма
  • CTUN CRt: скорость подъёма

Если контроллер дросселя хорошо настроен, вам может не потребоваться добавлять много D члена вообще.

Вы обычно не должны добавлять никакого Feedforward (FF) или I члена в этот контроллер.

Контроллер вертикального положения (Vertical Position Controller)

Находится над контроллером вертикальной скорости контроллер вертикального положения.

Это простой пропорциональный P контроллер: PSCD_POS_Z P

Он преобразует ошибку вертикального положения в целевую вертикальную скорость.

Настройка контроллера вертикального положения

Для настройки контроллера вертикального положения вы можете использовать данные в разделе лога CTUN:

  • CTUN DAlt: желаемая высота
  • CTUN Alt: высота

Единственный параметр для регулировкиPSCD_POS_Z P:

  • Увеличьте это для более агрессивного отслеживания желаемой высоты
  • Следите за перерегулированием/колебаниями, которые указывают, что PSCD_POS_Z слишком высок

Контроллер Loiter (зависание)

Находится выше контроллеров углов контроллер Loiter.

Это преобразует целевое горизонтальное ускорение в углы крена и тангажа.

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

Параметры контроллера Loiter

  • LOITER_ACCEL_MAX: максимальное ускорение для исправления ошибок положения
  • LOITER_ANG_MAX: максимальный угол наклона в режиме удержания позиции (обычно установлен равным ANGLE_MAX)
  • LOITER_BRK_ACCEL: максимальное торможение ускорения, когда стик центрирован
  • LOITER_BRK_DELAY: задержка торможения, когда стик центрирован (часто лучше установить на 0)
  • LOITER_SPEED: максимальная скорость в режиме Loiter
  • LOITER_BRK_JERK: максимальное торможение рывка (скорость изменения ускорения)

Взаимодействие параметров Loiter

  • LOITER_BRK_JERK: контролирует, как быстро достичь максимального замедления и как быстро полностью остановиться в маневре торможения
  • LOITER_BRK_ACCEL: контролирует, как быстро может уменьшаться скорость
  • LOITER_SPEED: контролирует максимальную скорость дрона
  • LOITER_BRK_JERK: контролирует, как долго занимает достижение максимального замедления и как долго занимает полную остановку в конце маневра торможения

Контроллер горизонтальной скорости (Horizontal Velocity Controller)

Находится выше контроллеров углов контроллер горизонтальной скорости.

Это преобразует целевую горизонтальную скорость в целевое ускорение.

Это ещё один PID контроллер: PSCD_VEL_XY (P, I, D, FF, FLTE, FLTD)

Нет производного feedforward или целевого фильтрации в контроллере горизонтальной скорости.

Контроллер горизонтального положения (Horizontal Position Controller)

Находится выше контроллера горизонтальной скорости контроллер горизонтального положения.

Это преобразует ошибку горизонтального положения в целевую горизонтальную скорость.

Это простой пропорциональный P контроллер: PSCD_POS_XY P

Однако есть много параметров, которые ограничивают скорость и цели ускорения кинематического пути.

Настройка горизонтальных кинематических параметров

Параметры с наибольшим эффектом на горизонтальное движение:

  • LOITER_SPEED: установите на подходящую максимальную скорость
  • PSCD_JERK_XY: более высокое значение дает более резкий ответ на входные сигналы управления в режиме Loiter

Установка PSCD_JERK_XY слишком высокой может сделать дрон слишком агрессивным в ощущениях.

Контроллер навигации по маршрутным точкам (Waypoint Navigation Controller)

Контроллер навигации по маршрутным точкам находится выше всех остальных и контролирует, как дрон ведёт себя при автономной навигации.

Параметры навигации по маршрутным точкам

Параметры навигации по маршрутным точкам можно найти в Mission PlannerConfigFull Parameter List:

Горизонтальная кинематика маршрутных точек

  • WPNAV_JERK: контролирует, как быстро дрон достигает максимального ускорения
  • WPNAV_ACCEL: контролирует максимальное горизонтальное ускорение дрона
  • WPNAV_SPEED: контролирует скорость крейсера в режиме маршрутных точек

Центростремительная кинематика маршрутных точек

  • WPNAV_ACCEL_C: контролирует максимальное центростремительное ускорение дрона в углах

    • Если установлено на 0, то используется 2 × WPNAV_ACCEL
  • WPNAV_RADIUS: контролирует, как близко дрон должен подойти к маршрутной точке перед её отметкой как достигнутой

Вертикальная кинематика маршрутных точек

  • PSCD_JERK_Z: контролирует, как быстро дрон достигает максимального вертикального ускорения
  • WPNAV_ACCEL_Z: контролирует максимальное вертикальное ускорение дрона
  • WPNAV_SPEED_UP: контролирует вертикальную скорость подъёма в режиме маршрутных точек
  • WPNAV_SPEED_DN: контролирует вертикальную скорость снижения в режиме маршрутных точек

Загрузка и анализ логов

Загрузка логов в Mission Planner

Вы можете загружать логи в Mission Planner:
DataDataFlash Logs

Пространство логирования конечно, поэтому периодически очищайте логи (если у вас нет большой SD карты).

После загрузки лога вы можете пересмотреть его в Mission Planner.

Запомните, где сохранены ваши логи (обычно в папке Planner).

Обзор логов

Вы можете просматривать логи, загруженные в Mission Planner в разделе DataDataFlash LogsReview a Log.

Заключение

Правильная настройка ArduPilot требует методичного подхода и понимания взаимодействия различных контроллеров. Начиная с фильтрации и работая вверх по каскаду контроллеров, вы сможете достичь отличной производительности полёта.

Помните:


  • Начните с настройки фильтров

  • Переходите к настройке PID скорости вращения

  • Затем настройте контроллеры более высокого уровня

  • Всегда проверяйте логи для подтверждения хороших результатов

  • Будьте методичны и терпеливы в процессе

Удачи в полёте!

Прокрутить вверх