OSD на ATmega1281

msv

Не могу не поделиться впечатлением от крайней полетушки… На основе режима стабилизации курса/высоты, реализовал автопилот. Четыре полноценных PID-регулятора теперь позволяют реализовать следующие режимы полетов:

  1. Ручной. Классика, стиками задаётся положение серв.
  2. Режим стабилизации крена/тангажа. Ручками передатчика определяются целевые крен/тангаж, система стабилизации их отрабатывает. Газ задается вручную, но для того, чтобы при уменьшении газа при нейтральных ручках самолет не переходил в парашютирование/сваливание, при уменьшении газа меньше некоторого значения, корректируется в сторону увеличения ноль тангажа обратно пропорционально значению канала газа.
  3. (New!) Режим стабилизации курса/высоты. По сути полноценный автопилот. Стиками можно менять целевые курс/высоту со скоростью, пропорционально отклонению ручек от нейтрали. Газ устанавливается автоматически от значения тангажа.
  4. Возврат домой. Подобно 3, только курс определяется положением базы, а высота просчитывается от высоты и удаления при включения режима и конфигурируемой конечной высоты. По текущему расстоянию в каждой точке линейно определяется необходимая в данной точке высота, в соответсвии с этим корректируется тангаж. В реале самолет выдерживает точную глиссаду.
    Впечатления от нового 3-го режима, самые положительные. Полетав на нем минут 5, переключился на 2-й и вдруг понял, как это тяжело, почти невозможно… 😃 Ведь самолет тримирован не идеально, да еще не слабым ветерком сдувается, надо постоянно следить за высотой/курсом… Первый режим вообще включаю только на взлете с визуальным (не FPV) управлением. Боюсь, что по FPV в этом режиме “убьюсь” через несколько секунд полета…
    ЗЫ Как люди летают по FPV не только без систем стабилизации но и даже без OSD - вообще ума не приложу… 😃 При полете в новом месте, свое авто узнаю уже подлетев по приборам метров на 100.
baychi
msv:

ЗЫ Как люди летают по FPV не только без систем стабилизации но и даже без OSD - вообще ума не приложу…

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

msv

Боюсь, что видео произведет меньше впечатления, чем мое красочное описание… 😃 Традиционно низкое качество, самолет шатает ветром, летит кривенько (забыл триммировать пироголову, хотя делается это полуавтоматически, досточно было щелкнуть тумблером. и слишком “зажал” “И”-ветвь регулятора курс->крен).

1 month later
msv

Продолжу отчет о проделанной работе.
Тк. есть задумка на след. сезон оставить одну камеру S10 (сейчас иногда катаю ее второй, а передача картинки на землю с CCTV-камерки). Шансов, что S10 по каким-то причинам зависнит, много больше, а в этом случае все “мозги” самолета умрут, тк абсолютно вся работа привязана к ССИ прерываниям. Поэтому теперь вывод OSD сделан по прерыванию внутреннего таймера, а внешние ССИ прерывания используются для его ФАПЧ. Так сложно пришлось сделать, тк. посчитал, что надо быть готовым не только к полному пропаданию синхронизации, но и появлению неадекватного шума. КСИ тоже синхронизируют OSD только если их частота близка к 50Гц. Наверное если сильно-сильно подумать, можно найти возможность при пропадании внешней синхронизации сделать генерацию своей. Это было бы совсем здорово, но пока представляется сложновато, да и железо опять перепахивать лениво.
Решил заняться трекером антенны приемника или, как сейчас модно говорить, Ground Station. Уже реализован в OSD вывод цифровых данных (правда пока без собственно данных, ну это минутное дело…).
Ну а сам трекер по задумке должен:

  1. Собственно трекать антенну.
  2. Выдавать все полученные данные по RS232 в ноут мин. для логирования, макс. для отображения на карте в реалтайме.
  3. Подмешивать к этим данным свои (локальные), как мин RSSI и напругу батареи.
  4. Видеосплиттер.
    Пока нарисовалась такая схемка:

    Буду рад конструктивным замечаниям и даже вопросам… 😃
RW9UAO

я предлагал завести данные вниз через аудио канал передатчика. два “байком” модема, точнее наверху передатчик, внизу приемник.

Syberian
abalex:

DEC R16 ; Уменьшаем счетчик оставшихся символов
OUT VIDPORT,R18 ; 7
BRNE _out_ch

