Руководство по настройке ArduPilot
Версия: ArduCopter V4.6.0-beta
Mission Planner: 1.3.82
Проводка между полётным контроллером и ESC очень важна. Если вы не купили готовый стек, вы ДОЛЖНЫ тщательно проверить распиновку между FC и ESC.
⚠️ Внимание: Некоторые комбинации применяют обратную полярность и могут сжечь полётный контроллер при первом включении питания!
Если распиновка не совпадает, вы можете переподключить штекер, используя пинцет.
Запомните номер серийного порта для приёмника.
Запомните номер серийного порта для воздушного блока.
Установка начальных параметров
Mission Planner → вкладка Setup → Mandatory Hardware → Frame Type
- Frame Class (класс рамы): Quadcopter
- Frame Type (тип рамы): X (в зависимости от конфигурации)
В вкладке Setup → Mandatory Hardware → Initial Tune Parameters:
- Airscrew Size (размер воздушного винта): диаметр пропеллера
- Battery Cell Count (количество ячеек батареи)
- Battery Chemistry (тип батареи)
Mission Planner → вкладка Config → Full Parameter List → AHRS_ORIENTATION
Вам нужно изменить это только если ориентация платы отличается от стандартной ориентации производителя.
- Mission Planner → вкладка Setup → Mandatory Hardware → Accel Calibration
Нажмите Calibrate Accel- Перезагрузитесь!
Нажмите Calibrate Level
- Mission Planner → вкладка Setup → Mandatory Hardware → Compass
Выполните Onboard Mag Calibration (встроенную калибровку магнитометра)
Нажмите Start- Перезагрузитесь!
- Mission Planner → вкладка Setup → Mandatory Hardware → Radio Calibration
Нажмите Calibrate Radio
Проверьте каналы Roll, Pitch, Yaw, Throttle корректны
Центральная позиция стика должна быть ровно 1500
Минимальное положение стика: 1000
Максимальное положение стика: 2000
Mission Planner → вкладка Setup → Mandatory Hardware → Servo Output
Установите серво-выходы 1-4 как выходы мотора 1-4. Для типичного 4in1 ESC правильный номер сервопривода и номер мотора не совпадают. Это будет исправлено в Motor Test позже.
Mission Planner → вкладка Setup → Mandatory Hardware → Serial Ports
Установите серийные порты в соответствии с проводкой:
- Приёмник: RCIN, скорость передачи не критична
- GPS: GPS, скорость передачи обычно 57600
- DJI O3/O4: Display Port, скорость передачи 115200
⚠️ Важно: Не нажимайте «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 List → FLTMODECH.
Ваша система безопасности Failsafe должна быть установлена на RTL (Return To Home, вернуться домой) и Land (приземление). Проверьте напряжение батареи и время по умолчанию.
Mission Planner → вкладка Setup → Optional Hardware → Battery Monitor
Измерение напряжения должно быть правильным по умолчанию, если вы прошили правильную целевую платформу
- Измерение тока зависит от значения резистора датчика тока на ESC:
Типичный 25 мОм: 40 ампер на вольт
Типичный 10 мОм: 100 ампер на вольт
⚠️ Внимание: СНИМИТЕ ПРОПЕЛЛЕРЫ!
Для типичного 4in1 ESC порядок моторов может быть неправильным! Вы должны протестировать и проверить, что правильный мотор вращается и вращается в правильном направлении.
Двойная проверка — иначе произойдёт большой крах при взлёте!
Если вы используете типичный Betaflight 4in1 ESC в стандартной ориентации:
Сервопривод 1 → Мотор 4
Сервопривод 2 → Мотор 1
Сервопривод 3 → Мотор 2
Сервопривод 4 → Мотор 3
Мотор тестируется в порядке вращения по часовой стрелке, начиная с переднего правого.
Mission Planner → вкладка Setup → Optional Hardware → CompassMotor Calibration
Это не обязательно, но может быть полезно проверить:
Переверните пропеллеры так, чтобы дрон давил на землю
Разгонитесь до 50-75% дросселя на 5-10 секунд- Посмотрите на эффект помех компаса:
- Менее 30: приемлемо
- Менее 60: может быть в порядке, но рассмотрите возможность переместить компас подальше от проводов моторов/кабелей батареи
- Более 60: необходимо переместить компас
- Менее 30: приемлемо
Настройка гироскопа и логирования
Mission Planner → вкладка Config → Full Parameter List
Для плат F7 и H7 может быть полезно для производительности полёта и настройки дронов меньшего размера установить:
- INS_FASTSAMPLE: 1
- INS_GYRO_RATE: 2 кГц (2000 Hz)
Это предотвращает наложение спектра моторных частот выше 500 Гц. Должно быть установлено по умолчанию на современных платах.
Правильные настройки логирования необходимы для процесса настройки.
Mission Planner → вкладка Setup → Optional Hardware → FFT Setup
- Sample count (количество образцов): 1024 или 2048
Обычно лучше логировать только IMU1, чтобы избежать перегрузки и потери логов
- Log bitmask (маска битов логирования) должна быть установлена как показано
Это захватывает все данные, необходимые для процесса настройки.
Варианты пакетного логирования (Batch Logging Options)
- Sensor-Rate Logging: логирование при полной скорости датчика
- Sample post-filtering: образец после фильтрации
- Sample pre- and post-filter: образец до и после фильтрации
После тестирования зависания проверьте данные RPM в логе.
Если вы видите случайные скачки только на одном ESC — это конфликт на пине выхода сервопривода. Рассмотрите возможность:
Переподключить и использовать другой пин выхода сервопривода для этого мотора
Изменить SERVO_BLHBD_MASK для игнорирования этого канала
Использовать 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 просматривает образец данных от гироскопа, пытаясь определить наличие пиков шума и их частоту. Это может использоваться для управления фильтрами-пробками для уменьшения эффекта шума.
Это медленнее и менее точно, чем RPM данные для шума моторов. Это может быть полезно для резонансов рамы, но требует больших вычислительных ресурсов.
Dynamic FFT использует данные гироскопа для определения пиков шума между минимальной и максимальной частотой.
Filter Review в ArduPilot WebTools
Откройте ваш лог в ArduPilot WebTools Filter Review:
https://firmware.ardupilot.org/Tools/WebTools/FilterReview
Проверьте, что график данных полёта выглядит правильно и нет пропусков или потерь логирования.
Прокрутите вниз до спектра IMU. Вы должны быть в состоянии увидеть:
- Pre-Filter Gyro Data (данные гироскопа до фильтра)
- Post-Filter Gyro Data (данные гироскопа после фильтра)
- Notch Tracking (отслеживание пробок)
Вы также увидите эффект фильтра низкой частоты гироскопа, снижающего мощность шума на высоких частотах.
Фильтр низкой частоты гироскопа (Gyro Low Pass Filter)
INS_GYRO_FILTER (фильтр гироскопа)
Гироскоп в дроне чувствителен как к жёстким движениям тела дрона (сигнал), так и к вибрациям (шум).
Вибрации генерируются вращающимися моторами и пропеллерами, а также некоторыми полезными нагрузками. Резонанс кинематической конструкции и полезной нагрузки может также усилить определённые частоты.
Важно: Энергия в вибрациях/шуме обычно намного выше, чем энергия в жёстких движениях тела дрона!
К счастью, реальные движения находятся на низкой частоте, а вибрации — на более высоких частотах. Фильтр низкой частоты гироскопа использует это преимущество для снижения шума без излишних потерь сигнала!
- Реальные движения дрона: обычно ниже 30 Гц
- Вибрации: обычно выше 50 Гц (зависит от RPM пропеллера!)
Компромиссы фильтра низкой частоты гироскопа
К сожалению, фильтр низкой частоты гироскопа имеет некоторые компромиссы:
Любой фильтр низкой частоты ослабляет высокие частоты, но также добавляет задержку
Чем ниже частота среза фильтра на 3 дБ, тем больше задержка добавляется
Эта задержка замедляет реакцию дрона на турбулентность воздуха и входные команды управления
Настройка фильтра низкой частоты гироскопа
Мы хотим постепенно увеличивать частоту среза фильтра низкой частоты гироскопа как можно выше, не позволяя шуму проходить.
Наш главный враг:
- Фундаментальная частота мотора
- Самая низкая частота резонанса рамы
Мы хотим, чтобы этот пик был ниже -50 дБ в данных после фильтра. Мы будем решать эту проблему, используя гармонические фильтры-пробки ArduPilot.
RPM-основанная фильтрация гармоник (RPM Based Harmonic Notch Filtering)
Гармонический фильтр-пробка (Harmonic Notch Filter)
INS_HNTCH (гармонический фильтр)
Помимо широкополосного высокочастотного шума, дроны также испытывают пики шума на определённых частотах. Эти пики создаются:
- Частотой вращения моторов
- Резонансами кинематической конструкции
Пики шума лучше всего обрабатываются фильтрацией пробкой (notch filtering). Фильтр-пробка обеспечивает очень высокую степень ослабления шума около целевой частоты и создаёт намного меньше задержки, чем эквивалентный фильтр низкой частоты.
- Чем уже пробка, тем меньше задержки, но тем точнее должна быть целевая частота
- Чем шире пробка, тем менее критична точность, но больше задержки
Настройка фильтров-пробок — это нацеливание узких пробок ровно там, где находятся пики шума.
Спектрограмма IMU (IMU Spectrogram)
Спектрограмма IMU используется для проверки и настройки гармонических фильтров-пробок. Она показывает мощность шума на разных частотах со временем.
Уменьшение масштаба до нескольких секунд зависания позволяет нам рассмотреть ключевые особенности:
Ищите красную линию:
При F_motor = RPM_hover / 60 (фундаментальная частота мотора)
При 2 × F_motor (вторая гармоника) — вероятно, сильнее для 2-лопастных пропеллеров
При 3 × F_motor (третья гармоника) — вероятно, сильнее для 3-лопастных пропеллеров
Красный на очень низкой частоте — жесткие движения тела дрона
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
- INS_HNTCH_HMNCS: 7 или 5
- Двухлопастные пропеллеры: обычно нужны как минимум 2 гармоники, но иногда больше (проверьте логи!)
- INS_HNTCH_HMNCS: 3 или больше
- INS_HNTCH_HMNCS: 3 или больше
Вероятно, нам не нужна 4-я гармоника, так как мощность шума очень низкая. Мы также могли бы попробовать без второй гармоники!
FFT-основанная фильтрация гармоник (FFT Based Harmonic Notch Filtering)
FFT расшифровывается как Fast Fourier Transform (быстрое преобразование Фурье).
Она берёт кусок данных гироскопа (0.5 секунды) и использует его для расчёта количества энергии на каждой частоте. Частота самых больших обнаруженных пиков может затем передаваться гармоническим фильтрам-пробкам.
Время ↔ Частота: FFT берёт временную область и преобразует в частотную область.
- 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 при наличии нескольких резонансов)
Если нет данных 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
- Проверьте логи для определения источника
ArduPilot использует каскад PID контроллеров для управления дроном. Для хорошей производительности автономного полёта каждый из этих циклов PID должен быть настроен.
Мы начнём с дна и будем работать в гору:
Навигация по маршрутным точкам
↓
Контроль Loiter (зависание)
↓
Контроль вертикального положения
↓
Контроль вертикальной скорости
↓
Контроль дросселя (тяги)
↓
Контроль горизонтального положения
↓
Контроль горизонтальной скорости
↓
Контроль стабилизации отношения (крен/тангаж)
↓
Контроль скорости вращения (крен/тангаж/рыскание)
ArduPilot имеет несколько функций автоматической настройки, которые пытаются найти хорошие значения PID для контроллеров скорости и углов.
Эти инструменты имеют ограничения:
Они могут создавать настройки, подходящие для хобби на небольших дронах
Они будут бороться на больших дронах и создавать неоптимальные настройки, которые могут быть опасно нелетаемыми!
Методичный ручной подход к настройке даст лучшие результаты более безопасно. Это то, что мы будем освещать в этом руководстве.
Контроллер 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 член хочет, чтобы фактическое значение оставалось неизменным и толкает против любого изменения
- D член действует как амортизатор в амортизаторе подвески
Как в амортизаторе, баланс между силой пружины (P член) и размером амортизатора (D член) очень важен.
Баланс PD ArduPilot по умолчанию обычно подходит в качестве точки отсчёта, но не всегда! Правильный баланс между P и D членами — первый шаг хорошей настройки PID.
- I член добавляет ошибку с течением времени и толкает всё сильнее и сильнее, чем дольше сохраняется ошибка
Ошибка PID накапливается
Правильный баланс PI — это то, что позволяет максимальный I член без колебаний
- 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, которое направляет процесс настройки:
Порядок настройки:
- D член сначала
Затем P член- I член
- DFF (Derivative Feedforward)
- 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 только с использованием данных временных рядов.
Без DFF фактическое будет всегда отставать от целевого — это нормально на данном этапе.
Шаговый ответ (Step Response):
Красная линия — это цель!
Небольшое перерегулирование — это нормально, но абсолютно без колебаний
- Недо-демпфирование: слишком много P относительно D
Решение: уменьшить P относительно D
- Критически демпфирование: баланс PD правильный
- Чрезмерное демпфирование: недостаточно P относительно D
Решение: увеличить P относительно D
Важно соотношение PD, а не отдельные значения. Я предлагаю только изменять P член на этом этапе настройки баланса PD, чтобы всё было просто.
Если у вас несимметричный дрон, разблокируйте значения крена и тангажа и настройте каждую ось отдельно.
Устранение колебаний (Troubleshooting Oscillation)
Если вы страдаете от колебаний, которые не улучшаются при снижении P члена, это может быть двумя вещами:
Высокие коэффициенты усиления 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%.
Каждая ось должна быть отрегулирована отдельно.
Ось рыскания обычно не нуждается в 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_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 Planner → Config → Full 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:
Data → DataFlash Logs
Пространство логирования конечно, поэтому периодически очищайте логи (если у вас нет большой SD карты).
После загрузки лога вы можете пересмотреть его в Mission Planner.
Запомните, где сохранены ваши логи (обычно в папке Planner).
Вы можете просматривать логи, загруженные в Mission Planner в разделе Data → DataFlash Logs → Review a Log.
Правильная настройка ArduPilot требует методичного подхода и понимания взаимодействия различных контроллеров. Начиная с фильтрации и работая вверх по каскаду контроллеров, вы сможете достичь отличной производительности полёта.
Помните:
Начните с настройки фильтров
Переходите к настройке PID скорости вращения
Затем настройте контроллеры более высокого уровня
Всегда проверяйте логи для подтверждения хороших результатов
Будьте методичны и терпеливы в процессе
Удачи в полёте!
