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

oleg70

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

Geniok
djdron:

Можно написать в Builder c++, пишется просто и быстро из компонент , куча примеров в инете. Большую GUI на нем не очень удобно писать, а всякие мелкие проги для отладки самое то.

Я бы советовал или Qt или C#.
Во-первых, сама разработка быстрее, во-вторых, нет проблем с работой под новыми ОС.
Builder системы выше ХР не очень любит. Могут быть проблемы.
Тем более что C# и Java очень похожи, потом не будет больших проблем сделать GUI для Android.

oleg70
Geniok:

Я бы советовал или Qt или C#

Это все, насколько я понимаю, “объектно ориентированное” (инкапсуляция, полиморфизм, наследование 😃) ?

Geniok
oleg70:

Это все, насколько я понимаю, “объектно ориентированное” (инкапсуляция, полиморфизм, наследование 😃) ?

По желанию, как писать будете.
На С++ ведь можно писать как на простом С с некоторыми оговорками.
С C# конечно посложнее будет в этом плане, но простой и понятный код писать тоже можно вполне, если вас пугает “инкапсуляция, полиморфизм, наследование”

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, если что, пиши личку… может где пересечемся

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