А вот как наши автопилото стабиллизаторы отрабатывают внештатные ситуации?

AlexSneg
msv:

лучше пруфлинк

Когда 2 года назад я копал код ардупилота там была такая затычка

Vector3f
AP_DCM::renorm(Vector3f const &a, int &problem)
{
float renorm;

renorm = a * a;

if (renorm < 1.5625f && renorm > 0.64f) { // Check if we are OK to use Taylor expansion
renorm = 0.5 * (3 - renorm); // eq.21
} else if (renorm < 100.0f && renorm > 0.01f) {
renorm = 1.0 / sqrt(renorm);
renorm_sqrt_count++;
} else {
problem = 1;
renorm_blowup_count++;
}

return(a * renorm);
}

Я не знаю современное состояние кода. Но раньше при pitch = +/-90 градусов алгоритм входил в ступор и выходил из него с помощью костыля.

msv

Так а в чем тут “затычка”? Я правда не стал изголяться с оптимизацией разложением в ряд Тейлора, но это личные предпочтения. Главное нормализировать вектор, а уж в лоб это делать или с оптимизацией, принципиально не важно.
Ну а неопределенные состояния в углах Эйлера к матрице отношение не имеют. Это свойство самих углов ( о каком крене можно говорить при тангаже 90 град)… В матрице всегда однозначно определена ориентация объекта без всяких разрывов и особых точек, как собственно и в кватернионах…

AlexSneg

Ну тогда будем считать, что я неправильно выразил свою мысль. Тебе лучше знать, есть там “затычки” или нет 😃

msv
X3_Shim:

Какая интересная тема.

Действительно интересно… Конечно деление на ноль должен исключить программер. И если это не сделано, означает что прошивка просто кривая.
А вот предусмотреть всевозможные комбинации отказов сразу нескольких подсистем ( RC, GPS, IMU итп) задачка не такая простая…
В моем представлении, если исправно управление необходима только сигнализация отказов, и пилот сам должен принимать решение.
А вот когда проблема с управлением и отказ подсистемы необходимой для отработки автовозврата, что делать не очень понятно…
При отказе GPS, можно пытаться какое-то время удерживать курсу по компасу, высоту по баро в надежде что GPS очухается. В остальных случаях- только самоликвидация… 😃

Olegfpv
KBV:

Никогда не забуду тот прикол с потерей GPS спутников в полете 😃
Типа подлетел к радиовышке, потерял спутники, начал кружиться. Немного удалился, спутники снова поймались и АП решил что в этом месте и есть точка взлета, RTL теперь хотел лететь туда ))

что-то не могу найти оригинальное сообщение, примерно в середине лета было. Имя “главного героя” (название автопилота) тоже не помню.

У меня на Fy41 пропадали спутники , сменился возвратный курс, но как только спутники поймались система показала путь домой, из памяти не вылетало, ведь питание не выключалось и в буфере остались координаты. Грешил на плохой GPS, позже сменил камеру курсовую ,вместо корпусной 500 линий на безкорпусную Сони600 супер хад и спутники не пропадали . А так же вместо 7-8 стало 9-11шт. Думаю камера с проводом по низкой частоте подглушивала Gps.

yaten

Грешил на плохой GPS, позже сменил камеру курсовую ,вместо корпусной 500 линий на безкорпусную Сони600 супер хад и спутники не пропадали . А так же вместо 7-8 стало 9-11шт. Думаю камера с проводом по низкой частоте подглушивала Gps.

Это импульсник в камере, уже обсуждалось, даже решение нашли путем припаивания кондера на несколько пикофарад в цепь импульсника (куда не помню). Поищите.

У меня ни один GPS вообще спутники не ловил на расстоянии метр от включеной камеры (c bevrc kx-181). Поставил кондер - 10-11 стало.

baychi
Olegfpv:

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

Да там просто АП рестартовал, очевидно же. Вот и база потерялась…

Cathay_Stray

А если рассматривать не условное деление на ноль, а реальные полётные ситуации?

Например, имевший место случай.

Данные:

АП/ОСД - Шторм
Радио - Фриска
Носитель - Бикслер
Размещение антенн - антенна передатчика вертикально, обе антенны приёмника тоже строго вертикально (что неправильно)
Включение RTH при потере сигнала - около 70 % газа и нейтральные положения остальных палок (70 % газа - это тоже очень неправильно, т.к. слишком много: ток 18-20 А и скорость при этом в районе 120 км/ч, крейсерские значения 3-4 А и 45-55 км/ч)

