Перейти к содержимому
Betaflight | Функции удержания высоты (Altitude Hold) и удержания позиции (Position Hold)

Betaflight | Функции удержания высоты (Altitude Hold) и удержания позиции (Position Hold)

Технику БПЛА
Воскресенье, 17 августа 2025

Внимание.Такой черновик присутствует на официальном сайта Betaflight. Актуально только для прошивки Betaflight 4.6+. Перевод не адаптирован (так как есть).

Betaflight 4.6 представляет функции удержания высоты (Altitude Hold) и удержания позиции (Position Hold).

Эти функции позволяют пилоту использовать тумблер для включения функции зависания дрона в фиксированном месте и на постоянной высоте в режиме Angle. Стики можно использовать для регулировки высоты и положения. Обязательно требуется GPS, а использование магнитометра (компаса) настоятельно рекомендуется.

Быстрый старт

  • Включите ALTITUDE_HOLD и POSITION_HOLD при сборке прошивки.
  • Убедитесь, что GPS работает корректно.
  • Желательно подключить магнитометр и проверить его работоспособность.
  • Точно установите значение тяги для зависания hover throttle.
  • Включите удержание высоты и позиции на одном и том же переключателе режима.
  • Проверьте, что квадрокоптер зависает без дрейфа в режиме Angle (то есть акселерометр откалиброван правильно). Полевые корректировки калибровки акселерометра можно выполнять с помощью стиков.
  • Выполните зависание и тщательно протестируйте.

Примечание: аппарат будет находиться в режиме Angle — реакция на стики будет сильно отличаться от обычной.

Удержание высоты (Altitude Hold)

Удержание высоты можно установить и протестировать независимо от удержания позиции. Функция предназначена для поддержания постоянной высоты квадрокоптера за счёт автоматической регулировки тяги. Для стабильного удержания высоты положение стика газа должно быть либо в зоне «мёртвой зоны» вокруг обычной точки зависания, либо установлено в ноль. Целевая высота может быть изменена вверх или вниз, если вывести стик газа за пределы мёртвой зоны.

Точность удержания высоты зависит от нескольких факторов: точность и стабильность данных о высоте, оптимальность значений ПИД-регуляторов для конкретного аппарата, а также сила и порывистость ветра. В хороших условиях с правильно настроенными ПИД-регуляторами стабильность высоты может быть в пределах 0,5–1 метра.

Если используется только удержание высоты (без удержания позиции), высота будет стабильной, но положение — нет. Управление креном, тангажом и рысканием будет работать как обычно, и аппарат всегда будет в режиме Angle.

Надёжное удержание высоты требует качественного источника данных о высоте. Достаточно данных от GPS, но при этом требуется много спутников, и некоторые из них должны быть низко над горизонтом. Иногда подключение барометра улучшает оценку высоты, особенно при зависании, но может вызывать ошибки в ветреную погоду, на малой высоте, при изменении температуры или скорости. Точность и стабильность оценки высоты можно проверить на вкладке «Sensors» в Configurator. Значения ПИД по умолчанию рассчитаны на использование только GPS и могут быть слишком агрессивными при подключении быстрого барометра.

Пилот должен настроить переключатель режима для включения удержания высоты на вкладке «Modes» в Configurator.

Когда функция активна, если стик газа находится в пределах мёртвой зоны вокруг обычного значения зависания, аппарат будет поддерживать постоянную высоту. Чтобы увеличить высоту, поднимите стик газа выше мёртвой зоны — аппарат будет набирать высоту со скоростью, пропорциональной положению стика. На полном газу скорость набора высоты по умолчанию составляет 5 м/с (параметр alt_hold_adjust_rate). Если стик газа опустить ниже мёртвой зоны, аппарат будет плавно снижаться. Однако если стик газа опустить полностью (в ноль), аппарат зависнет и не будет ни подниматься, ни снижаться. Полное опускание стика газа — своего рода «быстрый способ» зафиксировать высоту.

