OSD на ATmega1281

msv

Дмитрий, имхо не стоит спорить по мелочам, что значения углов посчитанных по ДУС плывут и причина этого понятна уже каждому “школьнику”… Лучше поподробнее расскажите про:

Diman_Y:

Компенсировать эту ошибку можно разными методами. Вот некоторые предлагают использовать данные темпиратуры для этого. Я на пример использую оценку постоянной составляющей во времени фильтром 8-го порядка. И т.д.

Честно говоря ничего не понял… Подразумевается, что усредняя за большой период времени скажем крен должен быть нулевым и от этого коррекция? но в реальных полетах это не так… 😦

Diman_Y
msv:

Честно говоря ничего не понял… Подразумевается, что усредняя за большой период времени скажем крен должен быть нулевым и от этого коррекция? но в реальных полетах это не так…

Да. Коррекция от этого, но не совсем в лоб. 😃
Вообще, я до самолета еще не добрался. Во думаю завтра-послезавтра в машине повозить а в выходные на самолете полетать и накопить данные сенсоров. Но на данный момент, на столе это работает так:
Есть данные начальной оценки. Т.е. сначала первые несколько секунд все спокойно, и я могу просто накопить ошибку. Эта ошибка и есть начальная оценка.
Потом включается следующий алгоритм:
ФНЧ (тот который 8-го порядка) включается тогда, когда изменения гиро - минимальные (а еще я подключу аксель и компас и буду считать изменения векторов гиро, компаса и акселя. Не их амплитуды, а их направления). Но с акселем там есть засада со знаком…
Так вот, вот когда изменения меньше пороговых, вот тогда все и считается.
Я конечно понимаю что это нелинейно, но кому сейчас легко. 😃
Все работает нормально если после долгой тряски на некоторое время будут спокойные промежутки.

Пока я вижу сто этого достаточно для коррекции. Потом уже будет введена корекция по абсолютной и относительной скоростям и высотам. Т.е. нафига мне нужен ноль по гироскопам если скорость не стабильна, высота падает и курс меняется. 😃

Вообще у меня с попробовать любой алгоритм проблем вообще нет. Все сводится к рисованию этого самого алгоритма. Если это работать не будет, то я спокойно его изменю. Причем я могу это делать как реалтайм, т.е. на данных с платы, так и на записанных данных.

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

msv

Развил свою идею ограничение скорости изменения курса до полного определения целевого крена этой скоростью. Вот такая диаграммка иллюстрирует этот процесс.
В симуляторе работает хорошо (быстрая реакция на изменения, малое перерегулирование), осталось на поле проверить… Есть шанс, что может оказаться неработоспособной, посмотрим…

Dikoy
Diman_Y:

Дискретизацию всю жизнь все считали шумовой составляющей

И как это противоречит моим “Тогда основным источником погрешности становятся ошибки дискретизации и линеаризации”?

Diman_Y:

Более того, характеристики шума дискретизации всегда известны и измеряемы. А значит результат всегда прогнозируем.

Гладко было на бумаге…

Diman_Y:

Вообще я не понимаю что Вы понимаете под понятием линеаризации.

Линеаризацией всегда называлось упрощённое представление функции в ограниченных условиях. Если мы рассматриваем функцию, а не мгновенное изменение параметра, то мы всегда имеем линеаризацию в АП. Я так понял, Калмана вы не используете, значит и значение линеаризации для вас не так велико.

Diman_Y:

Короче, то что Вы называете ошибками алгоритма, ошибками самого алгоритма не является.

Да это не я называю, это терминология такая, сложившаяся. Во всех статьях и патентах, что я видел. Вы зациклились на ошибках матаппарата и сводите их к ошибкам алгоритма, не выводя алгоритм за пределы программы. Вот, шум вычисления в double зачем-то посчитали… Я же понимаю это в более широком смысле, называя алгоритмом весь процесс работы АП. Откажитесь от интегрирования, используйте только угловую скорость, и вы обнаружите что даже на дрейф нуля можно забить. Не говоря про офсеты АЦП. Накопление ошибки образуется только при вводе интегрирования, и называются они ошибками интегрирования. А интегрирование - неотъемлимая часть алгоритма работы с ДУС.
Если же, как вы, рассматривать АП по кусочкам, а не единой системой, то перспективы раскрываются весьма радужные.

