Smalltim OSD and autopilot (часть 1)

baychi
slides:

Тим ! Вопрос, а планируется в меню автопилота (или на компуке) вариант быстрой настройки автопилота типа как на копилот про или у Вовы. Т.е. что-то типа визарда

Так оно и сделано, c самого начала. Только каналы жестко привязаны, без возможности переназначения.

smalltim

Мелкий пилот ушел в производство:

68x38x12мм (вместе с mini телеметрией)

  • 8 входных каналов PPM (1 из 8 - делится с телеметрией)

  • 6 выходных аппаратных каналов PPM (точность определения и выдачи входного-выходного PPM - 0.05%)

  • SPI, UART, I2C, USB

  • 2 IO общего назначения

  • 16 каналов АЦП (8 из 16 - телеметрия)

Придет с завода - чуть подправлю прошивочку/контрольную панель под большее число каналов, проверю на отсутствие косяков, и в бой 😃

slides

Резюмирую - короче после Рождества !😉
ТИМ ! Как дела с пироголовами ? Как дела с капелькой АЦПшкой для РССИ ? Они тоже идут в производство ?

baychi
smalltim:

68x38x12мм (вместе с mini телеметрией)

О! 8 входов и 6 выходов PPM - это уже совсем другой автопилот. 😃

К предыдущему вопросу… Дрожание изображения удалосьм убрать увеличением номинала входного сопротивления VI до 120-150 Ом (вместо штатных 75 Ом). Показалось странным, что на LM1881 ты подаешь сигнал прямо со входа, а не после первого видеобуфера. К сожалению, многие камеры имеют ослабленный вых сигнал (0.8-0.9 В, вместо 1), да еще тонкие длинные провода не способствуют… В общем не удивляйся, если проблеммы с синхронизацией будут и у других людей возникать.

smalltim

>Показалось странным, что на LM1881 ты подаешь сигнал прямо со входа, а не после первого видеобуфера.

Видеобуферы по сути повторители с КУ 1, так что 0.8В в 1.0 не превратят. С другой стороны, LM1881 штука умная, и от 0.8В синхру без проблем поймает, надо ей только не мешать 😃
Проблему твою я хотел по другому решить, но не дозвонился. Проблема проста: контрастные буквы с экрана камеры на входе телеметрии заставляют LMку ловить ложные синхроимпульсы.
Для их подавления на минителеметрии за LMкой давно уже стоит RC фильтр, и программный давитель стоит.
Тебе, видимо, попалась плата mini из самой первой маленькой партии, где фильтр не разведен.

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

На серийную mini пока жалоб не было 😃

>Дрожание изображения удалосьм убрать увеличением номинала входного сопротивления VI до 120-150 Ом (вместо штатных 75 Ом).

Больше 100 ом не рекомендуется: во-первых, максик рискует впасть в самовозбуждение, а во-вторых, за резистором на входе стоит конденсатор, на котором максик хранит уровень черного. Не заметил, что картинка искусственно светлее стала? 😃

smalltim

Коллеги, прошу вашей помощи в таком вот вопросе:
какие вообще бывают варианты управления самолетами с более чем 4 каналами?
Я в продвинутых самолетах не копенгаген, и фантазией у меня нынче что-то туго, больше 2 вариантов не могу придумать.
Ну, там, раздельные элероны, да шасси какие-нибудь или отдельно закрылки…
Надо подумать, чем всё это может быть полезно в полете.
В общем, теперь железка умеет рулить 6 каналами, замикшировать можно всё со всем, надо это использовать 😉

Dareck

Как вариант для планеров раздельные элероны и флапероны при нехватке элеронов пусть подруливает флопами ну на больше без раздумий пока тож туго

baychi
Dareck:

Видеобуферы по сути повторители с КУ 1, так что 0.8В в 1.0 не превратят. С другой стороны, LM1881 штука умная, и от 0.8В синхру без проблем поймает, надо ей только не мешать

КУ MAX4090 по даташиту составляет 6 дБ. Это компенсация делителя сигнала на входе, образованного 75 Ом выходным сопротивлением источника и 75 Ом нагрузкой. По рассчетам уровень сигнала на 3-й ноге должен быть 0.5 В. А у той-же LM1881 диапазон надежного захвата синхроимпульсов 0.5-2.0 В. То есть схема уже работает на границе.

Сбои синхронизации наблюдаются на обеих моих HD камерах. Раз 150 Ом много - Сегодня попробую поиграться с фильтром в цепи RST у LM-ки.