Вот оно че! (с)
А я голову ломаю, как они в 3 такта влезли без искажений…
Утащили дек в предыдущий такт вместо нопа!
У меня макрос был dec + brne , а это уже 4 веселых такта в конце байта

msv
RW9UAO:

я предлагал завести данные вниз через аудио канал передатчика.

Нее… Аудиоканал хочется оставить для его прямого назначения. Иной раз забуду перед взлетом включить в микшере микрофонный вход, так через некоторое время, когда уже самолет вне зоны прямой видимости, начинаю испытывать дискомфорт от полной тишины и лихорадочно включаю звук. А ведь там у меня кроме рыкы двигателей еще алармы пикают, что тоже весьма удобно.
ЗЫ Про звук вспомнилась история… 😃 Практически каждый раз на поле выходил с новой прошивкой, и все обходилось. И в АП настолько уже поверил, что не особо контролировал его после влючения. В один (не самый счастливый) день еще в июне отлетел метров на 500 что-то проверяя, потом включил АП. Через некоторое время понял, что что-то не то творится… Оказалось из-за ошибки в проге самолет вместо возвращения стал удалятся переменными галсами. Пока понял, что надо брать контроль в свои руки, успел только выключить двиги, и самолет влетает в крону дерева… Сидим, смотрим на экран бука… Отличная картинка, красивый вид, птички поют (это к звуку!.. 😃) и какие-то большие летают туда-сюда (рядом гнездо оказалось). Вижу, расстояние до базы 800м… Недалеко относительно, осталось сообразить только на какой опушке это дерево… Метнулся к ближайшей, а она на земле оказалась гораздо больше, чем казалась с воздуха… Ну в общем все закончилось хорошо, успокоились, внимательно отсмотрели записанное видео и пеленгом видео нашли и опушку и дерево и самолет на самой макушке метров на 20. Сбросить тоже удалось почти без потерь (ну как сбрасывали, это отдельная история…)…

msv

Кому совсем скучно, посмотрите кусочек видео крайнего полета (правда уже давненько это было, больше не позволяло отсутствие свободного времени или погода). Датчик тока отвалился, заметил уже после старта, решил продолжать полет… Ветерок можно оценить по скоростям “туда” и “обратно”. В нашей котловине он если есть - всегда порывистый. Практически весь полет в режимах стабилизации курса/высоты (LockCourse) и автовозвращения (Autopilot). Треугольнички/стрелочки на горизонтальной шкале компаса и вертикальной шкале высоты показывают целевые значения. Для режима LockCourse этими стрелочками можно управлять с пульта.

9 days later
a_freeman

// - у меня сегодня экзамен, поругайте меня. 😃
// - да такое х_йло хоть с самого утра! 😈
// ©

Круто, блин! То, что все открыто - вдвойне вкусней 😃
Алгоритмы работы автопилота расширять не собираетесь?
Тот-же полет по маршруту - ИМХО самая интересная и самая недостающая часть

Dikoy

Я 3 дня назад кандидатку защитил, пока я ничего вообще не собираюсь делать 😃)))
Потом посмотрим. Тут с профильными журналами проблема ИМХО. Радио, он немного не тот… И круг читателей у него не тот. А чисто на сайт выкладывать не очень хочется - расползётся по комерческим шарагам, а нахаляву всё равно останется шиш. Да и авторство какое-никакое хочется закрепить.

a_freeman

Кандидатскую именно по этой разработке?
Вообще конечно верно, выкладывать серьезные вещи жалко 😃

Dikoy

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

msv

Без OSD, чес. говоря, не слишком впечатляет. Совершенно невозможно оценить качество стабилизации.
Почему в матрице поворота у Вас sin45 и cos45 равен 0.5? (У меня, правда, то же… 😃 ) Надо бы было мат. обоснование сделать, а то народ не поймет…

Dikoy:

Вот и думай теперь, что делать - чахнуть над ней как кощей, или выпустить на вольное плаванье

Третий вариант - учиться маркетингу (для меня это посложнее C будет…) или привлекать профи в этой области и зарабатывать…

Dikoy:

хуже когда видишь свою поделку, продающуюся под чужим именем и за деньги

Бродя по офисам подключая инет ( увы… такой фигней приходится комиться), частенько вижу свои проги, часто официально купленные и не у меня… 😃 Но обижаться не на кого. Сам в свое время либо продал с авторскими правами или выставлял в открытых источниках…