Развитие событий:

На малой высоте при дальнем заходе на посадку (ок 400 м) я делаю слишком сильный крен (ок 80+ градусов).
Вертикально установленные антенны приёмника теряют связь с передатчиком.
Шторм моментально врубает RTH, ток скачет до 20 А, естественно вместо завершения поворота и выхода из крена самолёт затягивает в бочку и он оказывается на спине.
Антенны снова находятся вертикально, сигнал восстанавливается, газ падает до нормального.
Я вручную переворачиваю самолёт на место и иду менять трусы.

Опыта у меня на тот момент было совсем мало, отсюда неумное размещение антенн и запредельный газ на RTH (а также необходимость смены белья).

Но меня интересует, что делал бы Шторм, если бы я не выкрутил самолёт снова со спины на брюхо? Как бы он его выравнивал, и выравнивал ли бы вообще?
Высота была метров 60, не разгуляешься.

baychi

Возьмите модель, переверните ее вверх ногами с включенной стабилизацией или RTH и посмотрите на сервы. Нормальный АП сначала выводит модель в горизонт пузом книзу , а затем уже думает о рулении на базу. Шторм относится к нормальным АП.
Еще более умные АП не начинают разворот, пока не наберут заданную минимальную высоту.

PS: Ситуации подобные описанной Вами - абсолютно штатные и никаких сюрпризов здесь быть не должно.

Dacor

Ну как бы и срыв в штопор тоже ситуация вроде как почти штатная. Но АП шторм ничего не предпринимал в этом случае. Оно конечно может и не должен был (ну нет у него такого алгоритма), но в шторме есть такая штука - если углы крена или (и) тангажа меняются слишком быстро, то стабилизация не работает вообще (РТХ соответственно тоже) - моргающий значек самолетика. Тот же значек выскакивает при вибрациях. Есть видос в подтверждение. В этом плане Игл конечно комфортнее.

baychi
Dacor:

срыв в штопор тоже ситуация вроде как почти штатная. Но АП шторм ничего не предпринимал в этом случае.

Со штопором при высоте ниже целевой многие АП лажают. Нужно РВ на “вниз” ставить и элеронами компенсировать вращение, до прекращения, а если АП пытается одновременно вверх идти - из штопора можно не выйти.

Dacor:

если углы крена или (и) тангажа меняются слишком быстро, то стабилизация не работает вообще (РТХ соответственно тоже) - моргающий значек самолетика. Тот же значек выскакивает при вибрациях.

Это правильно. ЛУчше ничего не делать.

Cathay_Stray
Dacor:

в шторме есть такая штука - если углы крена или (и) тангажа меняются слишком быстро, то стабилизация не работает вообще (РТХ соответственно тоже) - моргающий значек самолетика. Тот же значек выскакивает при вибрации

Вот я как раз об этом. Самолёт на спине, а на экране этот самый значок.

baychi
Dacor:

если углы крена или (и) тангажа меняются слишком быстро, то стабилизация не работает вообще

Любопытно, какие это величины? У Smalltim 2 варината ограничений: до 500 градусов/сек и до 2000. Представить себе пенолет вращающийся быстрее 1.5 об/сек сложно, а быстрее 6 оборотов в секунду - нереально.

Dacor
baychi:

Со штопором при высоте ниже целевой многие АП лажают.

Тут то как раз на 5 км выше целевой высоты))).

Кстати говоря мой Х5 в штопоре наматывал примерно 2.9 оборота в секунду. )))

baychi:

Это правильно. ЛУчше ничего не делать.

Тут ведь еще вон что. Координаты показываются только когда РТХ активирован. А в моем случае он не включался и соответственно координат я тоже не видел 😦. Говорят, что в крайних прошивках это исправили - координаты всегда на экране. Но в тот день я на Шторм сильно обидился, несмотря на то, что все закончилось благополучно (и это не заслуга АП),

dima043

Чтобы повысить шансы не войти в штопор на режиме удержания высоты при автовозврате надо просто предусмотреть в алгоритме работы автопилота одно простое условие - выключить режим удержания высоты если ток двигателя меньше заранее заданного значения. Вместо этого просто удерживать предварительно заданный угол тангажа ну или хотя 0. Это позволит не задействовать датчик скорости.