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

rual
SergDoc:

посмотри разницу, где начинается EEPROM у F1 и F3 (имею в виду адресацию) может не к тем адресам обращается? а то может пытаешься во флеш записать то что нужно в еепромку?

нее, там в прикомпиленой библиотеке только объектные файлы, линкер их привязывает в проект по месту. Возможно какие то проблемы с ФПУ или ещё какой внутренней математикой, возможно модуль проверяет тип проца… ОЗУ под себя модуль запрошивает через malloc()
вот точная ссылка на СДК www.st.com/internet/evalboard/product/250367.jsp

SergDoc

интересно в V2 аналоговые гиры, о чём так мечтал (не знаю но нравятся они мне, правда АЦП лучше 24бит а не 10) и барометр на борту 😃

rual:

Возможно какие то проблемы с ФПУ

попробуй отключить?

rual
SergDoc:

интересно в V2 аналоговые гиры, о чём так мечтал (не знаю но нравятся они мне, правда АЦП лучше 24бит а не 10) и барометр на борту

СТ снимает его с производства, возможно будут дешёвые неликвиды)))

SergDoc:

попробуй отключить?

не помогает.

зато отладка проскочила на 103мB-), попробую допилить под старый проект:)

SergDoc
rual:

возможно будут дешёвые неликвиды)))

я бы с удовольствием хапнул, но к сожалению не в моей стране 😦

rual:

не помогает.

зато отладка проскочила на 103м, попробую допилить под старый проект

интересно даже там жеш вроде RE проц тоесть флеш и еепромка одинаковые с Ф3 в чём прикол?

ОФФ ТОП: А можно с тобой договорится, чтоб ты следущей осенью прислал пару кедровых шышек, жена, и дети естественно, никогда такого чуда не видели 😃

А да, я сегодня к пепелацу своему не подходил, у боса день рождения отмечали, так что не рискнул…

rual
SergDoc:

интересно даже там жеш вроде RE проц тоесть флеш и еепромка одинаковые с Ф3 в чём прикол?

видимо что то в тумбе (машкоде) не то, будет время покапаю…

SergDoc:

ОФФ ТОП: А можно с тобой договорится, чтоб ты следущей осенью прислал пару кедровых шышек, жена, и дети естественно, никогда такого чуда не видели

можно:) , в личке спишемся

rual

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

SergDoc

Дмитрий, а томатом не кинуть? читателей то хватает… могут тоже неверно растолковать. И вообще - шишки кедровые, а кедры как известно не растут в Беларуси 😦

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, но не проверял.

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