Syberian
msv:

Почему в матрице поворота у Вас sin45 и cos45 равен 0.5?

В военное время синус 90 градусов может достигать четырех! ©

Dikoy
msv:

Без OSD, чес. говоря, не слишком впечатляет. Совершенно невозможно оценить качество стабилизации.

Ну так в чём дело? 😃 Интерфейс стандартизован, пусть кто хочет делает ОСД. Это и есть принцип открытого проекта.

msv:

Почему в матрице поворота у Вас sin45 и cos45 равен 0.5? (У меня, правда, то же… ) Надо бы было мат. обоснование сделать, а то народ не поймет…

Это где так?.. Значение синуса там фиолетово, ибо оно всё равно сокращается при делении. Ну, то есть важно лишь равенство синуса и косинуса, а число не важно.

msv:

Третий вариант - учиться маркетингу (для меня это посложнее C будет…) или привлекать профи в этой области и зарабатывать…

Не, в этой области я зарабатывать не вижу смысла. Для нужд хобби - с китайцами спорить бесполезно, они уже FMA склонировали. Для нужд БПЛА - все производители валят из РФ к чертям. Чистяков продал Грант украине, текнол ушёл в азию. Только Зала ещё что-то пытается с нефтянниками…

msv:

Но обижаться не на кого. Сам в свое время либо продал с авторскими правами или выставлял в открытых источниках…

Обидно, когда бесплатное впаривают за деньги. То есть людей обманывают. А если он переделал, улучшил и продаёт - пускай.

Кстати о качестве стабилизации. Запись крена/тангажа в ветер 6,5 м/с.

msv
Dikoy:

Это где так?.

Ой… и вправду… виноват… невнимательный… Решил, что 90град в пропорции это 180*0.5, а у Вас калибровочная дельта соответствует 90град… У меня решение более прямолинейное. Сначала считаю углы по трем точкам (для 90, 0 и -90град) в осях пирометров, потом поворачиваю на угол, заданный в конфигурации. При этом для 45град должно бы получаться:
R=0.7*S1+0.7*S2; P=0.7*S1-0.7*S2;
где R-roll, P-pitch, S1,S2- углы в осях сенсоров.
Но такой расчет завышает значения (вероятно из-за широкого угла чувствительности сенсоров) и более точно получается R=0.5(S1+S2); P=0.5(S1-S2);
Еще вопрос, для стабилизации Вы используете ПИД- регулятор? Какие постоянные времени используете для И и Д -ветви? Расчитваете ли это аналитически или подбираете оптимизируя переходную характеристику?
Я пока для своей поделки могу ориентироваться только по картинке и не могу строить графики. Но проект Graund Station продвигается, есть шанс, что на следующий сезон тоже смогу графики на ПК строить…

Dikoy
msv:

потом поворачиваю на угол, заданный в конфигурации.

Каждый раз?.. Это же дооолго…

msv:

Еще вопрос, для стабилизации Вы используете ПИД- регулятор?

Да, по углу и угл. скорости.

msv:

Какие постоянные времени используете для И и Д -ветви? Расчитваете ли это аналитически или подбираете оптимизируя переходную характеристику?

Есть метод с продувкой 3D модели, он громоздкий (а расчёт для одного самолёта уходит 2 месяца), но даёт результат сразу. Он больше “для науки”. Проще тупо полетать пару раз и подобрать. Обычно по углу получается 2, по скорости 0,5 для верхнепланов.
Стукнитесь в мыло, скину свою диссертацию под честное слово не распространять в инете. Просто пока её не утвердит ВАК, она ещё не защищена и её можно использовать в нехороших целях… Как утвердит, материалы опубликую.

msv:

есть шанс, что на следующий сезон тоже смогу графики на ПК строить…

Я их строил с “бортового самописца” 😃

msv:

Но такой расчет завышает значения (вероятно из-за широкого угла чувствительности сенсоров)

Нет. Из-за негармоничности их рабочей характеристики. Она отличается от синуса/косинуса в зависимости от конструкции датчика. Поэтому все методы - пропорциональный и тригонометрический - дают погрешности. Но с этим можно бороться 😃

9 days later
Soldir

А скока будет стоит и как приобрести данное творение (хотябы в виде мастер-кита. с электроникой дружу.) В ФПВ новичек, удовлетворило бы даже в виде Easy OSD.