Автопилот для RC модели на AT91SAM7

Maksimuzz
mit65536:

великолепно справляется MPU6050

Добрый день!
Нет ли у Вас случайно измеренных данных по нему, меня больше всего интересует шумовая дорожка (для minIMU -9 в моем графике размах порядка 1 град/сек,) и температурный дрейф. Дело в том что даташите на него написано ±20 град/сек во всем диапазоне. При моем способе стабилизации крена 1 град/сек при скорости 36 км/ч приводит к ошибке удержания крена в 1 градус. 20 град. в секунду в таком случае не подходит совсем. Скорость моего ЛА порядка до 100 км/ч, поэтому приемлемый дрейф ну не во всем диапазоне, ну хотя бы реалистичном ± 10 градусов не должен превышать несколько единиц град/с…

mit65536

Конкретно измерениями уровня шумов и получением графиков, я не занимался. У меня все достаточно кустарно.
Для фильтрации сигналов угловых ускорений от акселерометра и статических углов крена и тангажа от гироскопа я применяю примитивный рекуррентный фильтр:
сигнал_тмп: = (вход - выход)*коэфициент фильтрации;
выход:= выход + сигнал_тмп;
коэфициент фильтрации подбираю экспериментально практическим путем - чтобы быстродействие фильтра было удовлетворительным,
было на порядок меньше времени инерциальной реакции квадрокоптера на крены,
и качество отфильтрованного сигнала тоже было удовлетворительным, чтобы сигнал не прыгал и не дергался от помех и шумов
качество фильтрации и быстродействие фильтра это вещи взаимо противоположные.
Тут сильно помогает малое время цикла ПЛК, когда контроллер шустрый и много мегагерц - это хорошо!

Такого фильтра для черепашьего квадрика более чем достаточно, для самолета… я не знаю 😃

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

Дрейф и ошибки показаний от вибраций, я у себя не заметил, видимо другие условия, более легкие, меньше влияний

20 градусов в секунду, это ужасно… тут где то происходит накопление… Что то неправильно видимо в коде программы или еще где… или адские вибрации

В своей практике от применения интеграторов в математике стабилизации горизонта я отказался, все стараюсь снизить порядок функций применяя больше обратных связей

mit65536

Вот еще, если кому будет интересно, упрощенный вид фильтра кальмана:

// перменные для кальмана
float varSignal = 0.25; // среднее отклонение (ищем в excel) определяем из ряда разных выборок сигнала датчика
float varProcess = 0.025; // скорость реакции на изменение (подбирается вручную)
float Pc = 0.0;
float G = 0.0;
float P = 1.0;
float Xp = 0.0;
float Zp = 0.0;
float Input; //переменна вход фильтра кальмана
float Output = 0.0; //переменная выход фильтра кальмана

void setup() {
// open a serial connection to display values
Serial.begin(9600);
}
void loop() {

// фильтр кальмана
Pc = P + varProcess;
G = Pc/(Pc + varSignal); // коэфициент усиления кальмана
P = (1-G)*Pc;
Xp = Output;
Zp = Xp;
Output = G*(Input-Zp)+Xp; // выход фильтра кальмана

Serial.print(Input,5);
Serial.print(“,”);
Serial.print(Output,5);
Serial.println();
}

kasmirov
Maksimuzz:

Добрый день!
Нет ли у Вас случайно измеренных данных по нему, меня больше всего интересует шумовая дорожка (для minIMU -9 в моем графике размах порядка 1 град/сек,) и температурный дрейф. Дело в том что даташите на него написано ±20 град/сек во всем диапазоне. При моем способе стабилизации крена 1 град/сек при скорости 36 км/ч приводит к ошибке удержания крена в 1 градус. 20 град. в секунду в таком случае не подходит совсем. Скорость моего ЛА порядка до 100 км/ч, поэтому приемлемый дрейф ну не во всем диапазоне, ну хотя бы реалистичном ± 10 градусов не должен превышать несколько единиц град/с…

Если гира откалибрована, то дрейф довольно низкий. Не скажу точно, но минут порядка 10 удерживает направление с отклонением несколько градусов. При условии отсутствия вибрации. При вибрации несколько хуже, но все равно неплохо. Но дрейф гироскопа имеет свойство меняться по знаку или величине от легких встрясок или еще не пойми от чего.
Напишите конкретные параметры, могу измерить через пару недель, когда вернусь к работе с MPU6050. Могу также вычислить разные статистические характеристики.

Maksimuzz
mit65536:

Разбираюсь с 3х осевым магнетометром

Все верно, я тоже осознал почти сразу, что наклон меняет показания компаса с точностью до наоборот… Без компенсации со знанием текущего положения платформы- невозможно им пользоваться. Однако я по неопытности сначала купил компас 2 -осевой, и ось Z при расчете компенсации пришлось принять константой, хотя это и не правильно, но как то так немного лучше. Крен у меня вычисляется по Z оси гироскопа и скорости полета, тангаж измеряется акселерометром. Но у меня самолет. Программное обеспечение и полученные результаты можно посмотреть в блоге. Но в полете курс отслеживается по GPS, хотя компас пока скорость 0 показывает курс честно. Еще не забывайте о калибровке компаса. Ее периодически надо делать, иначе намагничиваются различные компоненты и это дает погрешности в измерения. Но когда я смотрю на характеристики компаса и там пишут что точность( в 2-осевом!!!) 0.1 градуса - ну это мне становится смешно. Компас у меня HMC6352.

kasmirov:

Напишите конкретные параметры, могу измерить через пару недель, когда вернусь к работе с MPU6050.

Привет!
Меня прежде всего интересует температурный дрейф ( морозилка тест) и шумовая дорожка. Я выше тут привел графики поведения модуля minIMU9. Там шумовая дорожка гироскопа без сглаживания как есть получилась 1 градус в секунду. Многовато для моего способа стабилизации самолета по крену, но терпимо. Но MEV-50A в моей первой версии давал 0.2 градуса в секунду.

ADF

К слову. Отличный онлайн-калькулятор фильтров: www-users.cs.york.ac.uk/~fisher/…/trad.html
Вдумчиво задав параметры, можно полчить оптимальную фильтрацию под задачу.
В конце выгоняет код на си, легко адаптируемый под любой ЯП.

mit65536

Ура! магнетометр HMC5883 побежден! удалось из него и +гироскоп MPU6050 сделать полноценный компас с компенсацией тангажей и кренов. Также удалось (много времени тому) успешно читать дату с ГПС приемника NEO8M. Приступаю к придумыванию программки для удержания позиции и возврата в точку взлета 😃

Maksimuzz

Поздравляю! Мне тоже следовало заменить датчик HMC6352 на HMC5883. Хотел заказать HMC6352, но предлагают покупать за 4000 р за штуку. Вобщем, мне дешевле переразвести и перезаказать плату, чем покупать за такие деньги. 😦

Maksimuzz
mit65536:

Ура! магнетометр HMC5883 побежден!

Скажите, а какой модуль у Вас с HMC5883? У Вас настоящий HMC5883 или аналог DA5883? И как странно, они бы(Honeywell) для этого 3x3 мм чипа побольше питаний сделали, а то только 2.5 и 1.8 В… Это же не Zinq Ultrascale… Даешь на каждую ножку по уникальному питанию! Вот думаю заказать и прилепить вместо HMC6352.