Создание собственной системы стабилизации

SergDoc

глаза боятся, а руки - крюки))) мне очень многое не нравится в известных мне проектах ( и как правило - это так глубоко всё завязано, что менять - руки опускаются… это как и с домом - купить или строить, вот купил, а щас понимаю, что лучше было строить… я столько переделал и понимаю, что стою до сих пор в начале пути, что надо перепланировать ещё половину дома (половину я переделал) и достроить отдельную кухню, а существующую превратить в прихожую - Макс был у меня в гостях, может подтвердить что кухня - не кухня)))

alexeykozin
SergDoc:

это как и с домом - купить или строить, вот купил, а щас понимаю, что лучше было строить… я столько переделал и понимаю, что стою до сих пор в начале пути, что надо перепланировать ещё половину дома (половину я переделал) и достроить отдельную кухню, а существующую превратить в прихожую - Макс был у меня в гостях, может подтвердить что кухня - не кухня)))

это тоже проходили… анализируя чужой опыт решили сразу строить…
вот что получилось my.mail.ru/mail/kozinanatoliy/photo/138
я папе посылал эскизы - он мне обмеры и руководил там.
зы прошу прощенья за отклонение от темы

rual
alexeykozin:

зы прошу прощенья за отклонение от темы

Тоже немного отклонюсь )) Как человек мало в чем искушенный (особо в строительстве), удивлен, что сначала ставили декоративную стену, а потом внутри обкладывали пеноблоком. Дом отличный получился!

Теперь, как обещал Алексею, выложу наработки по “виртуальной лаборатории”. Вот так я это назвал )))
Вот демка, прошу прощение за качество, снято авторегистратором

для связи АП с симом использовал “прокладку” на Питоне.
Если кому интересно может сам запустить на STM32F4Discovery или F4BY. Спрашивайте, расскажу как запустить. Полётник подключается к компу через порт GPS, визуализация (тоже написанная на питоне) соединяется через USB или модемный порт. Приемник подключается по SBUS или SPPM. Прошива и питоновские скрипты в архиве.

Облако (2).zip

SergDoc
alexeykozin:

это тоже проходили… анализируя чужой опыт решили сразу строить…

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

rual

Контроллер получает от сима угловые скорости и вектор ускорения (аксель), углы с сима используются только для формирования вектора магнитометра. По сути эмулируется плная работа ИНС. На видео управление самолем чисто коптерным ПО, естественно работает только режим угловой стабилизации, но даже этот режим позволяет управлять самолем по коптерному, на видео я задаю курс ВПП и просто подруливаю тангажем и креном, одним пальцем. Достаточно задать положение в пространстве и газ, самолет постарается занять указанную ориентацию в пространстве. Там где смоль выполняет спираль, я кручу задачу курса, если сделать это быстрее чем отработает эроплан, то он может выполнить полупетлю вверх или вниз, куда ему ближе. “Погоня за морковкой”))) Сейчас вот думаю как скрестить коптерный АП с самолетным, отдельно друг от друга (как в АРДУ) я их не рассматриваю. Видимые проблемы: раскачка на высоких скоростях, ну дописывание АП для управления аэродинамическим ЛА. Первая - нужно ввести в ПИД воздушную скорость, я так понимаю как квадратичный коэффициент; вторая - по большому счету нужно только поворачивать задающий вектор в сторону целевой точки.

HikeR
rual:

Контроллер получает от сима

никак не опознать используемый симулятор, поделитесь названием?

rual:

как скрестить коптерный АП с самолетным

имхо, у вас основная ошибка — разделять АП по модельному признаку. вспоминая Openpilot, один и тот же АП используется для коптеров, самолетов, машинок и даже двухколесных моделей (которые статически неустойчивы). разница лишь в задействованных микшерах.

alexeykozin
rual:

Теперь, как обещал Алексею, выложу наработки по “виртуальной лаборатории”. Вот так я это назвал )))

