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

oleg70

Вроде уже едут ко мне BMX055, в связи с этим попутно задумался: как сделать автокалибровку магнитометра непосредственно в поле ? по аналогии с Fantom - где достаточно его в руках покрутить и он как бы “калибруется на месте”.
Интересно в “народных” проектах есть подобные алгоритмы ?? там ведь матрицу коррекции надо находить, задача непростая…

mataor

берете кусок кода из мультивия и калибруете по 3 осям…
более расширенный вариант в FreeIMU

HikeR
oleg70:

матрицу коррекции надо находить, задача непростая…

для Soft Iron калибровки достаточно найти минимаксы по осям и посчитать вектор коррекции как среднее.

а вот для Hard Iron без матана не обойтись. последняя открытая версия от CH Robotics пока еще доступна, в десктопном приложении собираются сырые данные с магнитометра, обрабатываются и выдается готовая матрица. ознакомится можно тут:
sourceforge.net/p/chrinterface/code/…/Form1.h , строка 2462 (ф-ия buttonComputeCalibration_Click).

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

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

p.s.
вспомнилось только www.freescale.com/ecompass
после обязательной регистрации можно нажать на “ECOMPASS_SW: New eCompass Software Version 3” и получить исходники реализации от Freescale плюс тучу документов. сырые данные от компаса от фирмы-производителя датчика не зависят ;)

mataor

тезка… можно немного поленюсь - можешь дать строчки инициализации для мпу6000 с конфигурированием выхода прерывания по готовности (сейчас на новой платке обе стоят - и 6050 по и2с и 6000 по СПИ)
порт как обычно - мультивий

SergDoc

У меня в гит лежит драйвер - но лапу прерывания я помоему вырезал из кода ибо не использовал посмотри тут github.com/SergDoc/…/drv_mpu6000.c
и ещё - я там чёт мучался с сигнатурой чёт не шла - прописал вручную…
для вия тебе прерывание всёравно ненадо - чтение датчиков в петле… а так как петля у тебя ~3000 то данные всегда с датчика будут новые…
впринципе - новые данные - прерывание - читаем mpu, но это всё на килогерце если не ошибаюсь…

mataor

мож ненадо, а мож и пригодится - как будет свобдное время планирую поиграться с ними обоими

mataor

ага, уже давно нашел… пасиб…
сча командировка в ХМАО на недельку (г.Нягань)… как раз время свободное будет по вечерам

кстати вот текущий вариант:

сверху доп платка - мпу6000,под ней - баро, справа - мпу6050, снизу - компас, сверху справа - импульсник на 5в, РГБ светик WS2812b, лм1881 для ОСД
на нижней части - проц + ОСД на 328-й. ста на 3.3 и полевик на 2 силовых канала

мычка МГТФ-ом - чтобы шить 328-ю через основной проц

SergDoc
mataor:

сча командировка в ХМАО на недельку (г.Нягань)… как раз время свободное будет по вечерам

к rual в гости заедь 😃

mataor

к сожалению такого не получится - времени мало

oleg70
mataor:

кстати вот текущий вариант:

Серьезная плата, моя давняя мечта: “все в одном”, только у меня + GPS но -OSD…

SergDoc:

заказал себе 2 mpu9250…

Вот интересно будет потом сравнить с BMX055… Внутренности у них принципиально отличаются, будет ли какая разница на практике (?)

rual
oleg70:

в связи с этим попутно задумался: как сделать автокалибровку магнитометра непосредственно в поле ?

А до этого у тебя как было? Не в “поле” это как? “НеВПоле” вектор может быть сильно измененным.

oleg70:

Интересно в “народных” проектах есть подобные алгоритмы ??

У меня есть, хотя проект личный.

mataor:

сча командировка в ХМАО на недельку (г.Нягань)… как раз время свободное будет по вечерам

SergDoc:

к rual в гости заедь

mataor:

к сожалению такого не получится - времени мало

Жаль… правда я тоже в отпуск в пятницу уезжаю… mataor, если что, пиши личку… может где пересечемся

SergDoc
rual:

правда я тоже в отпуск в пятницу уезжаю

Блин, я тебе всё никак посыль не отправлю - быт заел 😦 доберусь как до пошты…

oleg70
rual:

А до этого у тебя как было?

А до этого я просто сначала смотрел на сырые данные и тупо добавлял поправки к осям,
но это все ессно “в одном месте на столе” и один раз… (может поэтому толком не работало и компас мне сразу как то не понравился)

mataor
rual:

Жаль… правда я тоже в отпуск в пятницу уезжаю… mataor, если что, пиши личку… может где пересечемся

собственно я то уже на месте, но вот дальше нягани наврятли куда смогу съездить

Razek
oleg70:

дождаться “музы” и освоить как положено какой нибудь FatFS, сделать загрузчик… по моему неплохо (?).

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

Может уже сразу засылать конфигурационные файлы по радиоканалу? Что-то тип CLI интерфеса сделать а потом уже гуи к ним прикручивать?

Geniok

Сегодня наткнулся вот на такую штуку:

www.youtube.com/watch?v=IcEnThx2440

Летает вроде неплохо, автоматический взлет/посадка/навигация.
Рама складная у них тоже оригинальная получилась.
Интересно, что за железо используют, может кто знает подробности?

Кстати, среди разработчиков есть наши соотечественники.

WETErok
Geniok:

Сегодня наткнулся вот на такую штуку

Похоже на рекламу … если нет, то вот еще информация
habrahabr.ru/post/226881/

SergDoc

Народ кто помнит про полосу пропускания? - я к чему - забыл 😦
короче если ужать полосу пропускания то амплитуда резко пойдёт вверх, вспомнилось просто - была или есть одна система мобильной связи (не GSM) так вот у них сигнал распространяется ниже уровня шумов! но всё работает… ткните носом где почитать, а то честно забыл и конспект мой по этому делу не сохранился 😦