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

rual
Musgravehill:

После этого играл с fusion алгоритмом в MPU6050. Чип выдает готовые кватернионы ДУС + акселерометр. Магнитометр никак не подключается в алгоритм. Причем, магнитометр запаян байпасом через MPU6050.

Вот это интересно, SergDoc тут ссылку давал на код с двоичными массивами для МПУ6050. Эт я так понимаю микрокод для МПУ?
Где хотя бы обобщенное описание по русски? Сам код, как грузить в МПУ, как забрать данные?

Musgravehill
rual:

Где хотя бы обобщенное описание по русски? Сам код, как грузить в МПУ, как забрать данные?

По-русски не видел. По-английски и то мало описания.
Качаете у Varesano внизу библиотеку www.varesano.net/projects/hardware/FreeIMU, находите в архиве MPU60X0_6AXIS_MOTIONAPPS20 - там массивы для закачки в MPU и куцый текст.

varesano.net/…/initial-tests-freeimu-v04-and-mpu60… - опыты.

www.i2cdevlib.com/devices/mpu6050 - как перехватывали инициализацию MPU6050 с оригинальной devboard.

mahowik

Что все так ухватились за embedded DMP mpu6050?! Ну разгрузится проц чутка, что еще актуально для AVR-ок и уже совсем не важно для stm32 или ARM.
Если интерсно, то по ссылке ниже доволно креативный фриЦ Sebbi, сейчас теребит Invensense developer support на предмет документации…
www.multiwii.com/forum/viewtopic.php?f=8&t=2642&st…

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

  • компас довольно сильно шумит
  • ГПС не всегда в коннекте и т.д.
  • коптер должен быть из дерева не исключая моторы 😃
Musgravehill
mahowik:

теребит Invensense developer support на предмет документации…

“total vaporware” (с) Crashpilot1000 😆

9DOF DMP существует только в воображении. Зато продажи датчика идут в реальности. В уголке разработчика зарегистрирован, но скачать ничего не могу - статус обычного пользователя не позволяет.

rual
mahowik:

Что все так ухватились за embedded DMP mpu6050?! Ну разгрузится проц чутка, что еще актуально для AVR-ок и уже совсем не важно для stm32 или ARM.

Да не то чтоб ухватился, просто хотелось пощупать и сравнить. Самое главное разгрузится не только проц, но и шина (особо важно для и и2ц).

mahowik:

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

  1. Полностью определить положение по ОДНОМУ вектору нельзя! И дело здесь не в качестве и производителе датчика, известная мне математика не позволяет ОДНОЗНАЧНО определить положение тела в 3х мерном пространстве ОДНИМ 3х мерным вектором, так как тело остается свободным в плоскости нормальной вектору. Кватеринионы позволяют полностью оперделить, но содержат 4 параметра.
  2. За всех не скажу, но у меня компас 5883 практически не шумит.
  3. ГПС - согласен, но в нашем случае постояное обновление склонения не особо нужно, не на тысячи км летаем.
  4. Не думаю, что рама и прочие элемены, правильно расположенные, смогут сильно ( до невозмжности практического применения) исказить показания мага.
HikeR

в обратном порядке 😉

  1. аппараты из чугуния и прочих магнитных материалов действительно давно не в ходу, композиты на компасы не влияют. силовые провода равномерно скрученные и симметрично уложенные вобще могут самокомпенсировать наводимые ими помехи
  2. GPS нужен один раз при старте, да и то можно обойтись захардкоденой переменной (наклонение в текущей местности)
  3. и наконец, у нас есть ДВА вектора, по которым положение определяется однозначно:
  • включение, поиск максимальной компоненты компаса, поворот её на наклонение — получаем “низ”
  • выделяем горизонтальные компоненты — получаем “север” (магнитный, географический нам ни к чему)
  • векторное произведение дает третью ось
  • профит

и да, кватернион не вектор, а комбинация вращений, ну или более компактная форма матрицы вращения.

SergDoc
HikeR:

поворот её на наклонение — получаем “низ”

а в какую сторону поворот?

DVE
HikeR:

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

И иметь глюк вплоть до краша при пролете над любой железной трубой? А главное нафиг, ради 3$ экономии на гироскопе?

Думается, если б можно было создать сверхдешевый контроллер на одном только компасе, китайцы бы давно их клонировали и продавали по 10$/шт.
Впрочем, если большое желание почему бы не попробовать, в любом контроллере компас есть 😃 Теоретически, может оно даже кое как и полетит…

HikeR:

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

Фильтр Калмана вроде может, в подробности правда не вдавался.

SergDoc
DVE:

Фильтр Калмана вроде может, в подробности правда не вдавался.

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

HikeR
SergDoc:

а в какую сторону поворот?

в правую, конечно же ;)

а если серьезно, то у нас есть:

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

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

DVE:

при пролете над любой железной трубой

ничего не случится, не делают у нас трубы из магнитотвердых материалов ;)

mahowik
rual:
  1. За всех не скажу, но у меня компас 5883 практически не шумит.

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

DVE:

может оно даже кое как и полетит…

уверен что не полетит 😃, либо если и удастся подняться, то с оч. малыми пидами и будет болтать как гг в проруби при малейшем возмущении… В частности с малым П, т.к. Д будет никакой, по причине описанной выше, где при увеличении П будет расколбас…

DVE

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

Коптер летающий только на компасе я бы запускать побоялся 😃

mahowik
HikeR:

