Создание собственной системы стабилизации

oleg70
SergDoc:

но ускорение чуть побольше надо, дабы аксель его прочувствовал…

Наверно всеж корректнее было бы этот вопрос обсуждать если учитывать ВСЕ факторы качества работы “горизонта”, а именно сам мат. алгоритм, частоту работы, рабочие установки того же акселя и гиры, ну наконец значения коэфицинтов усиления самой IMU… Например у меня аксель на 16G настроен, и какой же вираж я должен совершить на 400 граммовой модели чтоб “он это почувствовал” (?)…

Drinker:

в азы школьные ударились.

Кстати в этой теме как раз именно таких оценок разных вариантов систем очень мало, больше было HALL и т.п. …

SergDoc
oleg70:

Например у меня аксель на 16G настроен

Олег, а как в таком случае инерциалка живёт? Углы понятно посчитаются, а скорости, ускорения, пройденный путь? не берём GPS во внимание - мы в бункере железобетонном и чюйка акселя ой как нужна…

Drinker

Что 400 грамм, что 400 кг - акселю все одинаково. 400 граммовая как раз шустрее дергается в плане ускорений.

oleg70
SergDoc:

чюйка акселя ой как нужна…

Могу заметить что при изменении чуйки акселя от 2G до 16G инерциалка работает практически одинаково (код от Madgwick на кватернионах), меняется в этом случае как раз только степень влияния линейной составляющей ускорения на углы и скорость стабилизации горизонта…
Таким образом, подобрав коэфициент усиления для IMU (в коде он представлен как “float Kp=…”) добиваемся нужного компромиса между влиянием линейных ускорений и скоростью реакции системы… ВСЁ !
Как результат, это “паразитное” влияние практически не сказывается в реальном полете (ну если только не делать виражи с ОГРОМНЫМИ перегрузками на протяжении длительного времени).

Drinker:

Что 400 грамм, что 400 кг

Акселю то все равно, а вот тяжелая и легкая модели при одинаковом радиусе разворота требуют разных скоростей и как следствие разных центростремительных ускорений… Я не прав ???

Drinker

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

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

oleg70
SergDoc:

Углы понятно посчитаются, а скорости, ускорения, пройденный путь?

Тут вот попробовал получить чисто из акселя скорость и путь (для высотомера) и понял, что это практически невозможно…
Даже применив математические извраты типа как у известных прошивок, результат не особо порадовал. В результате экспериментов остановился на данных только барометра, дополнительно усредненных (шум получился на уровне 10 см.!!)
В результате моё крылышко вполне приемлемо держит высоту (может сервы чуть чуть “вешаются” конечно 😃).
Так что сделал вывод: толку от акселерометра, как источника данных для расчета скорости и уж тем более пройденного пути, НИКАКАЯ. Единственное что с него можно взять полезного -
это в чистом виде “D” компонента ПИДа для коптера для “альт холда”…

HikeR
oleg70:

НИКАКАЯ

сразу вспоминается эксперимент: мужику надели браслет на ногу (на ступню), в браслете стандартный набор 9-DOF и проц, мужика отправили бегать по кварталу. когда прибежал обратно, то когда по полученным данным восстановили траекторию, то начальная и конечная точки не сошлись меньше чем на 100 метров.

в масштабах квартала и с учетом перемещения браслета (на ноге!) точность очень даже КАКАЯ. ссылку пошукаю, давненько это было.

HikeR

не, в том кино был негр спортивного сложения )

oleg70
HikeR:

то начальная и конечная точки не сошлись меньше чем на 100 метров

Там, похоже, просто шаги считаются ? , неужели пройденное расстояние можно узнать “сложив” вычисленные кусочки, пройденные одной ногой ? не верю… (если только с лошадиной ошибкой, а мы тут сантиметры пытаемся учесть…)

HikeR

проинтегрировав ускорение можно получить что угодно, хоть шаги, хоть расстояние. правда, только относительно начальной точки измерений.

oleg70
HikeR:

проинтегрировав ускорение можно получить что угодно

Вот в этом интегрировании как раз и вся загвоздка… Скорость начинает “сходить с ума” при возникновении шумов (собственных,температурных, механических и пр.) и нет никакой информации с датчика ускорения чтоб обнулить или остановить рост интеграла, поэтому метод с аксель+ПИД+AB+баро фактически рассчитывает не расстояние, а коэфициент воздействия на систему…

HikeR

