OSD на ATmega1281

msv

Новости из лаборатории…

  1. Изменение RTH. В старой прошивке самолет возвращался строго на точку старта. Задавалось мин. расстояние до базы. Если меньше, не менялся целевой курс. Практически это выглядело- пролет над головой, затем, “одумавшись”, разворот и опять пролет над головой. Эффектно выглядит, но, по сути, бестолково… Сделал так- точкой возврата считается место, где самолет оказался первый раз после старта отлетев на X (40м) от точки старта. АП в режиме RTH ведет его не на эту точку, а на касательную к окружности вокруг этой точки с радиусом R (25м). Т.о. самолет должен встать на круг ожидания перед пилотом с направления, определенным вектором старта.
  2. В прошлом сезоне демонстрирую друзьям работу RTH, всегда получал вопрос- “А когда батарейки кончатся- он сам сядит?”. Приходилось признаваться- увы… Он будет до последнего пытаться удержать целевую высоту и, конечно, в итоге свалится… С решенным первым пунктом было сделано, что при срабатывании отсечки самолет продолжает кружить переходя в режим планирования, те совершая некоторое подобие круговой глиссады со сбросом высоты. Уменьшив высоту до X(8м), убирается целевой крен и тангаж в ноль (фаза выдерживания), ну и должен получиться относительно безопасный плюх… Для проверки этого режима, сделал его принудительное включение с громким названием- “Landing”.
  3. Ну уж коль появился “Landing”, грех было не добавить “Takeoff”… Тут уж все просто - газ на полную, целевой крен в ноль, тангаж ограничить. Выход автоматом в RTH по достижении некоторого удаления или целевой высоты.
    Вести с полей.
    20.05.11 проверил эту байду в поле… Масса положительный эмоций, несмотря на то, что все работало далеко не идеально… Самое неприятное- все-таки остался какой-то косяк в железе, после приземления (вероятно от толчка) иногда проц сходил с ума. Глюки с перезагрузкой и порчей ОЗУ, о которых уже писал, одно время стали регулярны (на цапонлак зря грешил) и надеялся что решил их, пропаяв все ответственные ножки проца (земли, питания, генератор). Многочасовые испытания и вибростенд в виде стукающей отвертки прошел успешно. Но увы… Где-то, скорее всего коварная микротрещина или микросопля остались… Прямо хоть новую плату делай…
    Но зато как шикарно работает стабилизация!.. Убрал пока совсем D-ветвь с ПИДов крена и тангажа, уменьшил длину фильтра усреднения сенсоров пироголовы и самолет полетел как по рельсам… Есть небольшое перерегулирование, но совершенно не напрягает. Для кружения RTH выбрал слишком маленький радиус и вменяемого кружения не получилось, некоторое подобие… Но всяко лучше бестолквого болтания над головой. Уверовав в свой RTH, отложил пульт, и стал плясать под задорную музыку из авто со своими домочадцами, слегка ошарашив их - “Папа, а как же самолет???”. -"Да пусть сам немного полетает… ". Конечно это выглядело более эффектно, чем мои крики с перекошенным от напряжения лицом и вцепившись в стики пульта- “Смотрите! Я им не управляю! Он сам летит!”. Хотя… трезвый танцующий папа… уже это могло вызвать шок… 😃
    C takeoff проблем никаких, взлетает, переключатся в RTH, бумерангом возвращается…
    А вот с “landing” получилось забавная история. Пару раз удачно сел, хоть и набрав приличную скорость на глиссаде, пролетал на выдерживании метров 100. Если курс на выдерживании совсем не устраивал, врубал RTH, который почти с земли легко и непринужденно его опять поднимал на круг. А один раз включил этот режим, и увидив что самолет перешел к выдерживанию, бросил пульт и заранее побежал за самолетом… Пробежав метров 100, понял что самолет пролетел плоскую часть поляны и оказался над склоном холма продолжает планировать… Бежать назад- но с базы уже его не видно за перегибом холма… Бегу вниз… А он все летит и летит… Метров 500 уже от базы, даже мне еле видно… И вот долетел до самого низа и вот-вот сядит… Но вдруг вижу что у него резко меняется курс, через секунду слышу взревевший мотор (звук и вправду медленнее света). И самолет лихо развернувшись уверенно набирая высоту прет в мою сторону… Лихорадочно пытаюсь понять кто из нас- самолет или я, сошел с ума… вспомнился Франкенштейн… Но ничего не поделаешь, побежал назад, к базе… (видео- бегущий человек на 2:12 ) Конечно самолет обогнал и уже кружил над базой, когда я там оказался. Пытаюсь включить режим стабилизации… неслушает… ручной… все равно летает… Догадываюсь глянуть на экран ноута и все понимаю… Самолет, опустившись за гребнем холма, потерял сигнал с пульта и включил RTH по этому единственному условию… (На экране RTH при этом мигает) На а для отключения этого режима необходимо с пульта обязательно включить принудительно RTH…
    За последние пролеты на видео заранее прошу прощения, больше так не буду… Уж очень хотелось эффектные кадры с земли получить. Ну и к традиционно низкому качеству моего видео уже все привыкли, похоже еще и уровень видеосигнала накрутил завышенный…
