Симулятор для автопилота SmallTim

Llirik

Y- “подъемная” сила, Х - сила лобового сопротивления элемента лопасти, отстоящего на r от оси. . Х направлен по скорости потока воздуха (с системе координат данного элемента. Cx, Cy - аэродинамические коэффициенты (функции от угла атаки). У них не может быть проекции.
А по поводу недостающих проекций, я же подписал вдогонку, что

Единственно только для тяги забыл у-ковую оставляющую Х-а отнять, а для крутящего момента х-овую составляющую Y-ка прибавить. Но не суть важно (в голове добавить можно)

и что угол атаки:

Горе я математик!.. Угол таки немного не совсем тот арктангенс, а arctg(H/(2*Pi*r)-arctg(Vm/(r*w)… Спешка, однако…

Frr:

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

Само собой меняется… Эт даже на картинке нарисовал arctg(H/(2*Pi*r) - угол установки. Чем больше радиус элемента - тем меньше угол установки, но соблюдается шаг.

Frr
Llirik:

Cx, Cy - аэродинамические коэффициенты (функции от угла атаки). У них не может быть проекции.

“Cx*…” - там еще “умножить на и т.д.”, это сила вдоль потока.

Llirik:

А по поводу недостающих проекций, я же подписал вдогонку, что …

Тогда все ОК.
То, что ниже гориз.черты на рисунке - подходит для неподвижно висящего квадрика со специфическим винтом (хорда лопасти растет с радиусом). Имеет право быть, почему бы нет 😃

Llirik
Frr:

“Cx*…” - там еще “умножить на и т.д.”

и т.д. - это площадь*плотность*(скорость)^2, то есть все то, что в интеграле…

Frr:

То, что ниже гориз.черты на рисунке - подходит для неподвижно висящего квадрика со специфическим винтом (хорда лопасти растет с радиусом)

Ну я же написал, что “без набегающего потока”, т.е. статика…
А вот хорда не какая то именно специфическая , а произвольная L®. За исключением последнего предположения…

Frr
Llirik:

За исключением последнего предположения…

Да. Там бы еще учесть, что сила “Cx*…” всегда больше нуля (проекция на X), при любых углах атаки.
И, заодно, что “скорость протекания” не совсем вдоль y, поток закручен, “закрученность” определяется из момента.

Llirik

Сх у меня всега больше нуля… Я ж специально функции Сх и Су показал, чтобы было понятно что это за коэффициенты (пока приближенно тригонометрическими функциями задал)… Я все прикидываю как лучше их задавать (для разных элементов разные), поэтому в этих функциях и ввел Case. “n” - это будут тип профиля.
Если уж развивать тему, то можете помозговать и помочь. Я когда начал писать сим, сделал набросок редактора аэродинамических коэффициентов. Прикрепляю. Если есть желание, то можете посоздавать свои профили и выложить сюда для обсуждения (достаточно файл.polar).
Суть в следующем - это Cx, Су, и фокус профиля, параметризованные кубическими сплайнами. Можно подогнать их (двигая за кружочки) под желаемый профиль и сохранить.
А я в будущем подтяну в симе выбор профиля.
Соответственно для винтов тоже самое.

Prof.rar

Frr

> Сх у меня всега больше нуля… Я ж специально функции Сх и Су показал, чтобы было понятно что это за коэффициенты (пока
При некоторых режимах (соотношение скорости полета и оборотов) угол атаки “a” в формуле с картинки : Cx(a)=10*Kx*a, будет отрицательный для части лопасти.
И “здравствуй вечный двигатель” 😃

Llirik

😃 Так Вы все на скан смотрите?!
Ну во-первых, я там подписал, что это для режима без набегающено потока, посему нет такой скорости …
Ну а во-вторых (мой косяк на скане), конечно же модуль. А вот если посмотрите в пост 32, то уведите, что Cx всегда положителен (никогда не ноль), а сила лобового сопротивления всегда направлена в направлении скорости воздуха, пропорциональна этой самой Сх, плотности, площади и квадрату скорости. Следовательно с вечным двигателем поздороваться не суждено…

Frr
Llirik:

А вот если посмотрите в пост 32

Наверно надо смотреть сюда: r:=(1.1-cos(2*a)). Тогда ОК.
(иногда пишут так: Kx0+Kx1*(1-cos(2*a))+… )

Llirik

Как раз сюда! Одной десятой как раз и задал лобовое сопротивление при нулевом угле атаки (“на вскидку от фонаря”, пока не прописал коэффициенты путево).

serj
Llirik:

Кстати, по поводу набора оборотов.
Нужна физикоматематическая зависимость канал -> регулятор -> обороты.

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

Выход вижу только в задании характеристик регулятора. Какие будут предложения?

Вы совершенно правы, мы юзаем именно двигатели постоянного тока. то что коммутатор у них электронный- это очень хорошо для моделирования- можно потери в нем не учитывать. И они очень линейны, особенно на тех токах ( 20-30% от максимума) что летают квадрики- там еще далеко до эффектов значительного падения момента… Вот только некоторые регули имеют квадратичную характеристику для более комфортного управления самолетами, но большинство народу, думаю, на квадриках ставят регули с линейной характеристикой.

Llirik

Решил не наводить путаницу в прогах (пока не совмещать самолет и коптер), т.ч. ради эксперимента расширил немного выложенный “винт” до коптера.
Сделал миксы как рекомендовали выше.
Крутящий момент, создаваемый моторчиком пропорционален сигналу на “регуль”.
Никаких моментов двигатель больше не дает, т.ч. выбег мотора свободный…
Реальный пульт не подтягивал, т.ч. пока юзанье только ползунками.

По поводу миксов:
Меняйте количество моторчиков и настраивайте миксы. Но лучше выложите стандартные миксы для 3,4,5,6,7… и т.д -коптеров. Подтяну…

Вопрос по сопротивлению (всего коптера) вращению (физический принцип) хотелось бы обсудить. Какие эффекты присутствуют? Я на коптерах ни разу не летал, т.ч. даже не представляю как они себя ведут… А пока непонятка сделал галочку “исскуственное замедление”…

Собратья по хобби, чтож Вы критикой самолетного сима не жалуете? Хотелось бы доделать и приступать непосредственно к автопилоту…

Коптер.rar

smalltim
Llirik:

Собратья по хобби, чтож Вы критикой самолетного сима не жалуете? Хотелось бы доделать и приступать непосредственно к автопилоту…

Кирилл, вот доберусь до дома и покритикую, не помилую 😃 Пока - не могу, даже рарчик не качаю.

AlexSneg

Не боИсь, усё мы смотрим и держим руку на пульсе 😃 Лично я жду реальной возможности сунуться в программные интерфейсы. Кстати, хотелось бы внести еще небольшую хотелку, чтобы ты в уме ее держал, когда дело до реализации программных интерфейсов дойдет. Неплохо бы пару опций, намеренно искажающих горизонт от реального при трансляции информации в АП. Ну в разумных пределах конечно, по крену и тангажу.

Llirik

Эт само собой!.. Погрешность СИ, время отклика, всякие там механические люфты и прочие “ореалистичивающие” эффекты можно добавлять скок угодно (все от полета фантазии зависит). Намеренно ничего не ввожу, дабы отработать идеальное поведение. Иначе за паразитными глюками можно будет не заметить каких то принципиальных ошибок…
Основным сейчас моментом является определиться с базовой аэродинамикой. Я выложил прогрммульку по конфигурации коэффициентов (пост 50). Прошу всетаки посмотреть и дать свое видение их поведения для различных профилей (например, для ская и других популярных FPV моделей, заднего оперения (для упрощенки плоская пластина), разных типов пропеллеров…)
От их адекватности очень сильно будет зависеть реалистичность поведения всей модели…

Как уже написал, пока сделал грубо приближенно тригонометрическими функциями… Это грубо-характерное приближение…

Llirik

Для более понимаемой ориентации в происходящем добавил к отображению коптера фон. Серые кружочки жестко привязаны к воздуху. Единственно только, масштаб фиксированный для отображения (под параметр “точек/метр”=50). Пробовал с реальным масштабом, но на больших скоростях “обман зрения” возникает (не знаю как правильно называется эффект подобный съемки вращающихся тел, когда частота кадров кратна частоте вращения). Тут то же самое, только по перемещению… Но не суть важно… Считайте, что если “точек/метр”>50, то кружочки располагаются вдали от модели, а при “точек/метр”<50? то ближе…

Коптер_rev2.rar

10 days later
Llirik

Уф… Подкосили меня местные уральские морозы под самый корешок!.. Провалялся в трупообразном состоянии (с температурой 38…40) всю неделю!.. Не ел, не курил, не вставал, не думал… Только антибиотики килограммами пожирал… Соответственно и подвижек никаких не было…

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

В общем самые обычные независимые контуры (ПИД). Газ в режиме СТ работает следующим образом: Положение стика - это задание регулятору скорости (ПИ) от Vmin до Vmax (в настройках стабилизации). Решил сделать так во-первых для того, чтобы не терялась робастность, а во-вторых, чтобы при наборе высоты ненароком не подвесить модель…

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

Добавил набросок автонастройки, пока не автономный, другими словами перед автонастройкой надо в штиль дать модели “успокоиться”. Завершение вручную (дать хотя бы пол минутки понастраиваться).

Коптер удалять?! А то вроде бы просили сделать, а никаких советов по поведению не даете! Еще раз оговорюсь - я на коптерах не летал и как они себя ведут не представляю… Если надо интерфейс для обмена организовать, то какие именно параметры в каком виде и на какой запрос передавать? У меня все в real (float по Сишному) все единицы системе СИ. Всякие там км/ч с градусами для простоты понимания отображаю…😃

Автовозврат (АВ) пока не делал, т.ч в него пока не тычте! 😒

24-12-12.rar

AlexSneg
Llirik:

Если надо интерфейс для обмена организовать, то какие именно параметры в каком виде и на какой запрос передавать? У меня все в real (float по Сишному) все единицы системе СИ. Всякие там км/ч с градусами для простоты понимания отображаю…

float это 4 байта. Вот их в чистом виде и можно гнать на выход. Меня флоат устраивает полностью, Олега, думаю, тоже. Тима - не факт, что устроит в меге с флоатами хужее.

Гнать на выход нужно:

  • маркер начала пакета (2байта)
  • длина пакета (1 байт)
  • крен
  • тангаж
  • рыск
  • скорость по земле
  • скорость по ветру
  • высота по барометру
  • широта
  • долгота
  • курс по ГПС
  • CRC32 (2 байта)

От нас пакет с каналами (я думаю по 2 байта на канал, значение длины импульса 1000мс - 2000мс, середина 1500мс):

  • маркер начала пакета (2 байта)
  • длина пакета (1 байт)
  • джой крена
  • джой тангажа
  • джой курса
  • джой газа
  • сервисный канал (тут надо договориться, что будем передавать, либо на будущее зарезервировать)
  • CRC32

Передавать FS я думаю смысла вообще никакого нет.

Llirik

Обманул!.. Real в дельфи - это double в C#… Тобишь 8 байт. Конечно нафиг такая точность не нужна, и все же, как нам лучше “совместиться”?

AlexSneg

вычисленное значение делфы real умножить на 100 и засунуть в integer (4 байта)

Llirik

Для угловых скоростей, к примеру (если гира на модели стоит), хреновенькая точность будет…

AlexSneg

Ну точность ты на своей стороне загрубишь. Надо настройку какую-нибудь сделать на эту тему.
Реальность сейчас снимать с IMU углы с точностью не менее 0,5 градусов. Точность по высоте 0,5 метра. Ну про ГПС, ты и сам знаешь.
Для универсальности и тупого однообразия предлагаю все же умножать float на 100 и откидывать все, что после точки.