у нас маленькие ракеты сбивали маленькие самолеты на больших дистанциях во времена, когда к микросхемам прилагался ящик для переноски. на компьютерах, которые слабее и медленнее нынешних калькуляторов, летали на Венеру.

так что перестаньте жаловаться на “шумы” и идите работать (с) ;)

oleg70
HikeR:

ракеты сбивали маленькие самолеты

Согласен, но и датчики положения были сделаны мягко говоря по другой технологии и мягко говоря из других материалов…
Тут же вопрос конкретный… есть пожелания ? советы ? (кроме идти… и работать…)

HikeR

конечно есть — использовать для измерения физ. величин специально созданные для этого датчики: глонасы, датчики воздушной скорости, ультразвуковые/лазерные дальномеры.

вот по поводу жалобы, “нет никакой информации с датчика ускорения чтоб обнулить или остановить рост интеграла”. я нигде не видел, чтобы показания акселя имели некий весовой коэф. “доверия”, все берут его показания независимо от текущих пере-/недогрузок и “исправляют” результат с гиры. почему никто не “доверяет” акселю в моменты, когда измеренное им ускорение ~= G и не “слушает его совсем” когда там наизмеряли 4-8-16G?

oleg70
HikeR:

я нигде не видел, чтобы показания акселя имели некий весовой коэф.

Кусочек рабочего кода двумя страницами выше:
// By using CF it’s possible to correct the drift of integrated accZ (velocity) without loosing the phase, i.e without delay
vel = vel * 0.985f + baroVel * 0.015f;

Обращаю внимание на то “vel” - скорость взятая именно с акселя (интеграл), а “baroVel” - скорость высчитанная из показаний барометра. Таким образом “капризный” интеграл от ускорения имеет основной вес и сглаживается непосредственно барометром…
Метод работает, НО у MS5611 достигнут собственный дрейф в 10-15 см. и от акселя толку уже практически никакого, вся эта математическая каша не может дать более точного результата с меньшим шумом…
Эту мысль я и озвучил, проделав эксперименты, а вовсе не “жаловался” на тяжелую жизнь 😃

HikeR

вот о чем и речь. барометром “поправляем” ось Y модели взятую с акселя, которая была расчитана с гироскопа и “поправлена” акселем же. а то что аксель при любом измерении не равном G неправильно “поправляет” гироскоп забыли?

oleg70:

у MS5611 достигнут собственный дрейф в 10-15 см

почему вы считаете что это дрейф, а не атмосфера вокруг? ветер дунул, температура изменилась, влажность повысилась — вот и изменение давления на ровном месте.

SergDoc
oleg70:

Эту мысль я и озвучил, проделав эксперименты, а вовсе не “жаловался” на тяжелую жизнь

0.994 0.06 😃 надо с коэфф баловаться, желательно постоянно в зависимости от прогноза(не гидрометцентра)… барометр нужен для коррекции если шум акселя в один бок… спрогнозировать датчик можно где-то с вероятностью разброса 68% если показания вышли за вероятность, то тупо уменьшать вес датчика - в конечном счёте если датчик нагло врёт - исключать из расчётов…

oleg70
HikeR:

при любом измерении не равном G неправильно “поправляет” гироскоп забыли?

Чуток не так, коллега…,: за ускорение по оси Z принимается разница из “сырых” данных Z акселя и вектора G рассчитанного IMU, таким образом имеем “чистое” вертикальное ускорение при любом наклоне аппарата…
А уж потом интегрируем его и получаем скорость… а потом и расстояние (второй интеграл)…

HikeR:

почему вы считаете что это дрейф,

Точнее сказать - “шум”, , во первых паспорт на 5611, во вторых очевидная вещь при наблюдении графика в динамике (пользуюсь Pithon_ом), какие могут быть сомнения ?

SergDoc:

надо с коэфф баловаться,

Так вот у меня получилось (?) что баловаться нет смысла, т.к. получить на выходе меньший “шум” чем просто с барометра не выходит… (есть предположение что алгоритм был разработан для “дубовых” барометров)…

mataor

эх блин… приведу еще пример - маховий прошивка, там как раз основное по расчету высоты - аксель, лично у меня не раз было что держал одну высоту по 10-15 мин, причем не в висении, а в полете

oleg70
mataor:

маховий прошивка, там как раз основное по расчету высоты - аксель

Нельзя ли на этот кусочек кода взглянуть ?? (для анализа)