Vlado

Круто! Так я понимаю глюка в софте нет? Как насчет свежайшей прошивки? А то мой бой за FMA вступает в завершающую фазу на следующей неделе, 120$ как с куста. Чтоб не пропало даром.😁

msv

Считается что программ без ошибок не бывает, поэтому ничего гарантировать не могу… Кроме как поделиться глюками последней прошивки на момент, когда они будут Вами востребованы… 😃 Да и по любому у Вас будет один из самых стабильных АП (судя по темам форума) - copilot…
Глюк, который с разной периодичностью вылезает, не похож однозначно ни на хардовый ни на софтовый… Ну не получается специально создать условия, что бы его воспроизвести… Сегодня долго и методично стучал самолетом об пол… Работает все, зараза… А в пятницу четко через несколько сек после двух посадок (~ из десяти) начинал глючить…
Правда нашел только что, если коснуться рукой корпуса кварца (пока не заземлен) и любой шины с меандром- однозначно все виснет… Может тут собака порылась…
ЗЫ Выйду на недельку из инет-пространства, не теряйте… 😃

Vlado

… Может тут собака порылась…
Собака она того, она может;)
ЗЫ Выйду на недельку из инет-пространства, не теряйте… 😃

Посмотрим, с платкой заминка, но на 0.5 мм и не утюгом, увидим как она себя будет вести.

Dikoy
msv:

Глюки с перезагрузкой и порчей ОЗУ, о которых уже писал, одно время стали регулярны (на цапонлак зря грешил)

Попробуйте перепаять кварц и его конденсаторы. SMD детали, по науке, перед пайкой надо прогревать, плавно, потому при пайке редко, но бывает - лопаются. Глюк исключительно тяжело диагностируется, потому проще просто перепаять. Кварцы тоже, бывают, стрясаются.
Но обычно подобное бывает от влаги. Я осенью такое проходил. Причём тот АП на момент возникновения глюка летал уже почти 3 года. Просто вот так погода совпала… Вылечилось промывкой в керосине и заливкой пластиком.

11 days later
msv

Конденсаторы в первую очередь поменял… После заземления корпуса кварца, вроде бы все стало нормально… (даже боюсь этим делиться, который раз думаю- ну кажется победил!..)
Крайние полетушки оказались зеркальными к предыдущим… До последнего пытался понять (с обновленной прошивкой), что пытается делать RTH, жестко пару раз приложил самолет к GND… Чуть вообще не улетел в неведомые дали… Только сегодня нашел принципиальную ошибку, оказывается от перемены мест уменьшаемого и вычитаемого- разность меняется… 😃 Но остается главный вопрос - как организовать устойчивый полет по кругу вокруг заданной точки с заданным радиусом (малым) по GPS данным с учетом, что эти данные по положению запаздывают… и не всегда с определенной постоянной времени…

Vlado
msv:

До последнего пытался понять (с обновленной прошивкой), что пытается делать RTH, жестко пару раз приложил самолет к GND… Чуть вообще не улетел в неведомые дали…

Бог в помощь. Платки скоро соберу, заинтересован в свежайшей прошивке.😒

SGordon
msv:

Но остается главный вопрос - как организовать устойчивый полет по кругу вокруг заданной точки с заданным радиусом (малым) по GPS данным с учетом, что эти данные по положению запаздывают… и не всегда с определенной постоянной времени…

Боюсь что ответ на сей вопрос - использовать иные датчики …

msv

Отсматривая покадрово видео, показалось, что проблема не столько в точности определения положения по GPS и даже не в задержке этих данных (она более-менее постоянная), а в плохой отработке самолетом постоянной и быстрой смены курса… Он с большой задержкой начинает гнаться за его измением, входит в перерегулирование, и опять по кругу… Для не быстрой смены курса при подлете издалека по RTH или быстрой но нечастой смены в режиме стабилизации курса, все вполне прилично… А когда по кругу пытается лететь, ПИДу курс->крен приходится несладко от неоднозначной задержки реакции крен->курс и жутких нелинейностях. Да еще и мой самолет далеко не прост в управлении, вручную с ним еле справляюсь. Ну подумаю еще…