это супер!
в самом деле это супер инструмент когда есть сим, ускоряет процесс на несколько порядков.
еще со времен ардупилота на 328 меге изучал ардупилот именно с xplane
потом появился апм и в мишен планере появилась возможность соединять контроллер и симулятор прямо по юсб
с использованием mission planner
но билд “hil” (hardware in loop) работал только с совсем редкими самолетными прошивами.
была мечта изучить поведение коптера и даже модель квадрика нашлась для иксплейна но заставить квадрик летать так и не смог.
после многих попыток он таки стал стабилизироваться но ни высоту не держал ни делал адекватных попыток пройти маршрут.
видимо нужные ардукоптеру значения акселей и компаса кудато нетуда шли

rual:

или F4BY. Спрашивайте, расскажу как запустить

это интересно.
но если это писать в этой ветке то инфа которая может понадобиться многим может потеряться
как минимум надо веточку начать

HikeR:

имхо, у вас основная ошибка — разделять АП по модельному признаку. вспоминая Openpilot, один и тот же АП используется для коптеров, самолетов, машинок и даже двухколесных моделей (которые статически неустойчивы). разница лишь в задействованных микшерах.

миксами получится УГ
хороший автопилот использует физику модели

SergDoc
rual:

или F4BY

да только кто попробовать захочет слейте и сохраните лодырь на всякий, ну или заранее предупредите…

rual
HikeR:

никак не опознать используемый симулятор, поделитесь названием?

ХPlane 10 , арду тоже его пользует. Спасибо Алексею Козину за предоставленные материалы по АРДУ.

HikeR:

у вас основная ошибка — разделять АП по модельному признаку.

)) У меня нет такой ошибки, коптер и самоль отличаются по принципам управления, хотя и не критично. Собствнно я этим и воспользовался на сегодня - работа углового стаба вполне адекватна. Только не хватает коэффициента эффективности аэрорулей. А вот возврат домой уже требует различий в алго…

HikeR
alexeykozin:

миксами получится УГ

хороший АП принимает на вход фактическое и желаемое положение (направление/координаты/…) модели, а выдает только ошибку между этими параметрами. УГ — это использование “физики модели” в несвойственных задаче расчетах.

rual:

ХPlane 10

ох, ну и здоровенный же “микроскоп” для такой задачи 😉 AeroSim RC не желаете попробовать? размер и тех. требования намного более скромные, набор данных включает все что душеньке угодно. единственное ограничение у него заключается в частоте обновления 60 Гц (т. е. зависит от монитора).

alexeykozin
HikeR:

хороший АП принимает на вход фактическое и желаемое положение (направление/координаты/…) модели, а выдает только ошибку между этими параметрами. УГ — это использование “физики модели” в несвойственных задаче расчетах.

объясню вкратце чем разница.
вверх у коптера это +газ в случаях если на стабилизацию хватает мощности
вверх у самолета это рв на себя при условии что достаточно ВОЗДУШНОЙ скорости а газ должен контролировать воздушную скорость
повернуть у коптера - наклониться в нужную сторону
повернуть у самолета в зависимости от типа модели - можно на руле направления, можно на крене, можно на крене + рв на себя, можно на крене + рв + руддер
к примеру нужен маневр влево и вниз - коптер сбросил газ и дал крен.
для многих самолей это сложный маневр. при левом крене (для левого поворота) и руле высоты (от себя) очень многие модели совершают снижение и правый поворот
у самолета есть режим планирования, у коптера нельзя вырубать моторы (у некоторых моделей они не раскрутятся) самолету при наличии аирспида свойственен режим полета в котором он может определить курс не имея компаса, коптер этого не умеет (хотя будем учить)
если делать универсальный код который будет использовать только миксы то он будет настолько сложный и в разработке и в чтении и настройке что будет неприменим

rual
alexeykozin:

в самом деле это супер инструмент когда есть сим, ускоряет процесс на несколько порядков.

Вот именно, как я раньше этого не знал, сколько денег бы с экономил!!!)))

alexeykozin:

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