При активации удержания высоты начальное значение тяги устанавливается равным значению hover_throttle  (CLI). Затем ПИД-регулятор корректирует тягу вокруг этого значения для поддержания высоты. Если значение hover_throttle слишком низкое, квадрокоптер будет сразу падать при включении удержания высоты. Если слишком высокое — сразу начнёт набирать высоту. Отсутствие резких изменений высоты при включении — признак правильной настройки. На месте значение можно подстроить через подменю GPS Rescue OSD.

Чтобы аппарат удерживал постоянную высоту, стик газа должен быть установлен либо:

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

Если удержание высоты включается в экстренной ситуации (например, при быстром падении) или если квадрокоптер быстро набирает высоту, возможны перерегулирование и «отскок». Система не может мгновенно остановить аппарат, но он должен вернуться к исходной высоте в течение нескольких секунд. Перед использованием рекомендуется проверить поведение в таких ситуациях.

Удержание высоты можно включать даже при полёте вверх ногами — аппарат просто перевернётся и будет удерживать высоту.

В режиме удержания высоты аппарат переходит в режим Angle. Если удержание позиции одновременно не включено, управление креном, тангажом и рысканием работает как обычно — контролируется только высота.

CLI-параметры:

hover_throttle — начальное значение тяги при включении удержания высоты. 
Если слишком низкое — квадрокоптер будет падать при включении.
alt_hold_adjust_rate — чувствительность изменения высоты к положению стика газа.
По умолчанию: +5 м/с при полном газе, -5 м/с при нулевом газе.
alt_hold_deadband — мёртвая зона по обе стороны от значения зависания,
в пределах которой высота удерживается автоматически. По умолчанию 20 (20%).
Например, если hover_throttle = 1400, то 20% мёртвая зона — от 1320 до 1520.

Удержание позиции (Position Hold)

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

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

После остановки аппарат должен оставаться в пределах 1–2 метров от целевой точки, в зависимости от качества сигнала GPS, ветра и настройки ПИД. Более агрессивные ПИД лучше держат позицию, но вызывают частые мелкие корректировки. Менее агрессивные ПИД обеспечивают более плавное поведение, но медленнее реагируют.

Для удержания позиции необходим хороший GPS-сигнал. Лучше всего работает при наличии правильно откалиброванного и исправного магнитометра.

С магнитометром точное удержание позиции доступно сразу после взлёта. Без магнитометра удержание позиции не будет работать, пока аппарат не пролетит несколько секунд прямо вперёд с умеренной скоростью без крена и рыскания. В этом случае в OSD появится предупреждение POSHOLD FAIL.

Осторожно: Если магнитометр выдаёт ложные данные о направлении, или GPS-направление повреждено, включение удержания позиции может привести к сильному наклону аппарата, круговому полёту или даже уходу на большой скорости!
Примечание: Информацию по настройке магнитометра см. на wiki Betaflight.com.

В режиме удержания позиции целевая позиция может корректироваться с помощью отклонения стиков крена и тангажа, превышающего pos_hold_deadband. Аппарат можно перемещать и даже «летать» с помощью стиков, как в обычном режиме Angle, особенно если мёртвая зона мала. Значение мёртвой зоны можно настроить в CLI параметром pos_hold_deadband (в процентах от центра стика). Если pos_hold_deadband = 0, ввод крена и тангажа будет полностью игнорироваться — положение аппарата будет заблокировано до отключения режима.

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

Аппарат резко останавливается при возвращении стиков в центр, особенно при высокой скорости. Например, при скорости 10–15 м/с вперёд может быть применён максимальный угол тангажа 50 градусов назад. Для более плавной остановки снизьте скорость с помощью стиков перед возвратом в центр.

Значение autopilot_max_angle можно увеличить до 70 градусов, если требуется более агрессивное поведение.

Если удержание высоты и позиции работают, и аварийный режим (failsafe) установлен на «посадку», аппарат будет плавно снижаться на текущей позиции без дрейфа. Это намного лучше старого метода. Однако GPS Rescue по-прежнему предпочтительнее для аварийного режима и имеет приоритет над удержанием позиции.

Пользовательские CLI-параметры:

