Создание собственной системы стабилизации
Вчера пробовал сделать драйвер usb естественно в формате drv_usb.c , drv_usb.h, не вышло - удалил, может сегодня получится… кругом примеры с кучей файлов - брр, фиг разберёшся 😦
Глядя на вот это :autoquad.org/about/ , я задумался, в связи с чем применили кучу раздельных датчиков ?
Это видимо лидеры (по качественным показателям) среди MЭMC ?
Вряд ли из-за ограниченности выбора…
все датчики аналоговые, компаса трёхосевого аналогово просто нет, почему выбор пал на idg и isz не знаю, их уже очень трудно достать (может просто запасы есть) а у 600-й серии выход как у муратовских гир - не удобно без внешнего АЦП… я давно прицеливался на эти датчики, но видать не судьба…
IDG500, ISZ500 - 2мВ/гр/с
IDG600, ISZ600 и ENC03 - 0.67мВ/гр/с
650 не 600 это я ошибся…
у IDG650, ISZ650 0.5 мВ/гр/с , но там наборту есть операционники с КУ 4,5 … те после усиления получаем 2.27 мВ/гр/с …
так что можно было обходиться и без внешнего АЦП …
но ксожалению инвенсенс снял с производства ВСЕ аналоговые гиры …
зато к концу года ждемсЪ всё в одном флаконе - MPU-9250 …
надеюсь на место 6000-й встанет? неа оно меньше 😦
ага 3х3 мм , корпус скорее всего будет как у IDG/IXZ-2020 16 ногий …
ладно поживём - увидим один проц приберегу…
интересно кто первый сделает 10DOF в одном корпусе … у ST вроде как есть MEMS баро , осталось только скрестить с остальными …
или родить модуль типа INEMO только с 4хх проциком …
я думаю f3 для чисто иму будет за глаза - fpu есть и скорости хватит вполне…
Т.е. НЕ имеет права на жизнь?
Почему не имеет, просто чтобы реализовать правильную компенсацию, нужно разработать методу для калибровки коэффициентов и выполнять эту методу для каждого экземпляра ДУС, т.е. крайне геморойно. Проще выполнять компенсацию на ходу по акселю и магу.
родить модуль типа INEMO только с 4хх проциком …
f3 для чисто иму будет за глаза - fpu есть и скорости хватит вполне…
inemo ну очень дорого и не чего особенного, главное Аксель ЛСМ, такой же как и 400рублёвой Ф3дисковери.
Александр, а ты куда запропастился? или готовишь что-то грандиозное? 😃
модуль типа INEMO
Сама по себе идея отдельного модуля IMU по моему хороша, если б его сделали как один чип с выходом данных в виде углов эйлера (кому нужны угловые скорости и т.п.), а так разницы никакой, только лишний проц…
Александр, а ты куда запропастился? или готовишь что-то грандиозное? 😃
Учу математику, пытаюсь придумать более полные алгритмы ИНС (учесть все ускорения, моменты, погрещности и отдлить их друг от друга). Пока рисую в матлабе, до железа пока не добрался.
Почему не имеет, просто чтобы реализовать правильную компенсацию, нужно разработать методу для калибровки коэффициентов и выполнять эту методу для каждого экземпляра ДУС, т.е. крайне геморойно. Проще выполнять компенсацию на ходу по акселю и магу.
Видимо все же надо самому попробовать, что бы говорить на одном языке. Пока не сообразил, почему не будет работать на всех ДУС.
Учу математику, пытаюсь придумать более полные алгритмы ИНС (учесть все ускорения, моменты, погрещности и отдлить их друг от друга). Пока рисую в матлабе, до железа пока не добрался.
Вот такая же фигня(тока физику и термех? вспоминал), написал и отладил стабилизацию без PID. Все никак на железо не перенесу. И вообще забил на это. Буду отлаживать на писюке через серийник, так удобней на порядок(бряки, замедленный просмотр по логам), потом просто библиотеку к пректу подключить.
не будет работать на всех ДУС.
Работать будет, Александр видимо хотел сказать что алгоритм для каждой модели чипа будет отличаться, производители чипов любят “разнообразные подходы”, я с L3gd20 так и понял “замысел” такого формата температуры на выходе…
физику и термех
Под эту тему надо ТАУ (теория автоматического управления) штудировать, но там достаточно все мудрено… (дисциплина высшей школы).
Работать будет, Александр видимо хотел сказать что алгоритм для каждой модели чипа будет отличаться, производители чипов любят “разнообразные подходы”, я с L3gd20 так и понял “замысел” такого формата температуры на выходе…
Ща же вроде MPU6050 наше все. И по слухам все улчшайзинги в софте, а не по железу(заводская калибровка и фильтры), из MEMS вроде по железу лучше не куда. Сняли аналоговые дачики с производства, еще ныть будем, что аналоговых не осталось, все же софтовые улучшения коробят измеренные данные.
Пока рисую в матлабе, до железа пока не добрался.
надо и мне разобраться с этой штукой, а то как-то начал изучать и забросил…
для меня всегда проблематично, считаю
Резонно, самого коробит от кучи проводов и плат никак не могу привести все в прядок, хочется чтоб выглядел аккуратно, а выглядит как комок проводов
dl.dropboxusercontent.com/u/…/IMG_4985s.jpg =((
Чет я запутался (подскажите кто может), : в цикле посчитал три ПИДа (тангаж, крен, вращ.) , а теперь надо их с разными знаками, для каждого мотора, прибавлять к общему ГАЗу и “совать” на движки ??
Правильно ? Может кусок кода у кого под рукой…
А я исходники просто так выкладываю 😃 github.com/SergDoc/…/mixer.c
static const motorMixer_t mixerQuadP[] = {
{ 1.0f, 0.0f, 1.0f, -1.0f }, // REAR
{ 1.0f, -1.0f, 0.0f, 1.0f }, // RIGHT
{ 1.0f, 1.0f, 0.0f, 1.0f }, // LEFT
{ 1.0f, 0.0f, -1.0f, -1.0f }, // FRONT
};
static const motorMixer_t mixerQuadX[] = {
{ 1.0f, -1.0f, 1.0f, -1.0f }, // REAR_R
{ 1.0f, -1.0f, -1.0f, 1.0f }, // FRONT_R
{ 1.0f, 1.0f, 1.0f, 1.0f }, // REAR_L
{ 1.0f, 1.0f, -1.0f, -1.0f }, // FRONT_L
};
ну и для моей кривой рамы:
static const motorMixer_t mixerQuadXSerg[] = {
{ 0.87f, -1.0f, 1.0f, -1.0f }, // REAR_R
{ 1.0f, -0.47f, -1.32f, 0.75f }, // FRONT_R
{ 0.87f, 1.0f, 1.0f, 1.0f }, // REAR_L
{ 1.0f, 0.47f, -1.32f, -0.75f }, // FRONT_L
};
столбцы соответственно для каждого мотора trotthle, roll, pitch и yaw 😃