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

alexeykozin
SergejK:

Может как раз с этим связаны осцилляции? Всетаки при резком оттормаживании углы меняются очень сильно.

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

SergejK

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

SergDoc

Что-то мне подсказывает, что я щас возьму всё по@ерю и начну проект с нуля - задолбало в чужой код вклинивать свои задумки, а потом мужественно искать тот-же барометр 😦
если честно пугают 2 вещи:
станция - вообще не представляю как это рисовать и общаться потом с ней
модули и драйвера - нарисовать не проблема, а как их “зацепить” и контролировать - х.з. я тут намедни hardfault поймал с SPI - наверно неделю не мог догнать, что нога cs2 = 1 не существует, есть cs1 = 0 компилятор пропустил я в отладке дооолго не мог понять что за порт у меня такой - вот такой из меня программер))) а всё потому что spi и датчики в одном файле, а процедура общения с ними в другом… короче надоело…
ладно за зиму что-нибудь накорякаю, блин да ещё под 2 железяки - ну эт не страшно обе помню, если других проблем не будет, надо ж как-то арду допиливать, а я совсем в другую степь пошел…

SergejK:

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

не ну вроде ж так все и делают)))

alexeykozin
SergDoc:

Что-то мне подсказывает, что я щас возьму всё по@ерю и начну проект с нуля - задолбало в чужой код вклинивать свои задумки, а потом мужественно искать тот-же барометр

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

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:

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

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