pos_hold_without_mag = true — разрешает удержание позиции без магнитометра.
pos_hold_deadband — мёртвая зона вокруг центра стиков. По умолчанию 5%.
При 0 стики игнорируются. Меньшие значения удобнее для точной корректировки.
autopilot_max_angle — максимальный угол, который может применить автопилот при резкой остановке.
По умолчанию 50°, максимум 70°. Максимальный угол, который может задать пилот
— половина этого значения.
autopilot_position_P — коэффициент P для удержания позиции.
Также есть D, I и A (ускорение). По умолчанию все 30.
При слишком высоких значениях — колебания, при слишком низких — вялое управление.
Меняйте по одному, чтобы понять эффект.
autopilot_position_cutoff — фильтр сглаживания для D и A компонентов ПИД.
По умолчанию 80 (0,8 Гц). При 50 — значительно плавнее, но менее точное позиционирование.
При 200 — очень «дрожит». Выбор за вами.
gyro_filter_debug_axis — выбор оси (Pitch или Roll) для логирования расстояний и
ПИД в режиме отладки autopilot_position.

Предполётные проверки

  • Если используется магнитометр, тщательно проверьте направление на главном экране BF Configurator. Сравните показания с компасом на смартфоне. Значение должно быть близко к 0° при направлении на север, около 90° — на восток, 180° — на юг и т.д. Ошибка должна быть менее 20°. Проверьте точность при наклонах ±60°.
  • Выполните зависание в режиме Angle и убедитесь, что акселерометр откалиброван и аппарат удерживается стабильно. Стиками можно внести мелкие корректировки.
  • Сначала протестируйте удержание высоты отдельно. Убедитесь, что при включении нет резкого падения или набора высоты. Подстройте hover_throttle, чтобы высота не менялась резко. Потренируйтесь регулировать высоту с помощью газа.
  • Затем включите удержание позиции на том же переключателе. Убедитесь, что много спутников GPS.
  • Если магнитометра нет, необходимо пролететь прямо вперёд на хорошей скорости без крена и рыскания на 50–100 метров (иногда больше), пока стрелка «домой» в OSD не покажет прямо вверх при движении к дому. Это «калибрует» направление аппарата по GPS. Без этого удержание позиции не будет работать.
  • Если магнитометр есть — калибровочный полёт не нужен, удержание позиции работает сразу после взлёта.

Готовы к тесту? Поднимитесь на 2 метра, в прямой видимости (LOS), и включите удержание высоты и позиции одновременно. Будьте готовы отключить режим или отключить моторы. Аппарат должен просто зависнуть. Возможен небольшой дрейф в радиусе ~1 м.

  • Если аппарат сразу улетает под углом или начинает кружить — данные о направлении (Mag или GPS) некорректны. Без магнитометра повторите прямолинейный полёт на 50–100 м.
  • Если присутствует сильная тряска или колебания — ПИД слишком высокие.
  • Убедитесь, что можете перемещать аппарат с помощью стиков крена и тангажа. Делайте это осторожно. Управление будет «не как обычно». Чтобы замедлиться — делайте это плавно, вручную «сбрасывая» скорость, отклоняя стик в обратную сторону перед возвратом в центр. Иначе при резкой остановке на высокой скорости произойдёт резкое изменение угла.

Получите хорошее ощущение управления в режиме удержания позиции в LOS, прежде чем использовать в FPV.

Функции безопасности

  • Аппарат нельзя активировать (arming) в режиме удержания позиции или высоты.
  • Удержание позиции НЕ работает:
    • если нет 3D-фиксации GPS;
    • если нет магнитометра и GPS ещё не определил направление (нужно пролететь прямо);
    • если в конфигурации есть магнитометр, он нужен (GPS-направление недоступно), но «неисправен» (сломан или не калиброван).
  • В OSD появляется сообщение POS HOLD FAIL, если удержание позиции невозможно.
  • По умолчанию магнитометр обязателен. Отключить можно через set pos_hold_without_mag = true.