smalltim:

Коллеги, прошу вашей помощи в таком вот вопросе: какие вообще бывают варианты управления самолетами с более чем 4 каналами? Я в продвинутых самолетах не копенгаген, и фантазией у меня нынче что-то туго, больше 2 вариантов не могу придумать.

Классический пример Cularis. 5-6 независимых серв и двигатель.
Сервы элеронов работают как в противофазе - для управления по крену, так и синфазно - для включения тормозных режимов типа “бабочка”. Закрылки рабтают, в принципе, синфазно но из-за установки требуется инверсия одного из каналов. То есть, при использовании АП, нужны независимые каналы на каждую из элероновых серв. Если управлять закрылками через АП, то требуется еще как минимум 1 канал, а лучше 2, что-бы не париться с инверсией. Необходимость управления закрылками со стороны АП может возникнуть в далекой перспективе, когда будет пользовательский алгоритм и можно будет попытаться научить АП обрабатывать термики. 😉
А пока достаточно грамотно настроить FailSafe и микс закрылков с управляющем каналом АП, что-бы они не мешали АП рулить в автоматическом режиме.
Сейчас мне реально на Cularise не хватает еще одного канала АП для второго элерона. Приходится обходиться без режимов типа бабочка или извращаться с дополнительной электроникой.

Brandvik

Еще можно рассмотреть вариант самолета типа тандем. 4 сервы в крыльях+хвост+двиг.
Самик с 4мя сервами в крыле… полюбому не хватает каналов для полной независимой работы. нужно 4крыло+высота+хвост+мотор=7 Так что либо независимые флапы, либо минус хвост…

ЗЫ 😃 раз появилось аж 8 входных каналов то можно попробовать реализовать давнюю идею со сдвигом картинки телеметрии 😒 Тогда я себе точно трекер куплю 😈

ЗЗЫ А вообще, как уже было сказано выше, в перспективе кл-во каналов может быть “неограниченным” ! для этого будет достаточно собрать приставочку на шинке I2C например…

kulikof
smalltim:

Коллеги, прошу вашей помощи в таком вот вопросе:
какие вообще бывают варианты управления самолетами с более чем 4 каналами?
Я в продвинутых самолетах не копенгаген, и фантазией у меня нынче что-то туго, больше 2 вариантов не могу придумать.
Ну, там, раздельные элероны, да шасси какие-нибудь или отдельно закрылки…
Надо подумать, чем всё это может быть полезно в полете.
В общем, теперь железка умеет рулить 6 каналами, замикшировать можно всё со всем, надо это использовать 😉

тут

smalltim

Дмитрий, спасибо!

Коллеги, придумалось тут мне очень, как мне кажется, красивое, элегантное и идеологически правильное построение работы автопилота с каналами.
Хочу, чтобы вы это осмыслили и поругали/похвалили. Самому мне очень-очень нравится, хотя, думаю, америку я тут не открыл.

Рассказываю.

Работа строится на полном отказе от понятия “1й канал - элероны, 2й-РВ, и т.д.” и переходе на метафизику. Кто осилит дальнейший текст, тот молодец 😃

Вместо управления независимыми каналами автопилот будет управлять вектором состояния каналов в целом. Этот вектор состояния - набор из 6 чисел, определяющих ширину 6 PPM на выходе.

Как этот вектор будет строиться - очень просто.

  1. Сначала, перед установкой автопилота (в дальнейшем - железки), пилот должен убедиться, что его передатчик правильно настроен под его модель, со всеми там расходами, микшерами, и т.д.

  2. Потом пилот подключает железку к приемнику, не подключая пока сервы на выход, и втыкает кабель USB. Запускает калибровку передатчика в Контрольной Панели. Вываливается, как и сейчас, этакий визард, предлагающий сделать то да сё и нажать мышкой “ОК”.

  3. При калибровке я делаю следующее:

а) Запрашиваю нейтральные состояния всех ручек и запоминаю вектор нейтрального состояния PPM (6 значений PPM, захваченных в этот момент).

б) Прошу поставить минимальный газ и захватываю вектор состояния PPM в этот момент. Состояние всех каналов, и газа в том числе, и каналов, замикшированных с газом, запоминается как вектор минимального газа.

в) Прошу включить максимальный газ и захватываю вектор состояния. Всё происходит аналогично.

г) Прошу ручками передатчика накренить модель максимально вправо. Состояние вектора PPM запоминается как вектор крена вправо (элероны, элевоны, замикшированный с элеронами руддер - не важно, запоминается всё!)