Diman_Y:

а какие еще есть погрешности в алгоритме, которые надо упоминать?

Большинство я вам описал. Не забудьте ещё про вибрацию двигателя и раскачку самолёта ветром на полосе, когда вы будете накапливать “начальную оценку”. А так же то, что эта оценка на столе и в полёте будет разная 😃 Причём в полёте всё будет немного лучше.
Короче, полетайте, позаписывайте параметры. Тогда и видно будет, что и где шумит. Тогда и поспорим в отдельной ветке 😃 А тут с оффом надо завязывать.
Скажу лишь, что коррекция акселем на ровных участках, в итоге, оказалась у нас самой эффективной. Все новомодные фичи, вроде GPS, компасов и пиро по совокупности работают хуже. Хотя, каждый из способов имеет свои преимущества в опр. условиях.

msv

Полевые испытания алгоритма #441 прошли вполне успешно. Этот, в некотором смысле, PID, вывернутый наизнанку (да простят меня спецы ТАУ), отлично справляется с торможением, дает минимальное перерегулирование, ну и более безопасен для устойчивости самолета даже при неточном горизонте, тк. ограничивает в явном виде скорость поворота. Подобного эффекта я долго надеялся получить от Д-ветки обычного ПИД-а, и в принципе эффект торможения она (Д-ветка) давала, но несравнимо хуже и как бы плохо предсказуемый… Теперь думаю, может такой же алгоритм применить для определения “целевая высота->целевой тангаж”?
ЗЫ Был атакован стаей каких-то больших птиц, их 15 штук собралось… Летали косяком за самолетом, периодически одна вырывалась нападала… Но все обошлось… 😃 Жаль только не установлена камера “заднего вида”, были бы отличные кадры…

Vlado

Интерсно пляшут девки. Птицы большие и не опознаны, это как то не по нашенски😵 Надо сказать у меня материал в ноутбуке тоже пропал, вот в прострации буду делать вскрытие. А софт чувствуется обретает все более зримые контуры ( мой шкурный интерес вполне логичен😒 надеюсь договориться) Меня тоже стали часто атоковывать птицы в последнее время. С точки зрения статистики, довольно аномально. Хорошо что не бабочки а то эти энтомологи, в душе и по сути
очень сеньтиментальны. Бабочек собирать…для науки. А то еще и чебурашку покажут, походу.

Dikoy
msv:

Полевые испытания алгоритма #441 прошли вполне успешно.

А можно посмотреть это в виде кода? По блок-схеме не очень понятно.

msv

Ок, плс:


#define MAX_SPEED_ROTATION (180/4)  //180grad for 4 sec=45g/s
//---------------------------------------------------------------------------
s_int CalcRollFromCourse(s_int new_course)
{
s_int e, c;

e=(new_course-g_course); if(e<0) e+=360;
if(gRollHysteresis>0) { if(e>(180+gRollHysteresis)) gRollHysteresis=-gAP.CourseDirHyst; }
else { if(e<(180+gRollHysteresis)) gRollHysteresis=gAP.CourseDirHyst; }
if(gRollHysteresis<0) e-=360;
//-- target speed of rotation -----------
e*=MAX_SPEED_ROTATION; e/=90;
if(e>MAX_SPEED_ROTATION) e=MAX_SPEED_ROTATION;
else if(e<-MAX_SPEED_ROTATION) e=-MAX_SPEED_ROTATION;
//-- current speed of rotation --
c=(g_course-g_course1);
g_course1=g_course;
if(c<0) c+=360;
if(c>180) c-=360;
c*=50; //grad/sec
//------------------
e=IIR_Filter(&gIIR_CourseRoll, e-c);
e*=gRoll.MaxAngle; e/=MAX_SPEED_ROTATION; //MAX_SPEED_ROTATION->gRoll.MaxAngle;
e=PID_Work(&gPID_CourseRoll, e);
return e;
}