Если pos_hold_without_mag = true, а магнитометра нет — удержание позиции будет недоступно сразу после взлёта. Нужно пролететь прямо вперёд с углом тангажа, без крена и рыскания, чтобы IMU (инерциальный измерительный блок) «связался» с GPS. До этого удержание не включится и будет показывать ошибку в OSD.

Если аппарат включён, и включено удержание позиции, в OSD будет отображаться «POSH», аппарат перейдёт в режим Angle и будет ждать поднятия газа. При поднятии газа он взлетит, и при достижении ~1 м высоты удержание позиции активируется.

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

GPS Rescue имеет приоритет над удержанием позиции и работает в обычном режиме.

Осторожно: Если удержание позиции включается сразу после включения питания при плохой GPS-фиксации, управление высотой и позицией может быть нестабильным. Хорошая GPS-фиксация с устойчивыми данными о положении и высоте — обязательна.

Отладка — проверка ПИД и т.д.

В CLI: set debug_mode = autopilot_position — для логирования цели, расстояния и ПИД удержания позиции.

Проще всего тестировать, летя строго на север, используя только тангаж, и логируя значения по оси Pitch: set gyro_debug_axis = pitch.

  • При pitch в логе будут ПИД по широте (север-юг).
  • При roll — по долготе (восток-запад).
КаналОписание
0 Абсолютное расстояние до цели, см
1 Расстояние до цели по выбранной земной оси
2 Сумма ПИД по выбранной земной оси (в градусах × 10)
3 Заданный угол тангажа/крена (в градусах × 10)
4 Коэффициент P по оси (в градусах × 10)
5 Коэффициент I по оси (в градусах × 10)
6 Коэффициент D по оси (в градусах × 10)
7 Коэффициент A (ускорение) по оси (в градусах × 10)
Примечания:
  • Отдельные ПИД-регуляторы для движения север-юг и восток-запад.
  • A означает «Acceleration» / «ускорение» (изменение скорости).
  • Сырые GPS-данные также будут в логе (скорость, кол-во спутников и т.д.).

Как работает удержание позиции?

Удержание позиции с использованием ПИД-регулятора работает следующим образом:

  • При включении целевая позиция (setpoint) устанавливается на текущие GPS-координаты аппарата.

  • При каждом обновлении GPS определяется «ошибка» — это расстояние между текущими координатами и целевой точкой по осям север-юг (широта) и восток-запад (долгота) с точностью до см.

  • Независимо к каждой оси применяется ПИД-регулятор с тремя составляющими:

    • P (пропорциональная) реагирует на величину ошибки.

    • I (интегральная) учитывает накопленную ошибку, например, вызванную внешними воздействиями, такими как ветер.

    • D (дифференциальная) и A (антиползучая, иногда D-компонента) противодействуют скорости изменения ошибки и её изменению.

  • Значения, полученные от ПИД, преобразуются в вектор направления — куда нужно наклонить аппарат для возврата к цели.

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

  • Исходя из этого, рассчитываются углы тангажа и крена, с учетом текущего наклона и поворота аппарата (рыскания).

  • При значительных отклонениях стикеров управления (вне «мёртвой зоны») управление передаётся пилоту в режиме Angle.

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

  • После остановки целевая позиция обновляется на эту точку, и аппарат остаётся на месте.

Таким образом, сочетание GPS-координат, точного подсчета ошибки и корректирующих команд ПИД-регулятора позволяет аппарату эффективно удерживать позицию даже при воздействии внешних факторов, таких как ветер. При этом режимы управления плавно переключаются между автоматическим удержанием и ручным контролем пилота.

Betaflight | Функции удержания высоты (Altitude Hold) и удержания позиции (Position Hold) ID 575
  • Betaflight | Новые функции в Betaflight 4.6

    • Удержание высоты, удержание позиции и Автоматическая посадка
    • Генератор чирп-сигналов для настройки
    • Улучшения режима Turtle Mode (Переворот)
    • Улучшения работы светодиодов (LED)
    • Улучшения для гоночных дронов
    • Улучшения для кинематографической съемки и полетов на дальность
    • Расширенная поддержка самолетов (Fixed-Wing)
    • Как обновиться до Betaflight 4.6