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

alexeykozin

стик совсем не вариант. во первых между командой от стика или навигационного контроллера до исполнения маневра аппаратом слишком большая задержка и ошибка. нужно брать фактический угол. во вторых ускорение в плоскости поверхности земли будет нулевым в ситуации когда аппарат имеет нулевую тягу моторов но по ролу к примеру завален хоть на 90 градусов
и наоборот при наборе высоты с ускорением 9G ускорение в плоскости земли будет двойным от ожидаемеого от косинуса ролпитч

SergDoc

Мы сейчас обсуждаем влияние гравитации Юпитера на экономику Зимбабве )))
всё управление надо брать от угловой скорости, вот ты в машине едешь - на газ жмёшь чтобы скорость увеличить? или у тебя прямая связь гашетки с расстоянием? нормально так надо 200 км проехать - значит полгаза, 400 - тапку в пол? ты же не забывай, что мы меряем изменения и пытаемся их “исправить”

alexeykozin:

будет нулевым в ситуации когда аппарат имеет нулевую тягу моторов но по ролу к примеру завален хоть на 90 градусов и наоборот при наборе высоты с ускорением 9G ускорение в плоскости земли будет двойным от ожидаемеого от косинуса ролпитч

сам смотри - при завале (мы имеем ввиду момент завала а не проспали его) угловая скорость будет дай бог, а если ты несёшься на 160 тонном х…абазе с ускорением 9G в плоскости планеты - то это магия и аксель у тебя будет показывать явную хрень - но при отсутствии угловой скорости, алгоритм будет править это несоответствие и ты не воткнёшься в планету…

alexeykozin
SergDoc:

сам смотри - при завале (мы имеем ввиду момент завала а не проспали его)

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

SergDoc
alexeykozin:

примере два крайних случая, в промежутке между которыми существует общее правило

с кучей поправочных коэффициентов, только что зависимость линейна, а по этому цветной шум мы не отследим (
и не забывай, что подтяг к акселю будет всегда, только больше или меньше, но не = 0

alexeykozin

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

SergDoc
alexeykozin:

жидкость всегда в горизонте относительно краев

немного не так - “в горизонте” не по понятиям ))) в плоскости краёв - тут как раз действует центростремительное ускорение, не дающее возможность жидкости держаться в горизонте…

alexeykozin
SergDoc:

в плоскости краёв - тут как раз действует центростремительное ускорение, не дающее возможность жидкости держаться в горизонте…

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

можно даже так выразить.
если коптер в полете, газ в пределах троттл мин - троттл макс и сочетается с величиной вертикального ускорения (для ховера 1G а уск 9,8)
то можно принять аксель вертикального ускорения помноженный на синус кренпитча как тягу моторов для упрощенного расчета.
в идеале можно еще и сопоставлять с потребляемым током чтобы избежать непоняток в настольных тестах без подачи напряжения на регуляторы моторов

SergDoc

Ну так всё правильно - нет угловых скоростей меньше доверие акселю, но он доплывёт, больше угловая скорость - больше доверие акселю, но ты же не забывай, что самое большое доверие это в пределе 0.02… дабы сгладить/убрать ошибку ДУС…
я же формулу в общих чертах нарисовал, конечно нужны коэффициенты и пределы - которые надо подбирать имперически, иии… да здравствует мля EKF… с двумя наборами коэффициентов: собственный шум датчиков и собственный шум алгоритма 😦

alexeykozin

угловые скорости сильно шумная величина особенно если есть вибрации
к тому же при полетах в тербулетность может так статься что небудет времени когда угловая скорость находится в области нулевых величин чтобы успеть подтянуть горизонт

SergDoc
alexeykozin:

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

не на столько шумные как ускорения

alexeykozin:

особенно если есть вибрации

