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

rual
rual:

На 103м пошло!!! Качество пока не проверял, надо на леталку прикрутить.

отлетал сегодня стшный калман, сделал два “подъёма с переворотом” запутался в проводох на старой плате, перепутал регули лево-прав вперёд назад. Погнул гефмановские винты, но леталка выжила )
Теперь о калмане: в руках ведёт себя очень прилично, нет реакции ни на какие встряски и перекрутки, но на коптере ведёт себя точно так же как и мой фильтр (((( Даже хуже, увод горизонта вправо в течении 12-15 сек… Правда есть и хорошие качества, практически нет расколбаса по крену и тангажу.
В общем для чего я всё это делал, сделал выводы:
1.Надо убирать вибрации.
2.Нужен хороший аксель.

Razek
rual:

1.Надо убирать вибрации. 2.Нужен хороший аксель.

Если соблюдать эти условия то и калман не нужен =))))))

SergDoc

Интересно, на чистом wii летал нормально, с Кальманом та-же беда, сейчас пытаюсь собрать CC3D совместимую платку - хочу посмотреть как MPU6000 работает…

rual
Razek:

Если соблюдать эти условия то и калман не нужен =))))))

Пока не проверил, верил в сказку )) Конечно ради справедливости надо сказать что екф очень стабилен и нет выбросов, но увод всё таки присутствует, см. после 2 мин на синий самолёт в ровном полёте ( красный самолетик задающий, управляется жостиком), и после посадки быстро восстанавливает горизонт.

Кстати, пробовал ещё МАРГ от господина Магвика, горизонт сильно водит из стороны в сторону примерно на 1 -1.5 градуса в покое с частотой около 1 Гц. На индикаторе не очень заметно, но в полёте нужно всё время это компенсировать, от вибрации его заклинивает и горизонт заваливает так что обратно леталку уже не вернуть.

Razek
rual:

Конечно ради справедливости надо сказать что екф очень стабилен

Может еще с калманом поколдовать? Не бывает же что так сразу и все работет =)))

А до МАРГА что было ДСМ?

SergDoc

Мне тут подумалось, а триммирование акселя не делал, у меня LSM по акселю тянет вперёд и вправо, в Акро - тоесть на ДУСах одних ни куда не ведёт, что означает что и аппарат не кривой и ц.т. правильный (можно почесаться если ветра особого нет), а вот при задействовании акселя после калибровки надо ещё триммировать - есть такая полезная штука в Вие, иначе полетит сам…

        // **** PITCH & ROLL & YAW PID ****
        dT = cycleTime * 1e-6;
        prop = max(abs(rcCommand[PITCH]), abs(rcCommand[ROLL])); // range [0;500]
        for (axis = 0; axis < 3; axis++) {
            if ((f.ANGLE_MODE || f.HORIZON_MODE) && axis < 2) { // MODE relying on ACC
                // 50 degrees max inclination
                errorAngle = constrain(2 * rcCommand[axis] + GPS_angle[axis], -500, +500) - angle[axis] + cfg.angleTrim[axis]; 
rual
Razek:

Может еще с калманом поколдовать? Не бывает же что так сразу и все работет =)))

Там колдовать особо не с чем, весь АПИ

void iNEMO_AHRS_Init(iNEMO_SENSORDATA*    pExtSensorData,
                    iNEMO_EULER_ANGLES*  pExtAngle,
                    iNEMO_QUAT*          pExtQuat);

/**
********************************************************************************
* @brief Update AHRS variables
 @param pSensorData  : Sensor Data
* @param pAngle      : Roll, Pitch and Yaw Angles
* @param pQuat       : Quaternion
* @retval None
* @par Functions called:
* @ref iNEMO_PropagateP
* @ref iNEMO_CalculateK
* @ref iNEMO_UpdateP
* @ref iNEMO_fMatCopy
********************************************************************************
*/

void iNEMO_AHRS_Update(iNEMO_SENSORDATA*    pExtSensorData,
                      iNEMO_EULER_ANGLES*  pExtAngle,
                      iNEMO_QUAT*          pExtQuat);

void iNEMO_AHRS_DeInit(iNEMO_SENSORDATA*    pSensorData,
                      iNEMO_EULER_ANGLES*  pAngle,
                      iNEMO_QUAT*          pQuat);
Razek:

А до МАРГА что было ДСМ?

Нее 😃, с ДЦМ не разбирался и не жалею. Было собственное rcopen.com/forum/f134/topic224458/1048(более близкое к МАРГу как оказалось), но с принципиальными отличиями: марг в каждой итерации корректирует градиент по ДУСу, после чего добавляет его в кватернион бортовой СК, у меня же бортовая СК корретируется акселем и компасом, и тот МАРГ который на оф.сайте не корректируется по компасу в перевернутом состоянии ( это я опытным путем вычислил, т.к. в коде не совсем понятна математика коррекции, лишние члены алгебраически сокращенны для оптимизации).

SergDoc:

Мне тут подумалось, а триммирование акселя не делал, у меня LSM по акселю тянет вперёд и вправо, в Акро - тоесть на ДУСах одних ни куда не ведёт, что означает что и аппарат не кривой и ц.т. правильный (можно почесаться если ветра особого нет), а вот при задействовании акселя после калибровки надо ещё триммировать - есть такая полезная штука в Вие, иначе полетит сам…

Сергей, имхо, тримирование это мертвому припарка, если усреднённый аксель при эволюциях (если исключить влияние центростремительного ускор) не даёт четкий вектор G, значит не какой фильтр уже не поможет. Значит что шум акселя не белый, и фильтр уведёт горизонт за неправильным средним, а положениее среднего будет зависить от многих факторов: оборотов движков, текущего положения Ск и т.п. Т.е. оттримируешь ты аксель только под определённые условия, и если они изменятся это смещение может сделать ещё хуже.