Вот я пару лет назад искал хотя бы генератор NMEA (эмулятор ГНСС), чтоб отлаживать навигацию, а тут такие возможности были… всё мимо проходил ((( я тоже нашел модель коптера, но она для 9го хэплана, в 10м неадекватна, даже отображается криво. Правда в нём имеется мегакоптер (конвертоплан), его можно использовать, но он настолько инертный, что я с наскоку так и не смог его запустить, надо пиды сильно править.

alexeykozin:

но если это писать в этой ветке то инфа которая может понадобиться многим может потеряться
как минимум надо веточку начать

Отдельная ветка это слишком, пмсм, писать буду здесь, последнее время ветка практически незагружена, потом соберу в дневник…

alexeykozin:

миксами получится УГ

Да нет, у меня вот всё миксами сделано. Но вертикалы от аэродинамиков, таки да, отличаются…

alexeykozin:

хороший автопилот использует физику модели

Поэтому нужно сделать “умные” миксы ) Пока вижу такой примитив: сделать два класса рулей, тяговые и аэро.

HikeR:

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

а что мелочится, у меня Б777 так же летает, как РУ модель, только ПИДы надо поправить )))

HikeR:

единственное ограничение у него заключается в частоте обновления 60 Гц (т. е. зависит от монитора).

У меня реально обновление до 50 Гц не дотягивает, обычно 25-35…

HikeR:

AeroSim RC не желаете попробовать?

Вся проблема в том что я дремучий человек, 4 года этим занимаюсь и только сейчас узнал, что хплан несложно связать с АП, вот помогли люди - разобрался ) О AeroSim RC я даже не слышал )

alexeykozin
rual:

Пока вижу такой примитив: сделать два класса рулей, тяговые и аэро.

это слишком примитивно.
у коптера факторы только для каждого вмг

  • яв фактор по часовой или против
  • рол фактор влияние на крен
  • питч фатор влияние на пикирование
    если будут тяговые моторы то еще форвард фактор для всех моторов

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

рулевые плоскости
-изменение отклонения вызывает изменение силы воздействющей на один из факторов, сила зависит не только от угла отклонения но и от обдува но не линейно.
обдув это не только воздушная скорость но и обдув потоками с винтов

HikeR
alexeykozin:

объясню вкратце чем разница.

вы объясняете разницу между оконечными микшерами и актуаторами, а тема автопилота совершенно не раскрыта.

[off]впрочем, также поступает подавляющее большинство производителей и (не в обиду) прочих клепателей очередных АП. чтобы переставить железку с коптера на самолет, нужно купить новую железку или залить новую прошивку, а то и вовсе остаться ни с чем, ибо у коптера “газ это верх”, видите-ли.
а в (уже) древнем Openpilot-е и его последователях нужно просто переключить/перенастроить микшеры и ставить железку хоть на велосипед с мотором.[/off]

rual
alexeykozin:

объясню вкратце чем разница.
и т.д.

вот эти вещи я и хочу описать в “умных миксах”. Вот приведу пример отличия PT-60 (сесна?) от боинга777 в хплне:

  1. Инертная масса - надо править ПИДы и ничего более;
  2. Рудер: у ПТ60 практически не рулит, посему добавил рассогласование курса в элероны - отлично работает (см. видео).
    у Б777 огромный киль, при сильном рулении валит эроплан набок. Что делать? Соответственно из элеронов убран курс, а в рудер с минусом добавлен крен.
HikeR
rual:

О AeroSim RC я даже не слышал )

а я им вроде бы даже в этой ветке когда-то хвастался (железный CC подключен через GSC к симу) 😉

на то время это был единственный модельный симулятор с поддержкой плагинов (то есть полным доступом ко всей внутрянке). пробовали использовать X-Plane, Flightgear и даже Ил-2, но боинги и цессны все-таки имеют другие масштабы. с подачи OP-сообщества пробовали пинать разработчиков Aerofly, RealFlight, Phoenix RC и прочих ClearView, но откликнулся только разработчик Аэросима. причем не только откликнулся, но и добавил много чего по просьбам трудящихся.

принцип там такой же, как у X-Plane, dll-ка имеет доступ к нужным параметрам и большинство из них может изменять. самое сложное — перенастроить модель в самом симуляторе, чтобы отключить все встроенные помогайки и оставить только прямое управление моторами/плоскостями.

p.s.
а, киллер-фичу забыл: в Аэросиме можно рулить стабилизированой бортовой камерой (время 4:30 в вышеуказанном видео).

