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

oleg70
SergDoc:

неа… ещё раз - чё писал в алгоритме:

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

rual
oleg70:

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

Коррекция горизонта присутствует постоянно, иначе самоль пролетев 3-4 часа от приполярных районов на юг к экватору будет иметь +60-70 градусов по тангажу. К сожалению не могу найти скан древней книги по классификации гировертикалей и приборов ориентации. Дык там написано, что БЕЗ коррекции работают только системы ориентации в “коротко, но ярко живущих” устройствах типа авиабомб и ракет ВВ и ВП (не крылатых, не баллистических).

oleg70:

“как разделить ускорения ?”…

Я писал обобщенный алгоритм, мат.реализация немного отличается, но логику вроде верно описал. И вообще постоянная времени коррекции должна быть достаточно большой, в профсистемах она больше “периода Шулера” (>5600 сек)

SergDoc
oleg70:

Конечно, нельзя отключать (если только не лететь “на ручках”, и то не факт что кульбит получится…)

вот старое моё кино без акселя

ничё так…

oleg70
rual:

Коррекция горизонта присутствует постоянно

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

SergDoc:

ничё так…

В данном случае роль “абсолютного датчика положения” исполняет (и довольно неплохо 😃)сам пилот НЛО…

alexmos
oleg70:

Задача - отделить у акселя одно от другого.

В системе из акселя и гироскопа без доп. сенсоров, и в общем случае использования их в полетниках - ИМХО невозможно. Гироскоп нужно корректировать всегда, и даже если коррекция будет с плавающим весом, угадать когда понижать вес, гарантированно точно нельзя. У меня в контроллере подвеса максимум, что я придумал - фильтровать ориентацию по акселю НЧ-фильтром с большим периодом отсечки, к примеру 10 сек, чтобы хотя бы резкие движения не отлконяли горизонт. Но в случае полетника ускорения могут быть продолжительные, тут НЧ-фильтр не сильно поможет.

Но вообще непонятно, почему такой вопрос стоит - у полетников есть же GPS, он отлично помогает с определением, какие ускорения линеные, а какие - сила тяжести.

oleg70
alexmos:

без доп. сенсоров,

Была у меня идея: а вот магнитометр находится внутри статического магнитного поля и “своими осями” в принципе может за него неплохо цепляться, нельзя ли математически с ним поработать и “подсунуть” его к гироскопу ??
Или я чё туплю ??

alexmos
oleg70:

Была у меня идея: а вот магнитометр находится внутри статического магнитного поля и “своими осями” в принципе может за него неплохо цепляться, нельзя ли математически с ним поработать и “подсунуть” его к гироскопу ?? Или я чё туплю ??

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

rual
oleg70:

Была у меня идея: а вот магнитометр находится внутри статического магнитного поля и “своими осями” в принципе может за него неплохо цепляться, нельзя ли математически с ним поработать и “подсунуть” его к гироскопу ??

Дело в том, что нужны 2 и более НЕКОЛЛИНЕАРНЫХ вектора, идеальный вариант был бы если бы вектор магнитометра совпадал с осью Х, а аксль с осью Z. Алексей прав, в наших широтах 60% магнитуды компаса висит в вертикали, оставшиеся 30% сильно уводит местными наводками.

alexeykozin

увы если закрыть глаза то ничем для нас вектор гравитации не отличается от вектора гравитации + горизонтальное ускорение, единственное на что можно полагаться - точный гироскоп.
по компасу недавно Тимур изучал характер магнитых полей в своем городе при помощи нескольких туричтических компасов.
сначала возникло мнение что компас “гуано” когда был куплен второй дорогой - оказалось с копасаом все ок. просто в некоторых местах вектор магнитного поля идет вертикально из земли. Их город в прошлом был славен добычей руды и производством никеля

SergDoc

ADXRS 😦
Плюс, нужен хороший математик, а то я вот нутром чую, что 0.5+0.5=литр, а математически обосновать не могу…

oleg70
alexeykozin:

вектор магнитного поля идет вертикально из земли

Единственное что остаётся поковырять (мысли): брать за основу не абсолютное направление магнитного вектора, а его динамическое изменение отслеживать… т.е. “дельта поворота аппарата в магнитном поле” и потом как нибуть прифильтровывать (?) к акселерометру… может так удастся отделить гравитацию от ускорения…

alexmos
oleg70:

т.е. “дельта поворота аппарата в магнитном поле” и потом как нибуть прифильтровывать (?) к акселерометру

Так проблема в том, что магнетометр сильно врет и без поворотов, и причину нельзя узнать. Пример: коптер летит прямолинейно равномерно, для IMU- полная статика. И тут компас показывает, что его угол начинает медленно отклоняться от угла гироскопа и акселерометра. Как это отделить от события “появились линейные ускорения” или от “гироскоп начал уплывать”, и кому доверять больше?

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