г) Прошу ручками передатчика накренить модель максимально влево. Состояние вектора PPM запоминается как вектор крена влево.

д) Прошу ручками передатчика направить нос модели по максимуму вниз. Запоминаю вектор PPM как вектор минимального тангажа. Идея уже понятна? 😃

е) Прошу ручками передатчика направить нос модели по максимуму вверх. Запоминаю вектор PPM как вектор максимального тангажа. Осталось совсем чуть-чуть.

ж) Прошу включить флапероны/закрылки и т.д. Запоминаю состояние PPM по всем каналам в этот момент.

з) Прошу подвигать ручки-переключатели во все возможные положения, чтобы запомнить минимальные и максимальные значения PPM (или крайние положения серв, если так угодно).

Всё.

Дальше что? Дальше железка в режиме выключенной стабилизации/автопилота ни во что не вмешивается, но как только включается стабилизация/автопилот, железка начинает:
а) в режиме стабилизации 1 - подмешивать ко входному PPM векторы минимального/максимального крена/тангажа с множителями, определяемыми параметрами ПИД контроллера и настройками режима стабилизации 1
б) в режиме стабилизации 2 - генерировать векторы минимального/максимального крена/тангажа с множителями, определяемыми параметрами ПИД контроллера и настройками режима стабилизации 2

в) в режиме автопилота - генерировать векторы минимального/максимального крена/тангажа с множителями, определяемыми параметрами ПИД контроллера и настройками навигации

Какие недостатки?

Побольше математики и побольше данных в памяти железки. Некритично.

Какие преимущества?

  • Полный отказ от выбора типа модели, настроек управляющих плоскостей и всевозможных микшеров в Контрольной Панели. Железке скармливаются при калибровке уже отмикшированные передатчиком вектора, и она генерирует PPM точно так же, как делал бы пилот, пользуясь передатчиком.
  • Отказ от привязке к каналам. Удобно пилоту повесить газ на канал 1, первый элерон на канал 2, второй на канал 3, шасси на канал 4, а руддер на 5й - да пожалуйста. Железка сделает точно то же. 😃
    Вставил пилот железку в летающее крыло, включил в передатчике режим элевонов? Замечательно. Железка сделает точно так же 😃

Единственное, что требуется - подавая железке что-то на входной канал номер Х, извольте подключить серву с выхода под тем же номером Х.

Ну, а 7 и 8 каналы останутся тем, чем были - просто управляющие каналы.

Что скажете?

Добавление:
И, это… Микшер “всё со всем”, всё равно надо будет сделать - вдруг пригодится? 😃

И еще. В каких режимах автономного полета (кроме посадки) железке могут понадобиться флапероны/закрылки? Я что-то не могу придумать.

mishaXXyears

+1 идея хороша и более проста в реализации! и думаю что это будет более простое и элегантное решение!

И еще. В каких режимах автономного полета (кроме посадки) железке могут понадобиться флапероны/закрылки? Я что-то не могу придумать.

  • добавлю от себя по автопилоту (пример использования флаперонов и закрылок):
    при FS и критическом разряде батареи не пытаться гнать его домой, а скажем заглушить мотор, врубить флапероны. закрылки и т.д. и дать небольшой крен, что обеспечит более мягкую посадку при вырубании питалова. Но эти настройки определит пользовалеть и данная функция может быть отрублена принудительно!
baychi

Идея красивая. Но:

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

И еще. Почему ты уверен, что описание системы управления исчерпывается линейными, либо дифференциальными уравнениями? И в данном частном случае - матрицой коэфиициентов данных уравнений? Я - больше склонен к процедурным решениям. 😃

Хотя идея, конечно, очень-очень красивая…

smalltim:

Микшер “всё со всем”, всё равно надо будет сделать - вдруг пригодится?

Это - точно пригодится. По крайней мере, любая солидная аппа РУ имеет такой микшер.

smalltim

>Идея красивая. Но

  1. Железка и так имеет много упрощений, самое очевидное из которых, например, - отсутствие экспонент и прочих нелинейностей. Это неизбежно и это не обсуждается. Эспонент в ближайшем будущем не будет.
    Железка так или иначе генерит линейную комбинацию векторов, просто раньше в векторах везде кроме соответствующего канала стояли нули, а сейчас могут быть не нули.

  2. Для адекватного управления моделью мне достаточно, чтобы вектора состояний мин/макс тангажа, крена и газа были максимально ортогональными в пространстве PPM каналов. Т.е., скалярное произведение любых двух должно быть близко к нулю. Если не ноль - значит есть какие-то перекрестные связи. Если совсем не ноль - значит, такой моделью и с передатчика невозможно управлять. По моему небогатому опыту, нет моделей самолетов, которые не удовлетворяют описанному выше условию ортогональности.

