Перейти к содержимому
Betaflight | Восстановление после вращения по рысканью и обнаружение

Betaflight | Восстановление после вращения по рысканью и обнаружение "переполнения" гироскопа.

Вторник, 22 июля 2025

Примечания по восстановлению после вращения по рысканью

Эта функция, включенная по умолчанию в Betaflight 3.4, сокращает продолжительность и интенсивность неконтролируемых вращений по рысканью (yaw).

Например, если коптер задевает ворота, дерево или другой объект, вызывая быстрое вращение, он может войти в "бесконечное" неконтролируемое вращение. Обычно это сопровождается характерным дребезжащим звуком и быстрым набором высоты — так называемая проблема "Yaw Spin To The Moon" (YSTTM). В версии 3.4 добавлены две функции, которые быстрее и эффективнее восстанавливают контроль.

Для кого предназначено: В первую очередь для FPV-пилотов. Лучше всего работает с гироскопами MPU.

Для кого не рекомендуется: LOS-пилотам, использующим высокие скорости вращения, лучше отключить эту функцию.

Использование

Функция включается/выключается через CLI:

set yaw_spin_recovery = ON

set yaw_spin_recovery = OFF

Параметр threshold определяет скорость вращения (в градусах/секунду), при которой активируется защита. Значение по умолчанию (1950) минимизирует ложные срабатывания. Для FPV рекомендуется установить значение на 100-200 выше вашей максимальной скорости рысканья. Например, для коптера с максимальной скоростью 700°/с:

set yaw_spin_threshold = 850

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

Как это работает?

После активации функция использует полную мощность моторов для остановки вращения, приостанавливая работу PID и управление тягой. Одна пара моторов работает на максимум, другая — на минимуме. Когда скорость вращения падает ниже порога на 100°/с и остается такой в течение 20 мс, управление возвращается пилоту.

Стоит ли снижать порог?

Порог 1000 сокращает время неконтролируемого вращения примерно вдвое по сравнению с порогом 1950.

Для коптеров с максимальной скоростью рысканья ~800°/с порог 1000 работает хорошо, возвращая контроль через ~0.25с после столкновения.

Ложные срабатывания возможны, если скорость вращения превышает порог при нормальном полете. В FPV-гонках скорости выше 500°/с редки даже на крутых виражах.

Рекомендация: "Лично я использую 850, и это отлично работает. Моя максимальная скорость рысканья — 800, но даже при полном вращении я не достигаю предела."

Что произойдет, если порог установлен слишком низко?

Если максимальная скорость вращения по рысканью (yaw) превышает порог, длительное вращение коптера по этой оси будет вызывать его «заикание». Моторы будут постоянно превышать порог. При этом PID-регуляторы отключаются, и вращение замедляется. Затем моторы снова превысят порог, и цикл повторится. Решение — пилоту необходимо уменьшить максимальную скорость рысканья или увеличить значение порога.

Что делать при срабатывании защиты?

При ударе о препятствие пилоту не требуется специальных действий. Безопаснее всего:

  1. Сбросить газ
  2. Вернуть стики в центр
  3. Быть готовым либо восстановить контроль, либо отключить моторы.

При срабатывании защиты коптер работает на 50% тяги. Кратковременное ускорение перпендикулярно оси вращения, но контроль быстро возвращается.

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

Совместимость с гироскопами ICM

Функция gyro_overflow_detect (включена по умолчанию) защищает от переполнения на гироскопах ICM. При активации она отключает все PID при превышении 1950°/с по любой оси, снижая моторы до холостого хода.

Важно: При использовании ICM-гироскопов восстановление по рысканью (с порогом ~800) работает быстрее и эффективнее стандартной защиты от переполнения.

Технические аспекты

Почему коптер не возвращается в исходное положение?

Это потребовало бы точных данных акселерометра/магнитометра, которые недостоверны после удара. Кроме того, это вызвало бы задержки и могло привести к неконтролируемому полету.

Что вызывает бесконечные вращения?

Представьте себе, что квадрокоптер вращается настолько быстро, что моторы меняются местами (перемещаются на 180 градусов относительно своего предыдущего положения) за 40 миллисекунд или меньше. Это предельная скорость разгона или торможения для мотора. Обычные PID-регуляторы для исправления колебаний по тангажу и крену просто не успевают повлиять на скорость моторов, пока те не переместятся в противоположную точку от нужного положения. Это означает, что PID-отклик по тангажу и крену при быстром вращении будет усиливать сам себя, поддерживая или усугубляя колебания, пока квадрокоптер продолжает вращаться.

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

