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

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 - тут про готовую систему, тема затихла.

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

allcaponne

Решил собрать собственную систему стабилизации для камеры. Данные по i2c шине получил от акселя, гиро и магнето. Вопрос встал в обработке данных для определения угла поворота по оси Х и У. Кто подскажет где искать?. Заранее благодарю за ответ. Сижу уж 5 день и негде не могу найти реально полезную информацию для написания кода под ARDUINO. Буду очень признателен за информацию.

mataor
allcaponne:

Сижу уж 5 день и негде не могу найти реально полезную информацию для написания кода под ARDUINO. Буду очень признателен за информацию.

взяять кусок кода из мультивия (правда аккуратно вырезать его будет немного гемморойно)

SergDoc

Блин, проц большеватый и не хочу переходные отверстия под процем делать , что если сделать 2.5 этажа, нижний - проц, входы выходы: сразу над процем платку ИМУ (как отнесётся MPU6000 к компасу подцепленному к ней, баро SPI), со своим питателем - 1.5шный этаж на низких разъёмах, ну и верхний этаж GPS, батарейка, пищалка.
Плюсы - легче развести, MPU ближе к центру платы, меньше габариты (высота не поменяется)
Минусы - лишний вес платы ИМУ+разъёмы, ИМУ близко к GPS