да магия всё это, никто никуда не летит )))
ну сам подумай ты сейчас летаешь на комплиментарнике
угол=угол предыдущий +угловая скорость*дт
угол=угол*0.98+угол с акселя*0.02
и это догма, из-за которой, ты не в состоянии правильно отследить ускорения вдоль осей и построить приличную инерциалку потому, что для расчёта ты берёшь кривой угол с завалом которого нет!

alexeykozin
SergDoc:

да магия всё это, никто никуда не летит )))

я тут давеча трое суток потерял на одной очень тупой вещи.
в с++ ATAN2(y,x)
в vb, excel где я делал контроль ATAN2(x,y)

SergDoc

А это все потому, что ты ворочаешь не вокруг своей оси, а относительно левого верхнего угла экрана)))

rual
SergDoc:

если ты несёшься на 160 тонном х…абазе с ускорением 9G в плоскости планеты - то это магия и аксель у тебя будет показывать явную хрень - но при отсутствии угловой скорости, алгоритм будет править это несоответствие и ты не воткнёшься в планету…

Тут кабэ всё просто: если несёшься с ускорением 9G, то аксель покажет тебе направление вниз длинной 8G, оч. плохо когда -1g (свободное падение) и аксель кажет НУЛЬ. Вот НУЛЬ как не верти, понятней не станет )) Щас как раз виртуальную ракету гоняю.

alexeykozin:

угловые скорости сильно шумная величина особенно если есть вибрации

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

SergDoc
rual:

Тут кабэ всё просто: если несёшься с ускорением 9G, то аксель покажет тебе направление вниз длинной 8G, оч. плохо когда -1g (свободное падение) и аксель кажет НУЛЬ. Вот НУЛЬ как не верти, понятней не станет )) Щас как раз виртуальную ракету гоняю.

мы тут издевались над DCM алгоритмом и вот что получилось:
таскаю по столу вперёд - назад, влево - вправо
соответственно по тангажу и крену горизонт уходит - правый верхний экран:

rual
SergDoc:

мы тут издевались над DCM алгоритмом и вот что получилось:

не могу посмотреть

У Вас нет прав для просмотра этой страницы или для выполнения этого действия.

Хотя зарегистрировался(

SergDoc

мля сейчас:
мелкая
но тут ерунда ±1 градус, у Алексея на арду до 10 градусов уплывает…

rual

Мда… видимо вес акселя большой. И дус по Z тоже скачет

SergDoc
rual:

И дус по Z тоже скачет

я же всю трёху тягал по столу - не удивительно)))

oleg70
SergDoc:

да магия всё это,

Я так размышляю (абстрагируясь от формул) по этой проблеме: по факту имеем два типа исходных данных

  1. угловая скорость(гира)
  2. смесь линейного и гравитационного ускорений (аксель)
    Задача - отделить у акселя одно от другого.
    Математика должна быть такова, чтоб в “отделяющем алгоритме” данные акселя (“разделяемое”) присутствовали только как аргумент , но никак не попадали в цепь обратной связи прямо или косвенно…
    Иначе получим эффект “мюнхаузена” или иными словами “замкнутый круг” и далее тупик…
    Достаточно ли для решения проблемы данных с гиры - вопрос открытый… , если нет то напрашивается “третья сила”…
rual
oleg70:

никак не попадали в цепь обратной связи прямо или косвенно…
Иначе получим эффект “мюнхаузена” или иными словами “замкнутый круг” и далее тупик

Это неправильно, а последнее неправда, читаем про “взрослые” системы (см.стр.8)

oleg70
rual:

Это неправильно, а последнее неправда, читаем про “взрослые” системы (см.стр.8)

Посмотрел… речь в документе (как я понял, опять же) идёт о калибровке гировертикали по гидроуровню (роль которого в нашем случае исполняет акселерометр)… НО речь идет о статической калибровке , т.е. сама платформа в процессе калибровки находится в состоянии покоя и линейно не перемещается. Да, “взрослые системы” на самолете так и работают, сначала на земле раскручивают гироскопы, затем их один раз калибруют и потом уже взлетают…
Так что “это неправильно” пока правильно…