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

Sir_Alex
alexeykozin:

со своим “врожденным” VB я в шоке от некотрых сишных форм записи ))

Да, верно.

oleg70
alexeykozin:

со своим “врожденным” VB я в шоке от некотрых сишных форм

Эх, найти бы кого, кто мог бы рассказать как GUI под винду делать… Прошивка почти готова, но набралась куча переменных (ПИДы, триммеры, реверсы, и прочее) которые надо как то оперативно менять, желательно прям в поле. Была мысль на флеш *.txt файл писать, но тоже темный лес…

alexeykozin
oleg70:

Эх, найти бы кого, кто мог бы рассказать как GUI под винду делать…

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

SergDoc

qgroundcontrol.org
Классная станция - баловался с родным ПО PX4 - думаю для самостоятельного проекта возьму…

oleg70
alexeykozin:

вобщем штука неплохая рекомендую обратить внимание

Понятно - вещь вкусная, но как то сразу пугает его сложность (зато универсальность)…
Эт надо, как говорится, “под настроение” попробовать вкурить… мне в принципе не нужны всякие “красотульки” и прочее оформление (делаю то для себя), достаточно было бы просто текстового формата типа “название параметра-> значение”, в идеале просто файл на SD карте с конфигурацией которая при запуске инициализирует плату… - очень удобно считаю… даже шнуры никакие не нужны и опять же можно иногда и без ноутбука в поле поехать…
(жаль что на переменных резисторах такое не получится, а то б я сделал 😃)

djdron

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

Drinker

To oleg70 - почему на крутилках не получится? Это мегаудобно на самом деле в период экспериментов-отладки.

oleg70
djdron:

Builder c++

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

Drinker:

почему на крутилках не получится?

Это штук 20 минимум надо ставить, 3x3 ПИДы + автопилотные настройки для самоля по каждому каналу… страшно представить что выйдет 😃, да и тупо АЦП каналов не хватит…
Если только подумать об отдельном “блоке настройки” на разъеме со своим процем и ЖК экраном, типа “подкрутил-всунул-прошил” но как то все коряво это… нету пока мыслей…

SergDoc
oleg70:

Если только подумать об отдельном “блоке настройки” на разъеме со своим процем и ЖК экраном, типа “подкрутил-всунул-прошил” но как то все коряво это… нету пока мыслей…

в вие подключается i2c led и стиками настраивается…

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, но это всё на килогерце если не ошибаюсь…