Создание собственной системы стабилизации
Даже сравнить не с чем, вся моя работа с FreeRTOS -это несколько задач и прием и передача семафоров. Мьютексов, таймеров, динамической памяти я не юзал. По надежности ну у меня иногда зависало, но это 99 процентов мои косяки. По началу были глюки, но потом разобрался, что нужно следить за стеком задач, объемом кучи и тд. Эта РТОС достаточно популярна, так что любые баги выявляются быстро, я б сказал что надежна. Ставится легко. Но из всей работы фриртос была одной из самых простых во многом благодаря Курницу. Задержки прерываний есть, но я не замерял. Не представляю задачи, где будут ощутимы на работе задержки ядра РТОС. При том, что в моем проекте ядро имеет наибольший приоритет среди прерываний.
У меня тут идея возникла. Что можно полностью отказаться от магнитометра и акселерометра в перспективе (для коррекции горизонта). Вот если посудить что магнитометр, что акселерометр всего лишь вносят небольшую коррекцию в угловую скорость ДУСа, а по факту вносят еще и шумы и ошибку, связанную с неравномерным магнитным полем, магнитными полями от тока в случае магнитометра, линейные ускорения в случае акселерометра. Так вот если так посудить, то коррекцию угловой скорости ДУСа может выполнять любой другой АБСОЛЮТНЫЙ датчик ориентации. Идея такая - есть ЖПС датчик на борту, есть ЖПС датчик у оператора, по радиоканалу на борт передаются координаты оператора. В мозге аппарата есть свои координаты и координаты оператора, соответственно можно построить ТРЕХМЕРНЫЙ вектор, который как раз и будет служить корректирующим для скорости гир. Если применить технологию RTK для ЖПС то можно еще и отказаться от акселерометра. Может я ошибаюсь где то, как вам идейка?
Может я ошибаюсь где то, как вам идейка?
без акселя и компаса мне как-то плохо представляется переход из локальных координат к глобальным, если при движении ешё можно отказаться от компаса то в висении он нужен… а акселерометр по-моему ничему не мешает особенно при использовании либо отдельных датчиков, либо как в тех же 6500 - 9250 настраиваются они отдельно, и если с ДУС-ов мы може мзять те же 8 килогерц то аксель можно “зажать” по самое небалуйся…
и вообще у меня создаётся впечатление, что траблы с компасом преследуют только арду, хотя например в либрепилоте и таулабсе калибровка компаса вообще никакая… если кто не в курсе я добавил (сделал HAL и попросил добавить) F4BY в betaflight - выйдет в 3.0 релизе, так вот там компас намного лучще работает, и это без всяких страшных слов типа EKF… и ешё пытал betaflight чисто на 9250 без компаса и барометра - довольно приятно управляется и высоту “держит” без барометра… конечно не держит, но не дёргается как арду в стабе - вечно стиком дёргай…
Может я ошибаюсь где то, как вам идейка?
GPS это датчик не ориентации, а положения. Вне зависимости от положения и угловых скоростей коптера координаты коптера и оператора не поменяются, если коптер не меняет положения.
Плюс к тому, как быть, если GPS “потерялся” или врет?
Компас, при правильном его использовании довольно точный инструмент, про аксель я вообще молчу. Кстати, аксель - критически важная штука не только для ориентации, но и для ИНС.
Вы меня не поняли, магнитометр очень капризная штука, неровное его расположение будет давать перекосы в ориентации при наклонах аппарата, влияние наводок от токов тоже вносит лепту, к тому же чем сложнее система тем меньше надежность… У меня до сих пор затыки с компасом, хотя он на ножке стоит.
Акселерометр в ИНС я не собирался выкидывать, я же написал, что только для коррекции горизонта, я его не хочу использовать. Я же не пустыми словами кидаюсь, я сам все это прощупал…
У меня стоит датчик MPU6500 у него отдельные фильтры на гиру и на аксель… Хоть сколько аксель не зажимай - от линейных ускорений не избавиться, которые будут вносить ошибку в ориентацию.
GPS это датчик не ориентации, а положения
Вот прочтите еще раз. Две пары координат а значит есть вектор.
Идея такая - есть ЖПС датчик на борту, есть ЖПС датчик у оператора, по радиоканалу на борт передаются координаты оператора. В мозге аппарата есть свои координаты и координаты оператора, соответственно можно построить ТРЕХМЕРНЫЙ вектор, который как раз и будет служить корректирующим для скорости гир
Вектор - а значит есть направление. значит есть ориентация, причем АБСОЛЮТНЫЙ датчик.
Плюс к тому, как быть, если GPS “потерялся” или врет?
Если правильно его использовать то он не врет. У меня удержание высоты кстати только по ЖПС, без барометра. Почитайте про RTK, и вопрос о потере и вранье отпадет.
Напомню как работают большинство фильтров ориентации: берется реальный вектор (ускорения свободного падения, магнитного поля Земли или любой другой) с абсолютного датчика и сравнивается с виртуальным вектором, то есть продуктом этого фильтра, далее в зависимости от строения фильтра, рассмотрим фильтр Махони эта разность векторов поступает в ПИ регулятор, а его выход в скорости с ДУСа, после чего инегрируется до положения, потом снова выделяется интересующий нас виртуальный вектор и тд и тп.
Так вот абсолютный вектор с пары ЖПС датчиков у нас есть. А виртуальный строится чисто геометрически исходя из проинтегрированных скоростей с ДУСов и положения коптера. Примерно понятно?
Но тут я не до конца представляю все это у себя в голове, вот и спрашиваю.
обращаю еще раз внимание на то что, в расчет идет не просто координаты аппарата, а координаты оператора, то есть уже вектор.
Вот прочтите еще раз. Две пары координат а значит есть вектор.
Вектор-то есть, но толку от него… Вот представьте себе, у дома координаты, допустим (0;0;0), у коптера (10;10;5). Как повернут коптер? Как он наклонен? Я знаю где он находится относительно дома, но я ничего не знаю об ориентации самого коптера в пространстве, потому что независимо от углов крена GPS позиция оператора и коптера будет та же самая.
Фокус с магнитным полем и гравитацией в том, что направление этого вектора в система координат ЛА зависит от ориентации ЛА в пространстве. В случае с GPS ЛА и GPS дома, направление вектора от ориентации ЛА в пространстве никак не зависит.
Вы меня не поняли, магнитометр очень капризная штука, неровное его расположение будет давать перекосы в ориентации при наклонах аппарата, влияние наводок от токов тоже вносит лепту, к тому же чем сложнее система тем меньше надежность… У меня до сих пор затыки с компасом, хотя он на ножке стоит.
Правильная коррекция нуля и проблем нет. Как его на ножку не выноси, если ноль скорректирован неверно, компас будет врать. Плюс ко всему, магнитный вектор с магнетометра надо развернуть в плоскость земли - если этого не делать, направление будет плавать.
У меня стоит датчик MPU6500 у него отдельные фильтры на гиру и на аксель… Хоть сколько аксель не зажимай - от линейных ускорений не избавиться, которые будут вносить ошибку в ориентацию.
Правильная калибровка (нуля и масштаба) и фильтровать все что значительно отличается от 1G.
Если правильно его использовать то он не врет.
GPS врет по определению на несколько метров. Плюс позиция плавает на те же несколько метров. Плюс иногда GPS отключают для обслуживания над некоторыми областями.
Вектор-то есть, но толку от него… Вот представьте себе, у дома координаты, допустим (0;0;0), у коптера (10;10;5). Как повернут коптер? Как он наклонен? Я знаю где он находится относительно дома, но я ничего не знаю об ориентации самого коптера в пространстве, потому что независимо от углов крена GPS позиция оператора и коптера будет та же самая.
Фокус с магнитным полем и гравитацией в том, что направление этого вектора в система координат ЛА зависит от ориентации ЛА в пространстве. В случае с GPS ЛА и GPS дома, направление вектора от ориентации ЛА в пространстве никак не зависит.
Вот это золотые слова вот в этом есть доля правды, Но тут есть небольшой момент. Тут просто вектора немного отличаются в том плане, что аксели и магнитометры используются в локальной СК, то есть как вы и говорите от ориентации ЛА будет меняться вектор. А с ЖПС немного другая ситуация, нам нужно менять виртуальный вектор ЖПС направления таким образом, чтобы он не менялся в зависимости от ориентации аппарата, то есть рассматриваем его уже в глобальной СК, ну типа обратная задача.
Про калибровки акеселерометра и магнитометра я естественно знаю, более того у меня 9 коэффициентов на каждый датчик.
Акселерометр никаким образом не сможет отделить ускорение свободного падения (которое используется в корректировке ориентации) от линейных ускорений, как не фильтруй, как не калибруй.
Про ЖПС это вы конечно правы, но несколько метров ошибки изменят мой вектор направления на доли градуса, что не внесет большой ошибки. Но тут опять же для повышения точности можно усовершенствовать до системы RTK.
Тут еще другой вопрос - почему никто такое не придумал, или я просто не видел, может в реале я туплю, на самом деле это нереально.
А с ЖПС немного другая ситуация, нам нужно менять виртуальный вектор ЖПС направления таким образом, чтобы он не менялся в зависимости от ориентации аппарата, то есть рассматриваем его уже в глобальной СК, ну типа обратная задача.
Векторы акселя и компаса существуют и в локальной и в глобальной системе координат, а вектор направления на дом - только в глобальной системе координат, от не зависит от ориентации ЛА в пространстве, только от его местоположения. Так что при всем желании его не получится использовать для коррекции ориентации.
Акселерометр никаким образом не сможет отделить ускорение свободного падения (которое используется в корректировке ориентации) от линейных ускорений, как не фильтруй, как не калибруй.
Не может, поэтому и говорю, использовать только тот вектор ускорения, который более-менее похож на “чистую” гравитацию (|a| ~= 1G)
Да может вы и правы, я еще подумаю, и расскажу
Да может вы и правы, я еще подумаю, и расскажу
Вообще, использовать еще и GPS для расчета ориентации было бы круто. Будет интересно, если я не прав.
Все правильно вы сказали, я не прав, не хватает еще одной вещи, надо иметь какой то датчик, который реагирует, когда поворачивается в сторону оператора, тогда можно реализовать мою систему. А этот датчик - это уже отдельный геммор, лучше уж оставить магнитометр.
надо иметь какой то датчик, который реагирует, когда поворачивается в сторону оператора
радиокомпас с узко направленной антенной)))
как по вашему самолёты во вторую мировую пролетали пол континента и не сбивались с курса без GPS?
Во во, что то подобное
имея 3 антенны разнесенные по краям борта можно вычислить не только координаты но и положение в пространстве по сигналам со спутников … но … борт должен быть достаточно большим (чем дальше разнесены антенны тем точнее ) … при достаточно больших габаритах можно воспользоваться геодезическими высокоточными модулями , но их цена оставляет желать лучшего …
в идеале обрабатывать сигнал со всех антенн одним модулем , тогда точность будет выше (можно будет мерять задержки/фазовый сдвиг сигнала между антеннами)… только существует ли такой модуль …
Вы меня не поняли, магнитометр очень капризная штука, неровное его расположение будет давать перекосы в ориентации при наклонах аппарата
Да, это факт … , любые т.н. “MARG алгоритмы” этим страдают, поэтому подмешивать компас в общую кучу с горизонтом - плохая затея, не смотря на всю красивость алгоритмов типа Магвика и Махони…
Вот посмотри: (щас кстати пытаюсь реализовать у себя) www.ncbi.nlm.nih.gov/pmc/articles/PMC4570372/
- товарищи хитрым способом сделали (?) курс по магнитометру+аксель отдельно от всего остального и кажется довольно не плохо…
казалось бы как один человек мог столько успеть?!
хитрым способом сделали (?) курс по магнитометру+аксель отдельно от всего остального и кажется довольно не плохо
Ну это было на заре развития, сейчас я уверен, что все полетники магнитометр только для курса используют. Но даже если только курс подвержен наводкам магнитного поля - все равно это остается проблемой. Интересно, как удалось решить эту проблему ребятам из X-sense. В их сенсорах есть режим AHS - Active Heading Stabilization, где они заявляют крайне низкие ошибки по курсу даже в условиях сильных магнитных помех. Если кто тестировал его, интересно услышать так ли это на самом деле.
казалось бы как один человек мог столько успеть?!
РИП. Человек занимался Делом. А большинство из нас постоянно находятся в беличьем колесе житейских проблем…
любые т.н. “MARG алгоритмы” этим страдают, поэтому подмешивать компас в общую кучу с горизонтом - плохая затея, не смотря на всю красивость алгоритмов типа Магвика и Махони…
Я беру только проекцию мага на на мнимый горизонт, поэтому компас влияет только на курсовую ориентацию. Однако в моих широтах даже небольшой завал горизонта существенно отклоняет курс (
Интересно, как удалось решить эту проблему ребятам из X-sense. В их сенсорах есть режим AHS - Active Heading Stabilization, где они заявляют крайне низкие ошибки по курсу даже в условиях сильных магнитных помех.
Действительно интересно, особенное если без внешней коррекции (только как?!).
И на каких датчиках?
Если кто тестировал его, интересно услышать так ли это на самом деле.
Да, крайне интересно.
Да, это факт … , любые т.н. “MARG алгоритмы” этим страдают, поэтому подмешивать компас в общую кучу с горизонтом - плохая затея, не смотря на всю красивость алгоритмов типа Магвика и Махони…
У меня сделано просто - вектор магнитного поля (в системе отсчета ЛА) вращается в систему отсчета “Земля”, от него отбрасывается Z, вращается обратно в систему ЛА и скармливается MARG. На самом деле более оптимально, но смысл тот же. Так компас а) скомпенсирован по крену (наклоны ЛА не влияют на курс), б) не влияет на горизонт.
вектор магнитного поля (в системе отсчета ЛА) вращается в систему отсчета “Земля”, от него отбрасывается Z, вращается обратно в систему ЛА
Точно так.
В их сенсорах есть режим AHS - Active Heading Stabilization, где они заявляют крайне низкие ошибки по курсу даже в условиях сильных магнитных помех. Если кто тестировал его, интересно услышать так ли это на самом деле.
По мануалу они используют фильтр Калмана. Я предполагаю, что в матрицу шумов измерений магнитометра идет разница между константным вектором магнитного поля Земли для данной местности + офсеты (калиброванным) и полученными измерениями. То есть по-простому, если вектор отличается от нормального, то есть какие то наводки, значит измерения сильно зашумлены, им не доверяем.
UPD.
4.4 Active Heading Stabilization (AHS)
One powerful feature when it comes to heading estimation is Active Heading stabilization (AHS). AHS
uses the magnetometers to estimate the gyro bias, but it does not reference the heading. This way,
drift in heading can be as low as 1 deg after 60 minutes for the MTi 100-series and 3 deg after 60
minutes for the MTi 10-series. When the magnetic field is disturbed, AHS will still function. The
frequency though of the updates of the gyro bias will be lower, as AHS is triggered only when the
magnetic field is stable.
There is one known situation where AHS will have a detrimental effect on the performance. When the
magnetic field is changing very slowly (e.g. when an object is rotating slowly, less than e.g. 0.5 deg/s),
AHS might estimate the gyro bias incorrectly.
When AHS is applied to a filter profile that uses the magnetic field as a reference, the magnetic field
will no longer be used as a reference. Heading output will be heading tracking instead of referenced
heading.
Собсно, кратко они пишут, что при резких изменениях магнитного поля, частота оценки биаса гиры по Z становится меньше. При этом если скорость изменения магнитного поля низкая, то AHS будет работать некорректно, и соответсвенно курс будет неверен.