rual
alexeykozin:

это слишком примитивно.
у коптера факторы только для каждого вмг

  • яв фактор по часовой или против
  • рол фактор влияние на крен
  • питч фатор влияние на пикирование
    если будут тяговые моторы то еще форвард фактор для всех моторов

Всё это есть, для коптера на любую конфигурацию можно настроить, моторы хоть в шахматном порядке (см. картинку).

HikeR:

а, киллер-фичу забыл: в Аэросиме можно рулить (стабилизированой) бортовой камерой

Это классно, но для испытаний АП не особо нужно. Вот если б полная иммитация механики (энерции, вибрации) подвеса, то можно бы было ПО для стабов подвесов пробовать )

alexeykozin:

рулевые плоскости
-изменение отклонения вызывает изменение силы воздействющей на один из факторов, сила зависит не только от угла отклонения но и от обдува но не линейно.
обдув это не только воздушная скорость но и обдув потоками с винтов

Вот всё кино исключительно в том, что нелинейно. Иначе бы я просто доп измерение в микс добавил - аэро. А тяга там и так есть, ставь соответсвующий коэффициент и всё. Поэтому надо придумать мин и дост набор примитивов для описания и ввода нелинейностей

HikeR
rual:

Вот если б полная иммитация механики (энерции, вибрации) подвеса

хех, это уже отдельный симулятор выйдет.

rual:

Вот всё кино исключительно в том, что нелинейно.

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

сошлюсь опять на свое видео, 2:25 — влияние турбулентностей. включил ветер, добавил ему “неспокойности”, модель с теми же самыми миксами и ПИД-ами продолжает выдерживать положение и направление. несмотря на кособокий полет.

rual
HikeR:

а какая, по большому счету, разница?

Разница есть, см. мое видео 1:18 и 1:44, при высокой скорости эффективность рулей резко растет и начинается раскачка. Более того раскачка может начаться сама по себе при закритичной скорости. Так что приборную скорость нужно отслежтвать и менять коэффициенты.
Хплан очень хорошо отрабатывает физику (жесткость, упругость, кручение), твой же сим видимо вообще этим не заморочен. Не в обиду, но мне кажется эти фактры стоит учитывать.

HikeR

раскачка есть следствие малой и нестабильной частоты опроса “датчиков”, а любой цифровой ПИД-регулятор чрезвычайно критичен к этим цифрам. железки худо-бедно работают на сотнях герц, дорогущие коммерческие модельные IMU уже на килогерцах, а у вас “обычно 25-35”. тяжелым и инертным боингом рулить можно, отлаживать работу автопилота по маршрутным точкам тоже кое-как можно. а посмотреть, как железка справится с реактивной моделькой — уже нет.

у Аэросим-а та же беда, либо ограничиваем опрос до 60-75-120 Гц вертикальной синхронизацией, либо отключаем ее и получаем 300-400 Гц (сим-то к компьютеру не требовательный) и гарантированный затык в любом внешнем протоколе обмена. но 60 всяко лучше, чем 30.

по поводу жесткости и прочего. X-Plane еще и профиль плоскостей и форму фюзеляжа учитывает (модель табуретки может и не полететь, в отличии от MFS), но только с таким шагом, что в промежутках поместится несколько коптеров. XP технически неспособен проводить симуляцию моделей малых размеров, любые попытки это сделать вынуждены натыкаться на масштабирование и/или ускорение внутреннего времени.

а “мой” сим довольно честно имитирует (как и остальные модельные симы) поведение мотора с винтом, к которому присобачены плоскости с выбранным профилем либо другие моторы в виде абсолютно жесткого тела. ибо никто не запаривается тем, что у тридцатисантиметрового коптера при резком газе лучи смещаются на доли миллиметра. зато имеется настройка скорости и отклика для сервоприводов, учитывается масса ротора (для симуляции обратного момента), есть учет изменяемого в полете топлива (смещение ЦТ) и падение напряжения (мощности) на аккумуляторах и еще кучка именно модельных параметров.

SergejK

Возвращаясь к истокам беседы, мне вот интересно, как в симуляторе отладить с нуля писаную ИНС?