А вот как наши автопилото стабиллизаторы отрабатывают внештатные ситуации?
лучше пруфлинк
Когда 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 градусов алгоритм входил в ступор и выходил из него с помощью костыля.
Так а в чем тут “затычка”? Я правда не стал изголяться с оптимизацией разложением в ряд Тейлора, но это личные предпочтения. Главное нормализировать вектор, а уж в лоб это делать или с оптимизацией, принципиально не важно.
Ну а неопределенные состояния в углах Эйлера к матрице отношение не имеют. Это свойство самих углов ( о каком крене можно говорить при тангаже 90 град)… В матрице всегда однозначно определена ориентация объекта без всяких разрывов и особых точек, как собственно и в кватернионах…
Ну тогда будем считать, что я неправильно выразил свою мысль. Тебе лучше знать, есть там “затычки” или нет 😃
Какая интересная тема.
Действительно интересно… Конечно деление на ноль должен исключить программер. И если это не сделано, означает что прошивка просто кривая.
А вот предусмотреть всевозможные комбинации отказов сразу нескольких подсистем ( RC, GPS, IMU итп) задачка не такая простая…
В моем представлении, если исправно управление необходима только сигнализация отказов, и пилот сам должен принимать решение.
А вот когда проблема с управлением и отказ подсистемы необходимой для отработки автовозврата, что делать не очень понятно…
При отказе GPS, можно пытаться какое-то время удерживать курсу по компасу, высоту по баро в надежде что GPS очухается. В остальных случаях- только самоликвидация… 😃
Никогда не забуду тот прикол с потерей GPS спутников в полете 😃
Типа подлетел к радиовышке, потерял спутники, начал кружиться. Немного удалился, спутники снова поймались и АП решил что в этом месте и есть точка взлета, RTL теперь хотел лететь туда ))что-то не могу найти оригинальное сообщение, примерно в середине лета было. Имя “главного героя” (название автопилота) тоже не помню.
У меня на Fy41 пропадали спутники , сменился возвратный курс, но как только спутники поймались система показала путь домой, из памяти не вылетало, ведь питание не выключалось и в буфере остались координаты. Грешил на плохой GPS, позже сменил камеру курсовую ,вместо корпусной 500 линий на безкорпусную Сони600 супер хад и спутники не пропадали . А так же вместо 7-8 стало 9-11шт. Думаю камера с проводом по низкой частоте подглушивала Gps.
Грешил на плохой GPS, позже сменил камеру курсовую ,вместо корпусной 500 линий на безкорпусную Сони600 супер хад и спутники не пропадали . А так же вместо 7-8 стало 9-11шт. Думаю камера с проводом по низкой частоте подглушивала Gps.
Это импульсник в камере, уже обсуждалось, даже решение нашли путем припаивания кондера на несколько пикофарад в цепь импульсника (куда не помню). Поищите.
У меня ни один GPS вообще спутники не ловил на расстоянии метр от включеной камеры (c bevrc kx-181). Поставил кондер - 10-11 стало.
пропадали спутники , сменился возвратный курс, но как только спутники поймались система показала путь домой, из памяти не вылетало
Да там просто АП рестартовал, очевидно же. Вот и база потерялась…
А если рассматривать не условное деление на ноль, а реальные полётные ситуации?
Например, имевший место случай.
Данные:
АП/ОСД - Шторм
Радио - Фриска
Носитель - Бикслер
Размещение антенн - антенна передатчика вертикально, обе антенны приёмника тоже строго вертикально (что неправильно)
Включение RTH при потере сигнала - около 70 % газа и нейтральные положения остальных палок (70 % газа - это тоже очень неправильно, т.к. слишком много: ток 18-20 А и скорость при этом в районе 120 км/ч, крейсерские значения 3-4 А и 45-55 км/ч)
Развитие событий:
На малой высоте при дальнем заходе на посадку (ок 400 м) я делаю слишком сильный крен (ок 80+ градусов).
Вертикально установленные антенны приёмника теряют связь с передатчиком.
Шторм моментально врубает RTH, ток скачет до 20 А, естественно вместо завершения поворота и выхода из крена самолёт затягивает в бочку и он оказывается на спине.
Антенны снова находятся вертикально, сигнал восстанавливается, газ падает до нормального.
Я вручную переворачиваю самолёт на место и иду менять трусы.
Опыта у меня на тот момент было совсем мало, отсюда неумное размещение антенн и запредельный газ на RTH (а также необходимость смены белья).
Но меня интересует, что делал бы Шторм, если бы я не выкрутил самолёт снова со спины на брюхо? Как бы он его выравнивал, и выравнивал ли бы вообще?
Высота была метров 60, не разгуляешься.
Возьмите модель, переверните ее вверх ногами с включенной стабилизацией или RTH и посмотрите на сервы. Нормальный АП сначала выводит модель в горизонт пузом книзу , а затем уже думает о рулении на базу. Шторм относится к нормальным АП.
Еще более умные АП не начинают разворот, пока не наберут заданную минимальную высоту.
PS: Ситуации подобные описанной Вами - абсолютно штатные и никаких сюрпризов здесь быть не должно.
Ну как бы и срыв в штопор тоже ситуация вроде как почти штатная. Но АП шторм ничего не предпринимал в этом случае. Оно конечно может и не должен был (ну нет у него такого алгоритма), но в шторме есть такая штука - если углы крена или (и) тангажа меняются слишком быстро, то стабилизация не работает вообще (РТХ соответственно тоже) - моргающий значек самолетика. Тот же значек выскакивает при вибрациях. Есть видос в подтверждение. В этом плане Игл конечно комфортнее.
срыв в штопор тоже ситуация вроде как почти штатная. Но АП шторм ничего не предпринимал в этом случае.
Со штопором при высоте ниже целевой многие АП лажают. Нужно РВ на “вниз” ставить и элеронами компенсировать вращение, до прекращения, а если АП пытается одновременно вверх идти - из штопора можно не выйти.
если углы крена или (и) тангажа меняются слишком быстро, то стабилизация не работает вообще (РТХ соответственно тоже) - моргающий значек самолетика. Тот же значек выскакивает при вибрациях.
Это правильно. ЛУчше ничего не делать.
в шторме есть такая штука - если углы крена или (и) тангажа меняются слишком быстро, то стабилизация не работает вообще (РТХ соответственно тоже) - моргающий значек самолетика. Тот же значек выскакивает при вибрации
Вот я как раз об этом. Самолёт на спине, а на экране этот самый значок.
если углы крена или (и) тангажа меняются слишком быстро, то стабилизация не работает вообще
Любопытно, какие это величины? У Smalltim 2 варината ограничений: до 500 градусов/сек и до 2000. Представить себе пенолет вращающийся быстрее 1.5 об/сек сложно, а быстрее 6 оборотов в секунду - нереально.
Со штопором при высоте ниже целевой многие АП лажают.
Тут то как раз на 5 км выше целевой высоты))).
Кстати говоря мой Х5 в штопоре наматывал примерно 2.9 оборота в секунду. )))
Это правильно. ЛУчше ничего не делать.
Тут ведь еще вон что. Координаты показываются только когда РТХ активирован. А в моем случае он не включался и соответственно координат я тоже не видел 😦. Говорят, что в крайних прошивках это исправили - координаты всегда на экране. Но в тот день я на Шторм сильно обидился, несмотря на то, что все закончилось благополучно (и это не заслуга АП),
Чтобы повысить шансы не войти в штопор на режиме удержания высоты при автовозврате надо просто предусмотреть в алгоритме работы автопилота одно простое условие - выключить режим удержания высоты если ток двигателя меньше заранее заданного значения. Вместо этого просто удерживать предварительно заданный угол тангажа ну или хотя 0. Это позволит не задействовать датчик скорости.