Код не оптимизирован, но зато более понятен… (мне во всяком случае… 😃)

Игорь_Лытнев

Что то не могу на fmadirect отдельно голову найти только вместе с co-pilotом , плохо ищу или их там уже нет, если не трудно киньте ссылочку где можно купить отдельно голову или может где отдельно датчики появились ?

И еще, может кому пригодится.
Для вывода изоражения я обычно использую модуль SPI. В PIC24 просто песня , 16 битный SPI c восьмиуровневым FIFO прямо готовая видеокарта , восемь 16 битных слов в буфер кинул (128 пикселей) и пошел заниматься своим делом. процессор почти не напрягается.

msv

Увы …revolectrix.com/…/Co-Pilot-CPD4-Sensor-Unit Out of Stock… Боюсь и не появится. Зато цены заметно упали… Почти за те день которые я только за голову заплатил, можно готовый пилот взять …revolectrix.com/…/Co-Pilot-CPD4-2-Channel-Flight-…. Есть шанс, что это тоже остатки…
Я бы тоже взял вертикальную пару для экспериментов, поэтому присоединяюсь к вопросу- может подскажут где по дешевке модуль готовый взять или хотя бы сенсоры?

SPI с аппаратным FIFO это здорово… В меге даже буферный регистр для SPI поленились сделать… 😦

msv

Цена (тогда она была под 50) меня начала радовать, когда понял, что в розницу отдельно пиродатчики меньше чем 20 за сенсор не найти… 😃
ЗЫ Вспомнил, драгоценную голову из самой америки почтовики просто бросили в почтовый ящик… За неделю до этого мелкий пакет, тоже без оценки, из ГК категорически не стали отдавать жене по моему паспорту…

Игорь_Лытнев

40$ голова, 55$ co-pilot с головой , брать отдельно вроде как смысла нет , а если возьму целиком , то свою стабилизацию точно делать не буду 😦

msv

Это pyroelectric… Не пойдет… 😦 Надо thermopile.

Игорь_Лытнев:

если возьму целиком , то свою стабилизацию точно делать не буду

Во первых- уверены, что удовлетворит все Ваши возрастающие потребности?.. А во вторых- насколько интересно в каждом полете проверять воплощение своих очередных идей!.. Все остальные свои самолеты похоже окончательно забросил, не интересно… Ну летают, ну и что…

blade
msv:

Это pyroelectric… Не пойдет… Надо thermopile.

И это- правильно: пироэлектрик содержит внутри буферный транзистор, что делает его абсолютно непригодным для наших применений. А вот термофил- то, что надо…
Термобатарейка с диапазоном чувствительности 5-14 нМ 😃
Только фирма Декстер, которая их раньше запросто продавала по 10$- теперь на сайте пишет “введите паспортные данные, тогда поговорим” 😦

Игорь_Лытнев
msv:

Во первых- уверены, что удовлетворит все Ваши возрастающие потребности?.

Даже точно знаю что не удовлетворит

msv:

А во вторых- насколько интересно в каждом полете проверять воплощение своих очередных идей!.. Все остальные свои самолеты похоже окончательно забросил, не интересно… Ну летают, ну и что…

Именно! Но есть еще лень матушка , особенно когда под рукой что то готовое и почти удовлетворяющее 😦
Хотя задача довольно интересная и возможно переборет лень , но пока не буду рисковать, поищу датчики отдельно и покапаю в сторону видеогоризонта.

blade
msv:

Ну летают, ну и что…

Нельзя так поступать с самолётами-зачахнут 😃
Вопрос по существу: мне надо припаять процессор Ат1280 (100 ног, шаг 0,635)
Как Вы паяете подобное: паяльником или- воздухом горячим?
Флюс канифольный годится или- пастой лучше?

Игорь_Лытнев
blade:

Нельзя так поступать с самолётами-зачахнут

Самолёты без неба умрут
Мы загнёмся без стюардесс
Я не сдамся, я небо люблю
Я имею к нему интерес

(С) “Смысловые Галлюцинации” 😃

blade:

Вопрос по существу: мне надо припаять процессор Ат1280 (100 ног, шаг 0,635)
Как Вы паяете подобное: паяльником или- воздухом горячим?

Паяю паяльником , предварительно приклеив чип на канифоль, вот по подробнее radioteh.nm.ru/tehnology/tqfp.htm
Феном пользуюсь только если нужно снять.

12 days later
msv

Рассаживайтесь поудобнее, расскажу очередную историю, очередного крайнего полета…
Изменения в прошивке были невинными и главная задача полетушек была проверка приемной супер антенны 35мгц.

Антенна настроена в резонанс и подобной конструкцией давно пользуюсь на передатчике при ближних полетах. Сверх-идея была в том, что антенна с вертикальной поляризацией будет давать более стабильный линк с полноразмерной GP, установленной на крыше авто rcopen.com/files/4e36130b9970730077ee83e5_sm
Итак, калибровка пирометров, взлет, проверка всех режимов с визуальным управлением. Все ок, посадка, замена акк, взлет, полет по FPV подальше. Режим захвата курса/высоты, можно подремать… Через 500м решил чуть поправить курс и самолет пошел в раскачку с увеличивающей амплитудой. Переключаюсь в режим стабилизации, аккуратно шевелю стиками, вроде бы слушается… И хоть разом проснулся, все-таки решил выполнить основную задачу, проверить чудо-антенну хотя бы на километр (детское в наше время расстояние, но для пробы пойдет). Без единого дропа задачу выполнил, аккуратно разворачиваюсь и появляются дропы. Тут с ужасом понимаю, что если управление откажет, включится RTH, и наверняка в лучшем случае грохнусь, а то и улечу неизвестно куда… Вроде бы обошлось связь хоть и с дропами держится и когда осталось 600м, все-таки случается, чего боялся- принудительный RTH. Самолет врасколбас, теряет высоту… Судорожно все-таки перевожу его опять в стабилизацию и благополучно возвращаю.
Анализ аварийной ситуации показал: когда делал калибровку перед первым полетом, светило солнышко. Во втором полете солнышко зашло за тучку, погода прохладная, северный ветерок, температурный градиент резко уменьшился. Пирогоризонт почти совсем не реагировал на крен и поэтому автоматика выдавала жуткое перерегулирование по крену.
Подумал, как можно контролировать такие ситуации и показалось, что можно решить постоянной автокалибровкой пирогоризонта по скорости изменения курса. При малой этой скорости триммируется ноль крена, при больших значениях пока пропорционально ей считается крен, который должен бы быть для этой скорости. Если текущий пирокрен ему не равен - с некоторой постоянной времени меняется масштабный коэффициент пересчета значения АЦП в градусы. Конечно точно определить угол не получится, но для системы стабилизации он точный и не нужен. Лишь бы было его пропорциональное изменение реальному крену, хоть в каких то вменяемых пределах… Код написан и отлажен в симуляторе, вроде бы все неплохо, возможно даже от утомительной калибровки пирогоризонта получится отказаться, достаточно после старта в ручном режиме навернуть несколько кругов… Ну а что получится в реале, отчитаюсь…
ЗЫ Супер-антенну пришлось признать непригодной, похоже слишком большой экранирующий эффект от электроники в передней части самолета…

blade
msv:

Супер-антенну пришлось признать непригодной,

Да нет!
Я уж полпальца сточил по клавиатуре, убеждая народ, что антенна на самолёте (хоть видео, хоть РС)- должна торчать вниз.
А у Вас она-вверх. Соответственно, диаграммы направленности у передатчика и борта-совсем не совпадают и дальность- никакая 😦
А экранирующий эффект на такой частоте совершенно не при чём: длина волны-8 метров!

msv:

Если текущий пирокрен

С пирогоризонтом- вообще пора завязывать: при нынешних (смешных) ценах на гироскопы, магнетометры и аксели- нормальная ИМУ в 40$ обходится…
А работает так, что микрокоптер, к примеру, поднятый на высоту- полчаса сам на месте висит 😃
Да и изобретать ничего не надо : АрдуИму в свободном доступе лежит, вместе с файлом платы и листингом.