SergDoc

Триммирование не влияет на фильтр, только на ПИДы при условии, что используется аксель, а “ведёт” его скорей всего из-за нелинейности самого датчика, хотя можно попробовать сделать калибровку по всем осям? (и с холодильником 😃 )

rual
SergDoc:

Триммирование не влияет на фильтр, только на ПИДы при условии, что используется аксель, а “ведёт” его скорей всего из-за нелинейности самого датчика, хотя можно попробовать сделать калибровку по всем осям? (и с холодильником )

Видимо в нелинейности дело, а “триммирование” я руками делаю, жостик немного право держу. Ручное управление меня особо не волнует, а вот при автоматическом ИНС является единственным источником информации о положении, от этого положения отсчитываются и все прочие вектора, в т.ч. суммарные, ну и качество этой информации соответствует качеству определения положения в пространстве. Вот это и крайне печально… ((

Razek
rual:

Там колдовать особо не с чем, весь АПИ

Мне ДСМ тоже не очень понравился очень к вибрациям чувствителен. Хотя и было это на заре, сейчас то понимаю что если гомно на входе то как не фильтруй оно гомно на выходе и будет. Вопрос только в стабильности этого гомна =)) Есть тропа к хорошему описанию этой либы?

SergDoc:

можно попробовать сделать калибровку по всем осям?

Минимум по всем осям

rual
Razek:

Мне ДСМ тоже не очень понравился очень к вибрациям чувствителен.

У меня есть старый арду, брал его для получения опыта и изучения ПО, покрутил его пару раз на столе и бросил в ящик, ибо горизонт при эволюциях абсолютно не адекватный. Возможно там надо было что то поднастроить, но не думаю что получилось бы сильно лучше. В итоге он у меня так и не летал, летаю только на своём. Щас думаю что с ним делать, даже если ПО улучшели с тех пор, то уменя нет времени и желания прикручивать его на раму и настроить для продажи…

Razek:

Есть тропа к хорошему описанию этой либы?

Идёш по ссылке , скачиваешь сюит, устанавливаешь, в появившейся папке фирмваре находишь АХРС_ЛИБ, там две подпапки заголовки и исходники, в исходниках цепляешь к проекту сишный файл с единичкой на конце (с 2кой для РТОС), в загловках находишь либ, это и есть код екф, прицепляешь его к проекту на линковку, заголовочный файл включаешь в свой исходник инклюдом, в своём исходнике размещаешь структуры с типом из заголовка.
В итоге твоя прога должна инциализировать калман в начале, потом должна заполнять периодически структуру данных сенсоров, там же заполняешь ДТ, поле счётчика оставляешь нулём, если все данные поставляешь разом, если нет ( как у меня), при НЕнулевом счетчике коррекция не происходит ( у мну гира считается 400 раз без коррекции, а корекция происходит 50 раз по готовности акселя), вектор ДУСа подаёшь умноженный на ДТ, компас и аксель либо нормализуешь, либо приводишь к единице в покое, в выходных структурах получаешь углы и кватернион.

Да, ешё… Код под лицензией, посему для “чистоты” не забуть купить у Стшников соответсвующую девоплату и можешь пользоваться для своих исследований без ограничений )))

Либа писана под 103й проц и 303м не идёт, возможно пойдёт на 405/407, но не проверял. Всё что написано найдено экспериментально, по этому не буду клясться что всё именно так и есть, но у меня работает.

Razek

АХРС_ЛИБ уже нашел даже, примеры кое какие есть, пока первый уровень понятности достигнут осталось прикрутить посмотреть что да как, либа под 407 заведтся?

rual
Razek:

407 заведтся?

вот

rual:

возможно пойдёт на 405/407, но не проверял.

Чтоб сильно не вникать, подсунь ИНициализации обнуленные структуры под отладчиком (либо маячёк поставь после функции), если пройдёт, значит надежда есть, если зависнет - занчит сушите вёсла.

SergDoc
rual:

Да, ешё… Код под лицензией, посему для “чистоты” не забуть купить у Стшников соответсвующую девоплату и можешь пользоваться для своих исследований без ограничений )))

Вот блин, да я вообще преступником №1 стану, мало того что к ихним продуктам мне доступ заказан, так ещё и ПО трогать нельзя 😃

rual
SergDoc:

так ещё и ПО трогать нельзя

Ну зачем же так?😃 Нужно верить в доброту и справедливость, джентельмены верят другдругу на слово! Честным людям можно, но это уже офтоп, т.к. вопрос философский.

SergDoc

Да ещё, ковыряюсь с хренью аля CC3D - забыл блин про инициализацию УСБ, повесил пока на проводочках, всё равно на этой плате не летать (хотя кто его знает, она вместо мелкоплаты один в один становится), осталось MPUшку запаять и можно пробовать…
и вообще летать хочу, а тут то снег ,то дождь, то всё вместе, надо наверно к другу в гости на новоселье с коптером припереться, у него лестничная площядка Огромная, можно даже по кругу летать 😃 и от роботов ползающих его отучить, хай тоже летающие делает 😃

rual
SergDoc:

ковыряюсь с хренью аля CC3D

Там же вроде тоже екф?

SergDoc

Я хотел на МПУ посмотреть, но по всей видимости у меня проц дохлый (с прошлой платы выдран) даже бутлоадер не стартанул, думаю и датчики паять не буду…

SergDoc

Пока не получается подменить бутлоадер СС на СС3D …

SergDoc

Загнал бутлоадер, загнал прошивку, светодиод моргает правильно, коннекта нет 😦

SergDoc

Выпаял 25P16 а она не мычит не телится (на программаторе), другой нет, чувствую будет ещё один Wii…