Именно это странное сочетание факторов вызывает “полет на Луну” по рысканью на гироскопах MPU. Ключевым фактором является наличие чрезвычайно высокой скорости вращения по рысканью. Очень быстрое чистое вращение по тангажу не приводит к такому, как и быстрое вращение вокруг оси, включающее высокую скорость по тангажу и крену одновременно. Но когда тангаж и крен сочетаются с высокой скоростью вращения по рысканью, логи показывают, что гироскопы и PID ведут себя хаотично по всем осям.

Сконцентрировав усилия квадрокоптера на активном подавлении вращения по рысканью, можно предотвратить такие длительные неуправляемые полеты. Именно это и делает этот код.

Примеры из логов Blackbox

Небольшое столкновение

Пиковое вращение -1800°/с → активация защиты при пороге 800 → два мотора на 100%, два на 0% → через 120мс скорость падает ниже 700°/с → через 140мс после удара возвращается контроль.

 Вот реальный лог задевания земли во время дугообразного поворота с гироскопом MPU. Удар совсем небольшой. Пиковая скорость вращения по рысканью, около -1800 градусов/сек, достигается в течение 2 мс, превышая порог в 800, и инициируя yaw_spin_protection (защиту от вращения по рысканью). В этот момент два мотора получают 100% мощности, а противоположная пара - 0%, обеспечивая максимальную мощность для замедления вращения. В течение этого времени компоненты крена и рысканья пассивно вращают квадрокоптер (он одновременно совершает что-то вроде вращения вокруг оси, проходящей через один рукав). Примерно через 120 мс скорость вращения по рысканью падает ниже 700, затем следует 20 мс задержки, и примерно через 140 мс после удара нормальное PID-управление возвращается пилоту. Квадрокоптер все еще кренится со скоростью более 2000 градусов в секунду, но теперь, когда квадрокоптер не вращается, PID-система корректирует это примерно за еще 140 мс. Квадрокоптер снова становится управляемым примерно через ¼ секунды после удара. Обратите внимание, что если бы порог был установлен на значение по умолчанию 1950, код yaw_spin_protection не был бы активирован при таком ударе.

YawSpin_45454

Сильное столкновение

Пиковое вращение ~8000°/с → работа защиты в течение 600мс → несмотря на погнутые пропеллеры, вращение останавливается быстрее, чем при использовании только защиты от переполнения.

Это лог гораздо более значительного удара. Судя по скорости возврата в нормальное состояние, пиковая скорость вращения по рысканью, вероятно, превысила 8000 градусов в секунду, и это привело к погнутым пропеллерам. Общее время в режиме полной yaw_spin_recovery (одна пара моторов работает на полную мощность) составляет около 600 мс. Это самое продолжительное вращение, когда-либо зарегистрированное с защитой от вращения по рысканью. Подавляющее большинство случаев разрешаются менее чем за 400 мс. Обратите внимание, что после удара также наблюдаются значительные колебания по тангажу и крену, а также вращение по рысканью. В момент удара скорость по тангажу превышает 2000 градусов/сек, а вскоре после этого скорость по крену также превышает 2000 градусов/сек. Если бы это был гироскоп ICM, все PID были бы обнулены, и активного подавления этих вращений не было бы - скорее всего, потребовалось бы более 3-4 секунд, чтобы пассивно замедлиться настолько, чтобы управление вернулось пилоту. Это был гироскоп MPU6000, поэтому yaw_spin_protection могла активно остановить вращение с полной мощностью моторов, независимо от величины вращения. В течение периода коррекции вращения по рысканью все колебания по тангажу и крену прекратились без какого-либо активного участия PID. К тому времени, когда вращение было остановлено, значительных проблем с тангажом и креном не было. Скорее всего, относительно быстрое пассивное ослабление колебаний по тангажу и крену происходит из-за гироскопического стабилизирующего эффекта, возникающего при работе двух моторов на полную мощность в противоположных направлениях, и значительного сопротивления воздуха по осям тангажа и крена у квадрокоптера, активно подавляющего вращение по рысканью.

YawSpin_127855

С YAW_SPIN_Protection этот мощный спин остановился относительно быстро.

Betaflight | Восстановление после вращения по рысканью и обнаружение ID 47