Единственный минус, какой мне сейчас с ходу видится - необходимость решать систему линейных уравнений для нахождения требуемых углов крена и тангажа из входного вектора PPM в режиме стабилизации 2. Ну да что-нибудь придумаем.

А закрылки - просто отдельный вектор, как раз, не ортогональный вектору крена, и управление закрылками, кстати, в обычном полете, наверное, не используется. Потому я и задавал вопрос: а когда, кроме посадки, оно надо?

baychi
smalltim:

В каких режимах автономного полета (кроме посадки) железке могут понадобиться флапероны/закрылки?

В критических режимах, при удержании скорости на пределе сваливания, например.

smalltim:

Для адекватного управления моделью мне достаточно, чтобы вектора состояний мин/макс тангажа, крена и газа были максимально ортогональными в пространстве PPM каналов. Т.е., скалярное произведение любых двух должно быть близко к нулю. Если не ноль - значит есть какие-то перекрестные связи. Если совсем не ноль - значит, такой моделью и с передатчика невозможно управлять.

По моему, это тема для диссертации, а не для форума.
Как аппонетнт, по себе сужу: построить мат.модель управления и доказать ее непротиворечивость, или обратное - не возмусь. Максимум на что способен, - подставить под сомнение предложенный функционал. Да и то, после Дня Энергетика, много ли я помню математики? 😃

smalltim:

отсутствие экспонент и прочих нелинейностей.

А как-же ПИД- коэффициенты? Дифуры тоже в первом приближении апроксимируются степенными многочленами 2-3 порядка…

smalltim
baychi:

В критических режимах, при удержании скорости на пределе сваливания, например.

Ага, ну вот оно и попалось: просим в Контрольной Панели ввести значения бароскорости s и S для максимального и минимального отклонения флаперонов/закрылков. И делаем следующее:

  1. если скорость меньше s, то отклоняем максимально
  2. если скорость между s и S, то отклоняем пропорционально положению между s и S
  3. если скорость больше S, то не отклоняем.

Дополнение: тут приходят вопросы:

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

  2. Что будет с триммированием в полете?
    Если железка не работает в режиме стабилизации/автопилота, то на триммирование она вообще не влияет. Как хотите, так и триммируйте.
    Если железка работает в режиме стабилизации 1, то как хотите, так и триммируйте.
    Если железка работает в режиме стабилизации 2, то триммирование правой ручки будет менять требуемые углы крена и тангажа, и двигаться будут все управляющие плоскости, замикшированные при калибровке с передатчика.
    Если железка работает в режиме автопилота, то триммирование отправляется лесом железка сама генерит PPM, не глядя на то, что приходит с приемника.

kulikof

Тим, текущее время выведи плз. ну и будильник надеюсь то же имеет право на жинь.

// жаль звука нет в osd

smalltim

// жаль звука нет в osd

У железки есть 2 ноги общего назначения, пищание и хрипы можно без проблем выводить в звуковой канал. Всё что нужно - 5 строк в прошивке, знать, чего настраивать в Контрольной Панели и проводок в аудиоканал передатчика.

Djmork

А будут всякие варнинги по касчеству сигнала, разряде батареи, по определеной высоте и т.п.? Чтобы начинанал помаргивать соответсвующий индикатор, тогда можно было бы сделать чтоб еще и попискивал

Brandvik

Мысли интересные, только вот никак в толк не возьму зачем автопилоту правлять закрылками/флапами? Они либо включены, либо нет. Мы же тут не бортовую электронику для СУ 30 разрабатываем, которая управляет предкрылками/ закрылками и пилот о них даже не задумывается 😃
Единственное что я могу предложить, что бы автопилот вмешивался в управление закрылками/флапами/тормозами- это превышение максимальной скорости при большом угле тангажа на пикирование. И тогда он должен врубать все, чем самик может тормозить…

smalltim

>А будут всякие варнинги по касчеству сигнала, разряде батареи, по определеной высоте и т.п.? Чтобы начинанал помаргивать соответсвующий индикатор, тогда можно было бы сделать чтоб еще и попискивал

Да.