oleg70
alexmos:

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

Я имел ввиду: брать разницу показаний текущего магнитного вектора и предыдущего за определенный период, получится, как бы, мгновенный признак (производная угла) изменения угловой ориентации в пространстве…
Потом из акселя также взять такую же производную, и вычесть одно из другого… по идее, в остатке будет именно производная линейного ускорение акселя, которую можно использовать…
(может это бред конечно, но пока похоже на правду 😃)

SergDoc
alexmos:

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

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

oleg70:

производная линейного ускорение акселя

стесняюсь спросить, а что есть производная угла и производная ускорения, ну производная угла - угловая скорость, а ускорения?

alexeykozin
alexmos:

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

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

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

отсюда мистика.
если вы откалибровали аксель в полнолуние … ))))

oleg70
SergDoc:

а ускорения?

😃 у меня получилось - “ускорение в степени 2”, почти как “интеграция интеграций” (простой вопрос, а ставит в тупик…)

SergDoc
oleg70:

почти как “интеграция интеграций”

дифференцирование - обратный процесс…
мысль то я понял, угол там и угол там - получаем угловые скорости, только шумный алгоритм, при условии, что угловые скорости и так известны…
тогда уж лучще угол акселя “доворачивать” до угла компаса и сравнивать…

alexeykozin
SergDoc:

тогда уж лучще угол акселя “доворачивать” до угла компаса и сравнивать…

о!
как раз моделирую в аксессе -экселе на полетных логах вычисление расхождения компаса и акселя
VxpY это интегратор ошибки velocity_X_positive to Y accel

R!gpsspdx = R!spd * Cos(R!gcrs / 180 * PI) жпс скорость по икс (на север)
R!gpsspdy = R!spd * Sin(R!gcrs / 180 * PI) жпс скорость по игрек (на восток)
Dim LAT As Double, ILAT As Double
LAT = R!LAT * LatLonScale нормализация масштаба широты к долготе
ILAT = R!la * LatLonScale в логе сделал параметр широта по инерциалке
If R!gpsspdx > 0 Then интегрирую влияние положительной скорости по икс на ошибку по иксу и игреку
R!VXPY = R!Lng - R!LN 'gps - inav lon влияние положительной скорости по икс на игрек аксель возможно имеет смысл множить на абс от скорости
R!vxpx = LAT - ILAT положительная скорость по икс на икс аксель (чтобы расчитать множитель акселя - gain и скомпенсировать ошибку калибровки)
Else
R!VXNY = R!Lng - R!LN 'gps - inav lon влияние отрицательной скорости по иксу (на юг) на игрек аксель
R!vxNx = LAT - ILAT
End If

If R!gpsspdy > 0 Then аналогично влияние скорости на восток на аксели
R!VyPY = R!Lng - R!LN 'gps - inav lon
R!vypx = LAT - ILAT
Else
R!VyNY = R!Lng - R!LN 'gps - inav lon
R!vyNx = LAT - ILAT
End If

в результате
нужен ли доворот компаса по часовой стрелке =(-vxpy+vxny+vypx-vynx > 0)
в этом случае в медленном цикле добавляем переменную на полградуса в секунду, впоследствии ее передаем в модуль компаса где прибавляем вместе с деклинейшеном преобразовав в радианы

oleg70
SergDoc:

тогда уж лучще угол акселя “доворачивать” до угла компаса

Вообще то даже и не думал, пока, как и что можно сделать, просто в голове давно крутилась мыслишка (где то в подсознании)) , я б сказал - пока что это концепт… и не факт что стОящий…
Щас сижу вот копаюсь с RPi, пытаюсь найти ему применение… пока что особо ничего в его “применимости” не радует… , правда нашёл способ выводить картинку OSD поверх видео (оказавается можно),
ещё вот покопаюсь и брошу наверно, займусь делом…

rual
alexeykozin:

как раз моделирую в аксессе -экселе

Это очень интересно, Алексей, читаю вашу с Тимуром ветку на апмкоптере, но никак не пойму, откуда берете данные инерциалки?

Ещё вопрос к знатокам ТауЛабс (Серега SergDoc, вроде ты картинки показывал?), как выдать телеметрию во флексипорт? По USB всё работает нормально, в настройках платы выбираю FlexyPort->Telemetry, сохраняю, но не работает зараза((( Хотел три платки на карусельке покатать )))

alexeykozin
rual:

Это очень интересно, Алексей, читаю вашу с Тимуром ветку на апмкоптере, но никак не пойму, откуда берете данные инерциалки?

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