ничего не случится, не делают у нас трубы из магнитотвердых материалов 😉

летаю иногда по вечерам на стоянке около супермаркета… пару раз грубо падал на асфальт (примерно в одной и той же зоне) из-за глюков по компасу… рядом обычная не высоковольтная линия передач и в метрах 10-20 вышка сотовой связи… за пару сек. до крашей резко проворачивало на 90-180 град по yaw… FS небыло… так и не понял в чем дело, одни подозрения…

HikeR
mahowik:

достаточно шумный, что бы посчитать дифФ. угла, т.е. угловую скорость

а зачем вам будет нужна угловая скорость?

mahowik:

рядом обычная не высоковольтная линия передач и в метрах 10-20 вышка сотовой связи

казалось бы, при чем тут компас…

DVE
mahowik:

так и не понял в чем дело, одни подозрения…

А в Ардукоптере (оригинальном) кстати полетный лог во флеш пишется… 😃 Реально полезная штука при всяких разборах полетов.

Не помню точно, но компас там вроде тоже в списке данных лога есть.

mahowik
DVE:

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

дада так и есть… гира спасает… фактор в 400-500 и вперед!

/* Set the Gyro Weight for Gyro/Magnetometer complementary filter */
/* Increasing this value would reduce and delay Magnetometer influence on the output of the filter*/
#define GYR_CMPFM_FACTOR 400.0f
HikeR:

а зачем вам будет нужна угловая скорость?

а без нее стабилизации в конечном ПИД контроллере не получите…

HikeR:

казалось бы, при чем тут компас…

я в физике полей не силен 😃, но что то мне подсказывает что там силовое поле нехилое…

HikeR
mahowik:

там силовое поле нехилое…

магнитное поле прямо пропорционально силе тока. напомните, какой там ток в этих киловольтовых линиях?

mahowik:

а без нее стабилизации в конечном ПИД контроллере не получите…

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

mahowik
HikeR:

магнитное поле прямо пропорционально силе тока. напомните, какой там ток в этих киловольтовых линиях?

тут спор прекращаю, т.к. небыло “черного ящика” с логами… бессмысленно спорить…

HikeR:

нет акселя — уже не нужен гироскоп для его коррекции

HikeR:

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

все не так 😉

  1. аксель как правило для корректировки дрейфа гиры, а не наоборот как вы пишете, т.к. аксель чтука шумная, тормозная и капризная, НО всегда знает где земля… потому аксель давится НЧ фильтром и меееееееедленно корректурует гиру, через компл. фильтр к примеру…
  2. ПИД регуляторы к ИМУ непосредственно никакого отношения не имеют… на выходе ИМУ должна быть величина (по которой осуществляется стабилизация системы), которая скармливается на вход ПИД регулю… в акро моде - это угловая скорость, в стаб/горизонт моде - это как правило комплекс ПИ-ПД регулятор, где для ПИ на вход угол, а для ПД - скорость…

НО ни в коем случае не отговариваю вас от реализации идеи, именно реализации, а не теоретизирования…

HikeR

ну, кто кого корректирует зависит больше от реализации. для CC одно время предлагался вариант с “плавающим” коэфф-ом влияния гира/аксель, чем дольше не происходит значительных ускорений, тем меньше влияние данных полученных от гироскопа. и наоборот, чем активнее мы вертим стиками (или ветер поддувает), тем меньше учитывается аксель.
но моя фраза не совсем корректная, согласен.

mahowik:

аксель… всегда знает где земля

аксель выдает 20м/с по оси X (преположим, прямо по курсу). где сейчас земля? это я к тому, что большую часть времени аксель совершенно без понятия где там земля.

по поводу 2). на выходе IMU должны быть матрица/кватернион и/или банальные углы эйлера, а куда они дальше там подаются - это уже дело десятое. хоть на вход простейшего “автопилота” стабилизируещего горизонт (на входе матрица описывающая ориентацию, на выходе команды для серв/плоскостей/…):

if (autoPilot==1) {
	Vector4f up=new Vector4f(0,1,0,0); // world up vector
	fd.modelToWorld.invert();
	fd.modelToWorld.transform(up); // world up in model coordinates, use it to level the model

	// magika begin
	fd.ailStick=0.3f+up.z;
	fd.eleStick=-up.x;
	// magika end
	// ...
}

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

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

mahowik:

именно реализации, а не теоретизирования…

реализация пока уперлась в hard-iron коррекцию, компас в телефоне дает даже не эллипсоид (после всякоразного вращения), а какую-то картофелину.

mahowik

upd: в вашей же идее ИМУ будет оперировать лишь данными магнитометра и выход (углы по ролл/пич/яв) все равно идет на ПИД регилятор, где для устойчивой стабилизации, все равно, придется брать дифференциал ошибки (по сути входной величины - угла)… вот он и будет шуметь мама не горюй… 😉

Musgravehill

Вот еще темы про полет компаса
rcopen.com/forum/f8/topic216494/201 - как лететь без акселерометров. Автор утверждал, что способен избавить компас от шумов.

Diman_Y:

Если собираетесь мерять компас раз в секунду, то зачем вам 160 Гц? Отфильтруйте до 1 Гц. Это уже шум в 40 раз меньше. Т.е. было 2 градуса, а стало 0,05.

😵

rcopen.com/forum/f90/topic264275 - тут про готовую систему, тема затихла.

Летать по компасу на поле можно, кривизна ничтожно мала.