SGordon

а не пробовали свой пилот к симулятору подключать ( типа X-Plane )? Может там прощще коэффициенты подобрать?

Dikoy
msv:

как организовать устойчивый полет по кругу вокруг заданной точки с заданным радиусом (малым) по GPS данным с учетом, что эти данные по положению запаздывают… и не всегда с определенной постоянной времени…

Время маркируется в строчках NMEA. Причём именно тем моментом, когда данные были получены.
Можно для начала прошить в ЖПС профиль “самолёт”, если он поддерживает смену профиля. Отработка высот и курсов станет намного лучше. А далее -прогноз. По нескольким последним точкам ЖПС. Такая имитация калмана. Но из-за ветра, если его не учитывать, всё равно будут овалы.

msv
SGordon:

а не пробовали свой пилот к симулятору подключать ( типа X-Plane )?

Да, было бы здорово. Но не уверен (не разбирался), что в симуляторах есть возможность получать обратную связь о положении модели (координаты), крен, тангаж итп. Пока использую свой примитивный “симулятор” (там используется непосредственно Си-шный код прошивки, визуализация в окошке OSD, реализуется зависимость с задержкой и огрублением элероны->крен, крен-курс итп…), больше для того, что бы в принципе проверять работоспособность алгоритма/кода. Ошибку в cообщении #370, допустил именно от того, что пренебрег тщательной проверкой на этом “симуляторе”. Реальных коэффициентов там не найдешь, но забавно наблюдать общие тенденции зависимости поведения “модели” от тех или иных параметров.

Dikoy:

Можно для начала прошить в ЖПС профиль “самолёт”, если он поддерживает смену профиля.

Не видел для MC1513 такой возможности.

Dikoy:

А далее -прогноз. По нескольким последним точкам ЖПС. Такая имитация калмана.

Д-ветвь регулятора курс->крен по сути и есть прогноз. Мне виделся в подсознании некоторый алгоритм, в основе удержание постоянного крена. Сразу получаем достаточно плавные круги. Но как это грамотно связать с целевым радиусом поворота, а тем более с сохранением центра- пока не придумал…
Еще такая мысль не дает покоя… Можно записать все параметры полета в лог, даже в ручном упралении. Потом на ПК натравить на этот лог некую программу, которая сможет построить переходные характеристики заданных параметров, выполнит идентификацию объектов управления и пр. умные вещи, выдаст в итоге рекомендуемые коэффициенты с заданным запасом устойчивости. Благо вычислительные ресурсы и время на выработку решения будут неограниченны… Спецы по ТАУ, отзовитесь! Может есть подобный софт для формальных решений подобных задач?
ЗЫ Сегодня приехал на поле, пока разворачивал наземку, настраивал самолет, началась гроза и проливной дождь… Зато все привез домой целым и невредимым… 😃

avisenja

To msv
Тут наверное св.диод наоборот? Или я чего непонял.😵

msv

Да, конечно… очепятка…

Dikoy
msv:

Да, конечно… очепятка…

Я бы вам рекомендовал такой преобразователь уровня: www.analog.com/static/…/ADG3304.pdf Двусторонний, быстрый, надёжный.

msv:

Можно записать все параметры полета в лог, даже в ручном упралении. Потом на ПК натравить на этот лог некую программу, которая сможет построить переходные характеристики заданных параметров, выполнит идентификацию объектов управления и пр. умные вещи, выдаст в итоге рекомендуемые коэффициенты с заданным запасом устойчивости.

Не так всё просто…
Мы составляем 3D модель планера (рисовать месяц), потом продуваем его в солиде (двухядерный пенёк пыхтит почти трое суток) и получаем передаточные характеристики ТОЛЬКО планера. Ещё нужна ПХ для сервы, электроники и тд. И вот когда всё это есть, тогда в маткаде можно довольно легко посчитать коэффициенты.
Это старая методика, описана ещё в книгах Боднера.
Для себя сделал вывод,ч то проще в поле провести день и подобрать эти коэфициенты 😉

msv

Сразу скажу, что я полный ноль этой области… Более того, о существовании ТАУ узнал в этом проекте… 😃 И все же…

Dikoy:

Не так всё просто…

Это если идти путем прямого мат. моделирования объекта. У меня же более реальная идея- синтез формальной модели объекта с пассивной идентификацией. Хотя бы (для начала 😃) модели первого порядка с транспортной задержкой. Под объектом можно представить сразу весь контур регулирования - например черный ящик, на который подается PWM для элеронных серв, а на выходе получается некоторый крен. Поэтому в этом объекте сразу будут учтены и ПХ сервы и аэродинамика самолета итп… Понятно, что модель эта жутко нелинейная, но для начала можно получить усредненные параметры на основании относительно длительного наблюдения (скажем перелопатив лог 30-мин. полета) . Ну а стоит войти во вкус, глядишь и до адаптивного фильтра можно дорасти, отдельно идентифицировав например модель элероны-крен для разного тангажа и др. параметров полета… ( ну это так, помечтать…)

Dikoy:

Для себя сделал вывод,ч то проще в поле провести день и подобрать эти коэфициенты

Хотелось бы хоть знать, хоть от каких порядков отталкиваться. Например прошлый самолет оценил Зиглером/Никольсом, и потом только маленько поправил коэффициенты, увеличив запас устойчивости. А вот текущий самолетина, категорически не переносит диф-составляющую для крена, сразу появляется недопустимое перерегулирование/раскачка… Объяснить это пока не могу.
ЗЫ интересно, как сделаны регуляторы в продаваемых народных системах стабилизации, где все настраивается одной крутилкой…

Dikoy
msv:

У меня же более реальная идея

Ваша идея выполнима только в идеально равномерной среде, увы. Я пробовал писать эти параметры - получается. Но мы не учитываем влияние ветра и т.п. То же скольжение влияет на динамику, а пирометры скольжение не покажут никак. Ибо крен, это ещё не скольжение.

msv:

Объяснить это пока не могу.

Инертная масса. Помню, весы мы делали, автомобильные. И были у нас гири на тонну, которые мы тельфером на весы клали. Дык они потом ещё минут 10 качались, хотя весы на тензодатчике и упругих элементов не имеют.

Vlado
msv:

о существовании ТАУ узнал в этом проекте… 😃 И все же… Это если идти путем прямого мат. оценил Зиглером/Никольсом, и потом только маленько поправил коэффициенты, увеличив запас устойчивости. А вот текущий самолетина, категорически не переносит диф-составляющую для крена, сразу появляется недопустимое перерегулирование/раскачка… Объяснить это пока не могу.

Доброго дня! Как насчет прошивки а то засада, плату собрал если что.😃
Можно глянуть и на исходники, если не жалко.

msv

Прошивка меняется каждую неделю, поэтому пока нет смысла ее выкладывать. Крайний облетанный вариант выслал Вам на мыло.
Еще раз попробую спросить… Как правильно реализовать Д-ветвь ПИД регулятора? Каноническая реализация Kd/T*(e[n]-e[n-1]) ничего кроме дифф. шума не дает… И не удивительно, скорость изменения функции измеряется только за один период дискретизации и считается что она такая же будет за все время дифференцирования. Если например после скачка рассогласования к следующей итерации выходной сигнал даже случайно чуть сдвинется в нужную сторону, такая диф. цепь уже начнет выдавать активное торможение. Я изобрел и попробовал кучу разных алгоритмов, они все как-то работают (во всяком случае рисуют красивые графики на ускорение и демпфирующее торможение), но создается ощущение что изобретаю велосипед…
Может самым красивым решением будет в качестве дифференциатора использовать ФВЧ 1-го порядка например БИХ? А частоту среза определить постоянной времени дифференцирования.

Vlado

Может самым красивым решением будет в качестве дифференциатора использовать ФВЧ 1-го порядка например БИХ?
Может😒 вообще то я не копенгаген как говорят
но в общем случае устойчивость и перегулирование определяет запас по фазе и амплитуде как в ФАПЧ е к примеру ИМХО. Ну и вопрос: механика самолета какого порядка?
я не копенгаген надо копаться если что, надо подумать.
А за прошивку спасибки и за труд тоже и не жадность:)

Dikoy
msv:

Д-ветвь ПИД регулятора?

Которая по угловой скорости?
Во-1 имеет значение, сколько у вас пирометров - 4 или 6. Во-2, учитываете ли вы взаимовлияние крена и тангажа. Если учитываете и датчиков 6, то канонический вид вполне работоспособен. Разумеется, надо фильтровать. Например, у меня период цикла АП равен 2,5 мс. То есть за один период ППМ (20 мс) я успеваю 8 раз получить угол. Потому и угол, и угл. скорость идут через ФСС на 8 выборок. Способ простейший и дубовый, но работает.
В зависимости от градента меняется глубина ФСС и, соответственно, коэффициенты ПИД.