0,1
рейтинг
20 июня 2013 в 11:31

Я делаю свой квадрокоптер. Часть 1. Уравнения динамики

Оглавление


1. Уравнения динамики

Введение




Давным-давно я написал следующий комментарий: Всё.
После такой новости сажусь делать свой квадрокоптер. А то вон все делают, а я нет.
Не, ну а что.
Всегда хотел, чтобы у меня была какая-нибудь летающая штука. Были 2 вертолета радиоуправляемых. Но кончилось это плохо.
Я решил делать свой квадрокоптер. Как это кончится — посмотрим. Я не буду использовать какие-либо готовые полетные контроллеры, все запрограммирую самостоятельно. И постараюсь этот процесс описать в цикле статей. Сейчас представляю вашему вниманию первую часть. В ней будет бегло показано то, какие уравнения динамики скрываются внутри квадрокоптера.
Итак, поехали.



1. Вывод уравнений движения



Ориентация квадрокоптера в пространстве задается тремя углами: рысканья — ψ, тангажа — θ, крена — φ.
Они вместе составляют вектор
.
Позиция устройства в инерциальной система отсчета задается радиус-вектором
.
Матрица перехода из системы координат квадрокоптера в инерциальную систему координат имеет следующий вид

Сила тяги, производимая каждым из четырех двигателей равна

Здесь ωi− угловая скорость двигателя, а b – коэффициент пропорциональности.
Теперь мы можем записать дифференциальное уравнение, описывающее ускорение квадрокоптера по вертикальной оси.

Сразу же запишем второе дифференциальное уравнение

Здесь I – матрица инерции, M – вращающий момент, приложенный к квадрокоптеру, MG– гироскопический момент.
Вектор M задается следующим образом:

Здесь d — коэффициент лобового сопротивления, L – длина плеча.
Гироскопические моменты, вызванные поворотом объекта с вращающимися роторами двигателей записываются так:


Введем 4 сигнала управления, которые будут управлять квадрокоптером:





Гироскопические моменты, действующие на квадрокоптер, зависят от угловых скоростей роторов двигателей и, следовательно, от вектора управления


Запишем систему уравнений, описывающих нашу систему.


И теперь преобразуем систему таким образом, чтобы не было вторых производных.


Эта система из 9 уравнений как раз и описывает динамику системы.

Заключение


Пост получился несколько некрасивым.
Подскажите, пожалуйста, он-лайн редактор формул? А то эти совсем отвратно смотрятся.

Вопросы-предложения приветствуются!
Снежко Кирилл @argz
карма
42,0
рейтинг 0,1
123
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (131)

  • +11
    Достойно уважения такое стремление досконально разобраться во всех деталях, начиная от самого нижнего уровня. Не боитесь, что в процессе станет скучно?
    • +1
      Боюсь, но не станет :)
      • +1
        Вопрос один (напишу повыше): когда же вторая часть? :)
        • 0
          Будет в самое ближайшее время!
  • –3
    Очень интересно, продолжайте, но хотелось бы чуть более простой и понятной формулировки, у меня хоть и было куча математики в ВУЗе, но сейчас даже школьное квадратное уравнение не помню.
    На каком железе планируете это делать? Или пока только математика и теория?
    Сам уже 3 года в этой теме, в основном AVRки, в код математики не лезу — там какой то шайтан кошмар и хаки для ускорения работы.
    • +8
      А мне все понятно. Уравнения в форме Коши. А простой и в тоже время корректной формулировки в данной задаче родить трудновато. Математика гольная.

      PS: Не знаю как Вы, но многие студенты с досадой ругаются на учебные планы: «Ну зачем они нам эти двойные интегралы и дивергенции пихают?!?!?», а потом смотрят на базовые расчеты динамики и затылок почесывают при виде переменных с двумя точками сверху: «А это что за Пи с душкой?»
      • +8
        Я так же ругался на учебные планы, потому что тонна закорючек без примеров реального применения в памяти не отложилась и была немедленно стерта из мозга после успешной сдачи экзаменов. Вот знал бы я тогда что сферическая динамическая система в вакууме это крутатенька в виде коптеров летающих — учился бы усерднее. Вообще вся теория без практики плохо у меня отклыдвается всегда, благо сейчас работа веб-девелопера никак не связанна с этим и есть гугл.
        • +2
          Я когда-то пришел к мысли, что мне намного было бы полезнее изучать высшую математику не в самом начале, а в конце (курсе 4-5) — когда понимаешь, что без нее ничего толком не опишешь. А еще было бы лучше, если бы она была модульной, как ни странно это звучит: один понял, что без основ дальше никуда — пришел на втором курсе, кто-то на третьем… И это было бы не стадо первокуров с главной мотивацией проскочить нахаляву.
          • 0
            Тоже ерунда получится. Многим известна ситуация с интегралами по контуру, дивергенцией и т.п., которое нужно на физике, но по вышке еще не проходилось.
            • +1
              Именно, поэтому, мне кажется, математика должна быть модульной. Т.е. если заранее известно, что без ВМ на физическом курсе делать нечего, то модуль математики всегда должен идти перед физикой.
      • 0
        Сразу видно кто на первом курсе учился.
      • 0
        Маленький нюанс. Возможность один раз посмотреть на уравнения динамики квадкоптера, понять их (скажем, занимает это одну минуту), улыбнуться и через 10 минут навсегда забыть за ненадобностью вряд ли стоит нескольких лет совокуплений в мозг на лекциях по разным формам математики…

        Условно: если я опубликую тут перевод этого документа, то очень многие сдадутся еще на первой минуте. Кто-то дочитает до конца и поймет. Кто-то это уже знал. Но я не критикую тех, кто забросит по причине абсолютного непонимания, про что же там, черт побери, говорится — им это объективно не надо. Как и мне, и большинству присутствующих не требуется по жизни математика уровня написанной в посте.
        • 0
          если я опубликую тут перевод этого документа

          Так вот откуда в институте были срисованы лабы по циске (=
        • 0
          Вы не правы. Уровень математики из поста — это примерно как основы IP — адреса, маски, статическая маршрутизация. Я серьёзно, это самые основы. Там даже из обозначений, которые не изучают в школе, есть только векторное произведение и матрицы; можно переписать (и фактически так и сделано в конце концов) уравнения без матриц и произведений. То есть, математика в посте ШКОЛЬНАЯ.
          • –3
            1) Не слышал, чтобы дифуры встречались в школьной программе.
            2) В таком случае, MPLS (в качестве общей концепции форвардинга по меткам, даже без наворотов вроде TE) — это самые основы построения сетей, это любой школьник знает. И там нет ничего особо сложного. Но вот вы знаете, каким образом распространяются метки и как по ним передаются пакеты? Если нет — как же так? Это же основы!
            3) Даже навык решения систем уравнений лично мне никогда не пригодится. Более того — даже умение решить банальное квадратное уравнение для меня бесполезно — я ни разу со школьной скамьи не решал квадратные уравнения. Даже в институте. Тем более нет — по работе.

            Поэтому осторожнее со словами «это — самые основы».
            • +1
              Не путайте математику и прикладные науки.

              Математика — это инструмент, который может быть использован для решения чего угодно, и потому не зная ее основ вы не сможете, банально: IP адреса рассчитать. А не умея решать системы уравнений вы не сможете рассчитать оптимальную расстановку wifi точек по зданию, таким образом, чтобы покрытие не выходило за территорию помещения организации (да, ведь надо учитывать интерференцию сигналов повторителей).

              MPLS — это прикладная технология, и в общеобразовательной школе такое не проходят.
              • 0
                не зная ее основ вы не сможете, банально: IP адреса рассчитать.

                Это лишь маленький ее кусок — умение переводить числа между системами счисления. И если надо рассчитать не «навскидку», а с гарантией, то я всегда пользуюсь соответствующим калькулятором. Мозг может глючить, калькулятор — вряд ли.
                вы не сможете рассчитать оптимальную расстановку wifi точек по зданию, таким образом, чтобы покрытие не выходило за территорию помещения организации

                Вы будете рассчитывать на бумажке или в маткаде? Ну хорошо, как пожелаете. Только ни один человек так не делает.

                А я воспользуюсь специализированным софтом, который позволяет даже без реальной разведки получить относительно похожие на правду рекомендации по размещению точек доступа (а дальше контроллер сам будет следить за уровнем сигнала, переключать каналы, мощности передатчиков и так далее). Если засунуть в подобный софт точные данные по источникам помех и затухания, то результаты будут очень похоже на правду.
                (если что — у меня есть опыт построения критичных к качеству связи беспроводных сетей даже в условиях «узнал планировку помещения за несколько дней до запуска объекта»)

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

                Еще примеры? :)
                MPLS — это прикладная технология

                В таком случае IP — прикладной протокол.
                • +1
                  В таком случае, в школе нужно проходить модель OSI, она вполне теоретическая :)
                • 0
                  Вы опять рассуждаете с точки зрения пользователя. А вам надо рассуждать с точки зрения разработчика софта который пишет калькулятор или соответствующий софт.

                  Так же и с квадрокоптером, вы же не будете (я надеюсь) лезть в код, который напишет автор статьи по итогу, а просто будете нажимать на кнопки управления…
                  • 0
                    Вы опять рассуждаете с точки зрения пользователя.

                    Вы сказали " А не умея решать системы уравнений вы не сможете рассчитать оптимальную расстановку wifi точек по зданию". Я закономерно ответил, что я смогу решить эту задачу, вообще не прибегая к математике сложнее уровня начальной школы. Про разработку ничего не было.
                    А вам надо рассуждать с точки зрения разработчика софта

                    С какой стати?
                    Никто не спорит, что специальные знания требуются при реализации специфического софта. Но укорять людей, не имеющих отношения к разработке специфического софта, в отсутствии специфических знаний как-то странно.
                    • 0
                      Тогда зачем поднимать кипишь из-за того, что формулы, по которым смоделировано поведение квадрокоптера так сложны, если вы не будете все равно в это вникать, а будете просто нажимать на кнопки на пульте управления?
                      • +1
                        Я разве поднимаю?
                        Человек выше написал, что здорово, если бы ему кто-то всё разжевал.
                        Думаете, среди прочитавших топик найдется хотя бы 3 человека, которые воспользуются данными формулами?
                        • 0
                          Возможно найдутся. На 33 000 прочитавших это 0.09 процента…
  • +3
    Вот Вам онлайн-редактор: www.codecogs.com/latex/eqneditor.php
  • +4
    И что, собираетесь в итоге на лету решать систему численно?
    • +7
      А в чем сложность? Если заложиться на константное значение квантования по времени (напр., 10 мсек) и расчеты положить на ARM с 80 МГц и более, то вполне можно.
    • +3
      Хотелось бы услышать, почему вас это удивило?
      • +1
        Не удивило, просто обычно, насколько мне известно, делают проще — через обратную связь. Вон, даже внизу в комментах предлагают так — акселерометром снимать. А тут — модель…

        Интересно, как модель будет включена в процесс управления. Будут сравниваться реальные параметры и посчитанные по модели, а потом проиходить какие-то коррективы?
        • 0
          Скорее всего эта модель будет использоваться на входе какого-нибудь фильтра (например, Калмана).
    • +6
      50 лет назад запускали ракеты в космос с такой допотопной электроникой, что нынешние 4-х и 8-ми-ядерные смартфоны по сравнению с ними — суперкомпьютеры.
      • +2
        Там, наверное, каждый модуль был заточен под решение одной конкретной задачи за один такт.
        • +6
          Там вообще часто использовались аналоговые вычислители, обладающие огромным быстродействием, но способные решать только одну задачу.
          • +1
            А еще там уравнения описанные в данной статье были реализованы «в железе» на операционных усилителях.
            • +4
              ну, «реализация уравнений в железе на операционных усилителях» и есть аналоговый компьютер, «способный решать только одну задачу»
              • 0
                По сути там вычислений не делается. Это просто динамическая система.
                Перечитал определение "Аналогового компьютера"
                Там: «Представлением числа в механических аналоговых компьютерах служит, например, количество поворотов шестерёнок механизма. В электрических — используются различия в напряжении. Они могут выполнять такие операции, как сложение, вычитание, умножение, деление, дифференцирование, интегрирование и инвертирование.

                При работе аналоговый компьютер имитирует процесс вычисления, при этом характеристики, представляющие цифровые данные, в ходе времени постоянно меняются.»
                … что для меня является главной отличительной чертой от сабжа. Но далее там же на вики:

                «Результатом работы аналогового компьютера являются либо графики, изображённые на бумаге или на экране осциллографа, либо электрический сигнал, который используется для контроля процесса или работы механизма.»
                … что добавляет путаницу.

                Сабж все-таки больше преобразователь сигнала, его нельзя (за)перепрограммировать. ИМХО

                ПС: вот еще ссылка habrahabr.ru/post/132702/
        • 0
          Даже не за такт, а вообще мгновенно. Как только входные параметры получены, на выходе есть ответ.
          • +5
            Вы не совсем правы, у аналоговых вычислителей ограничено время распространения сигнала. Ещё временные параметры могут плыть из-за неидеальности АФЧХ (разная реакция на разные частоты)
          • +2
            до нескольких МГц или десятков МГц, потом всё, ОУ перестаёт быть ОУ в изначальном смысле слова
            • 0
              Большинство современных MEMS-датчиков (в данном случае аналоговых) не способны выдавать данные так быстро, так что это не вопрос. Проблема в том, что большинство и датчиков и исполнительных механизмов сейчас цифровые.
    • 0
      В былые времена такое на z80 обрабатывали, только шуба заворачивалась :)
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Таки да, я это и имел ввиду :)
  • +2
    расскажу о том, как сделать модель в Matlab

    Запасся попкорном!

    Реализуете в чистом MATLAB, или же все-таки в MATLAB --> Simulink --> Simmechanics?
    • 0
      Да, симулинк, но не симмеханикс.
      • +1
        Могу помочь прикрутить модель в симмеханикс.
        Будет как-то так:
        • 0
          О, это было бы очень хорошо!
        • 0
          А он гидродинамику умеет считать? Если нет, то как сделать вращающийся винт движителем, сделать простенькую модель с парой формул?
          • 0
            Он много чего умеет считать, и гидродинамику тоже.
            Но для начала имеет резон использовать эмпирическую зависимость силы от скорости вращения винта и от его геометрии.

            Задача с винтами как движителями боюсь не для моего компьютера.
            Тем более задача не в изготовлении оптимальной геометрии винта.

            Но Вы правы! Предела совершенству нет! Можно еще и хим процессы в аккумуляторе учитывать, и температуру окружающей среды…
            • 0
              Да ладно вам издеваться :)

              А если у меня уже есть некий софт, и даже контроллер есть, куда я могу залить этот софт, то как делают software in the loop и hardware in the loop симуляции?
              • 0
                Не совсем ясен вопрос.

                как делают software in the loop и hardware in the loop симуляции?


                Об этом можно несколько книг написать, если глубоко копнуть. Но если по простому, то hardware in the loop — это когда модель выполняется на целевом контроллере а данные из него передаются в симулинк и обратно. SIL — то же самое, но целью выступает программная абстракция изделия или системы. При этом для контроллера можно сэмулировать реальную «среду обитания» и даже в реальном времени, если необходимо. И проверить как он будет себя вести. Универсальный испытательный стенд, грубо говоря.

                Если эта тема интересна — смотрите xPC Target. Вся инфа в основном только на сайте Mathworks сосредоточена, так что с поиском проблем нет. Ну или спрашивайте, только вот что значит «некий софт» — не ясно))
                • 0
                  Некий софт = система стабилизации и ориентации в пространстве как раз квадрокоптера paparazzi. Сложность в том, что в варианте для коптеров она управляет полётом путём изменения скорости вращения винтов. Я же собираю коптер с variable pitch винтами. По механике всё вроде хорошо складывается, надо только немножко поработать дрелью и напильником. А вот как настраивать стабилизацию — фиг знает, скорость реакции коптера на управляющий сигнал будет выше на порядок, но надо придумывать, как управлять оборотами винтов, чтобы они не проседали при резких изменениях угла атаки.
  • +5
    [ПРЕДЛОЖЕНИЕ] Опишите реализацию БИНС на кватернионах…
    • 0
      переход к кватернионам решает ряд проблем, но решает ли он проблемы в расчётах тригонометрических составляющих (тоесть ошибки в численных методах)?
      • +3
        Как раз это второе их преимущество. При вращении векторов кватернионом, вроде, используются только степенные функции (возведение в квадрат). Косинусы и синусы нужны будут лишь при определении фактических углов и позиции. Но так как эти вычисления не участвуют в итерационном процессе, то и накопления ошибок из-за приближенных алгоритмов вычисления косинусов, например, отсутствует.
        Судя по литературе числовая обусловленность у кватернионов лучше, чем у направляющих косинусов.
        • 0
          Тоесть тригонометрия будет, но без накопления.
          • 0
            Ну после того как БИНС обновила кватернион перехода от связанной СК в географическую надо юзеру на панель вывести углы географические. Либо если есть полетное задание — надо сравнить требуемую ориентацию с полученной в БИНС. Хотя и в последнем случае несложно задание полетное по углам в кватернион перевести и делать все вычисления в кватах.
  • 0
    • 0
      Delete
  • +14
    Неужели действительно интересная статья про коптер, а не стандартное «Смотрите, какую штуку я сделал сам за день, купив все готовые компоненты на хоббикинге».
    Когда-то сам делал коптер без покупных частей — потратил несколько месяцев на BLDC драйвера. С полётным контроллером получилось всё проще и, в итоге, коптер даже летал, но потом лень одолела меня.
    Так-что следующих ваших статей (особенно части про инерционные датчики) жду с нетерпением.
  • 0
    А x1-x9 в последней системе уравнений это разложения Тетты, Фи и Кси на оси инерциальной ситемы отсчета?
    • 0
      x1-x9 — это фиктивные переменные, введенные для приведения дифференциальных уравнений к алгебраическому виду. «Тетта, Фи и Кси» это углы вращения объекта (коптера) вокруг конкретных осей. «По-русски» в статье они обозваны углами крена, курса и тангажа. Слово «курс» говорит о том, что эти углы определяют ориентацию коптера в географической СК.

      «на оси инерциальной ситемы „
      СК на поверхности Земли в текущем положении коптера (географическая СК) не является инерциальной, т.к. вращается вместе с Землей. Инерциальной “с натяжкой» можно назвать СК, связанную с центром Земли, но не вращающуюся вместе с планетой.
      • 0
        Мне казалось, что инерциальная СК характеризуется

        а) Точкой отсчета
        б) углом направления
        в) расстоянием.

        Мне кажется, что в движении квадрокоптера вращением планеты можно пренебречь…
        • 0
          Вот напоминалка, что такое Инерциальная СК. Т.е. это СК относительно которой пространство находится в покое (в смысле второго закона Ньютона). С этой точки зрения и геоцентрическая СК не будет инерциальной.

          «Мне кажется, что в движении квадрокоптера вращением планеты можно пренебречь…»
          Ну если Вы затачиваете коптер на «зависание», то наверное да. И если коптер будет перемещаться на расстояния менее 200 км. Насколько мне известно при расстоянии более 200 км. от точки начальной выставки до финиша уже сказывается сферичность Земли. Это для гражданских самолетов. С коптерами может понадобиться еще бОльшая точность… теоретически, конечно.
      • 0
        Инерциальной я ее назвал прежде всего для того чтобы была видна связь с обозначениями используемыми в статье.

        Позиция устройства в инерциальной система отсчета задается радиус-вектором


        Я в курсе, что она не совсем инерциальная, хотя на практике этим очень часто принебрегают.
        • 0
          О какой специфической связи речь? Позиция объекта в любой декартовой СК может быть представлена радиусом-вектором.
          • 0
            Позиция объекта в любой СК может быть представлена радиус-вектором. Декартовость не при чём, и СК вообще определяет только каким образом радиус-вектор будет записан через координаты.
            • 0
              Таки я не утверждал, что радиус-вектор является понятием чисто декартовых СК. В данном случае речь шла об СК, которая является декартовой.
          • 0
            Да, но поскольку автор статьи называет ее инерциальной, пусть это и не совсем коректно, я называю ее так же, просто чтобы было понятно о пересчете в какую ск идет речь в вопросе.
            • 0
              «пусть это и не совсем коректно, я называю ее так же»

              Вот и не стоило… Некорректности копятся.
    • 0
      Координаты, скорости и углы
  • +4
    Сейчас тоже клепаю квадрокоптер: раму и силовую часть сделал, остался полетный контроллер. В свое время прошел этап описанный автором, и понял, что на практике все эти страшные формулы не нужны. Делается несколько ПИД-регуляторов, в моем случае — 4 (контролируют высоту, проекцию скорости на ось х и на ось у, угловую скорость вокруг оси z). Исходя из имеющихся датчиков определяем как получить пропорциональную, дифференциальную и интегральную составляющую: то ли это можно получить в готовом виде от какого-то датчика, то ли нужно взять интеграл/производную от какого-то параметра используя текущее и предыдущее значения. Приведенные формулы не подходят также потому, что нету возможности точно задать/определить частоту вращения двигателя.
    • 0
      Не совсем понятно ПИД состсоявющие чего вы хотите получить?
      • +1
        Например, ПИД для удержания вертикальной скорости: дифференциальная составляющая будет браться из акселерометра оси Z, пропорциональная — интеграл от показаний акселерометра, либо дифференциал от показаний альтиметра либо оба параметра просуммировать с коэффициентами.
        • +1
          Боюсь признаться, я не думал о таком методе. Можете дать какой нибудь источник, чтобы почитать.
          • 0
            О ПИД-регуляторе можно в Википедии почитать. А вот очень неплохой пример практической реализации для Сегвея для случая с акселерометром и гироскопом.
            • +1
              Я наверно пропусти лекцию по ТАУ. Я тока умею настраивать коэффициэнты пида по озд. За статью спасибо. Я смотрю там уже ставший популярным коплиментарный фильтр.
    • +1
      Приведенные формулы не подходят также потому, что нету возможности точно задать/определить частоту вращения двигателя.


      Как раз несложная задача, регулятор BLDC знает эту частоту. и нет никаких проблем передать ее в полетный контроллер.
      • 0
        Опять таки, все зависит от аппаратной реализации. Я, например, использую готовые китайские регуляторы, которые не дают этот параметр. Клепать регуляторы самому я посчитал нерационально. Но даже зная обороты (как узнать тягу винта зная только обороты? нужно учитывать влияние земли) из-за инерционности и неидеальности системы в конечном итоге придете к какому-то корявому регулятору — частному случаю ПИД (ПИ, ПД, ДИ).
        • 0
          Тяга винта не зависит от Земли. Если в невесомости будет воздух и винт, тяга у него тоже будет. Она зависит, если хотите, от плотности среды, т.е. в данном случае от давления вокруг, ну, и разумеется, от самого винта — конструкции и оборотов.

          В статье считается, что тяга пропорциональна квадрату угловой скорости, с неким коэффициентом, который можно вообще измерить для реального винта в реальной раме.
          • +1
            Вы забываете про экранный эффект. Вертолёты особенно сильно от него страдают, но и квадрикам достаётся.
            • 0
              вы имеете ввиду изменение тяги вблизи поверхности?
              • 0
                Да, при расстоянии порядка радиуса пропеллера эффект сильный. Применительно к коптерам — дополнительная сложность стабилизации при посадке.
    • +2
      Присоединяюсь… Нет смысла строить модель работы двигателя, если параметры двигателей неизвестны точно. Проще построить модель движения и обратной связи для нее. Контролировать текущее положение и параметры движения, сравнивать их с требуемыми и по разности требуемых и фактических параметров вырабатывать управляющее воздействие.
      Только в качестве регуляторов обратной связи лучше использовать что-то более гибкое и эффективное, чем чугунный ПИД. Вот пример к чему приводят дубовые ПИД.
      www.youtube.com/watch?feature=player_detailpage&v=Olh4SizYFCw
      www.youtube.com/watch?feature=player_embedded&v=EIdX-K6LGQ0#t=127s
      • 0
        а если идентифицировать объект, и получить более менее сносную модель
        • 0
          Ну вот это более приближенный к практике подход. Если есть стенд, на котором можно хоть примерно оценить переходные процессы поворотов и линейных перемещений, то уже по этим результатам можно попытаться регулятор обратной связи строить.

          PS: тут я подразумевал случай DIY категории… в оборонке и космических проектах характеристики движителей и объекта должны определяться точно и там уже все эти формулы нужны. В случае кустарной разработки все равно все делается "± трамвайная остановка"
      • 0
        А тут и нет модели двигателя. В уравнения входит скорости вращения пропеллеров. Модель двигателя — это какой момент будет в зависимости от напряжения на клеммах и от скорости вращения ротора. А тут об этом ни слова.
        • 0
          А что проблема в модели двигателя? скорее всего будет бесколлекторный, найди кое-какую модель в инете возможно, а дальше уже экспериментальным способом её уточнять-улучшать.
          • 0
            А мне кажется тут она не нужна. Задать желаемые обороты, за двигателем следить по обратной связи и поднимать-понижать напряжение в зависимости от того, меньше реальные обороты чем желаемые или больше.
            • 0
              Тогда вопрос, а за двигателем следить и посылать управляющие сигналы как? пидом? или там угол узменился тут засчёт оборотов двигателя подкорректировали? Или всётаки регулятор для двигателя нужен?
              • 0
                Так в любом случае это придётся учитывать, будет отдельный контроллер у двигателя или всё будет делать пид.
                • 0
                  А ну тоесть без контроллере ни как, а то я думаю как так.
      • +1
        А в чем проблема, по-моему все отлично работает? Ну для большей идеальности можно с коэффициентами поиграться.
  • 0
    Продолжайте, будем почитывать. Сам готовлю статью про алгоритмы. Думаю к концу месяц проведу эксперименты и «запостю».
  • +2
    Хотелось бы увидеть больше пояснений как получили (или откуда взяли) формулы, описывающие сложные физические процессы. Например.
    «Сила тяги, производимая каждым из четырех двигателей » у вас очень просто записывается как квадрат угловой скорости w., откуда такая закономерность? Аналогично, момент вращения М — также пропорционален квадратам w — почему?

    И второй вопрос: для каких целей вводится такая сложная модель системы? Задача стабилизации углов прекрасно решается ПИД-регулятором во всех открытых и закрытых проектах. Самая интересная часть сейчас — это задачи стабилизации и контроля положения, но там модель не сильно поможет, так как не учитывает внешние воздействия. Правильное сведение GPS + инерциалки — это то, что пока не очень хорошо сделано в открытых проектах. Если вы владеете мат. аппаратом, советую сосредоточить все усилия в этой области.
    • 0
      Зря советуете. С ПИДами тоже не все гладко. Их трудно настраивать, трудно получить компромисс динамичности и стабилизации. Не во всех САУ используют ПИД. Это самый простой в реализации алгоритм, потому он и распространен. В ответственных случаях используют также Фильтры Калмановского Типа.

      В случае данной статьи и описанной конкретной задачи строить уравнения динамики с параметрами двигателей может пригодиться для построения ФК, но мне это тоже кажется избыточным. Фильтр Калмановского типа можно и по-другому построить.
      • +1
        Как раз и написал в таком ключе — что в данном случае стабилизации углов, ПИД, несмотря на простоту, отлично справляется и настраивается очень легко при грамотной конструкции механики (сужу из собственного опыта и опыта знакомых). А вот для стабилизации позиции ПИД уже явно мало, поэтому все и буксуют там. Там и динамическая модель систеы пригодится, но не такая сложная конечно, без учета гироскопических моментов. И многомерные калмановские фильтры, куда ж без них.
        • 0
          без учета гироскопических моментов


          Ну как же без них то!

          Они родные довольно сильно влияют на поведение коптера.
          Вращающиеся пропеллеры и роторы — волчки еще те.
  • 0
    Подскажите, насколько реально использовать квадракоптеры для протяжки воздушных кабелей между домами?
    • 0
      Типичные небольшие квадрокоптеры поднимают порядка одного килограмма полезного груза и летают минут 15. Прикинуть можно тут — rc-calc.com/ru/copter
      • 0
        Если собирать агрегат под конкретную задачу, то полезная нагрузка может быть значительно выше — под крупные гексы и окты вешают зеркалки на активных подвесах со стабилизацией изображения и другими фишками, весом по 2-3 кило.
        • 0
          Тут ниже товарищ, правильно сказал. Дело не в весе, с камерой коптеры летают и хорошо, дело в леске которая будет создавать некий парус и затруднять движение коптёра
          • 0
            Это, конечно, верно. Нужно по-хорошему рассчитать, с какой силой эта леска может тянуть коптер, и учитывать при подборе необходимой мощи моторов. Хорошие контроллеры типа AutoQuad или WKM справятся с компенсацией, если тяги хватит.
    • +1
      вполне реально, на скока мне известно, тянется вначале что-то типа лески а потом уже само волокно, так? или я не прав?
      • 0
        Тянется сначала трос, он как правило легче оптики, но его прочности должно быть достаточно для того чтобы удержать оптику в пролете, во время затяжки до 50кг. И еще трос должен быть устойчивым к трению. Я вот и думаю каким должен быть трос.
        • 0
          А разве нельзя протянуть леску, по ней капроновый шнур, а затем уже трос и оптику?
    • +1
      Будет довольно нетривиально учитывать направление, куда леска тянет квадрик. Даже в штиль она будет тянуть не строго вниз, а вниз и в сторону, и это зависит от расстояния между домами. А ещё она будет постоянно колебаться, и в малейший ветер её сильно сдувает. В общем, попробовать можете, но слишком велика вероятность потери управления и наматывания лески на пропеллеры, далее эта машина смерти бодро полетит на землю (если хватит длины лески) или в окно (если не хватит, и леска окажется крепкой). После удара начинают загораться литиевые аккумуляторы :)
      • +3
        Прям коптеро-апокалипсис какой-то, попробовать стоит
        • 0
          как в лучших голливудских фильмах, взрывающиеся вертолёты, всё, в общем, как надо :)
      • 0
        Запутывание лески предотвращается полуметровым упругим усом, или грузиком.
        • +1
          Грузик будет отличный маятником с внешним подводом колебаний, а упругий ус — пружиной. То есть от наматывания лески скорее всего защититься получится, но сразу появится много других проблем. Даже если между домами всего 30 метров (обычно в такой ситуации не будет никаких деревьев и проще ножками спуститься и 2 троса связать снизу), то лески надо будет метров 50 выпустить, а это уже нефиговый такой парус.

          Я не против, не подумайте, идея клёвая. Но подводных камней больше, чем кажется на первый взгляд. Пропеллеры дерутся очень-очень больно, коптером по голове получить тоже неприятно.
  • 0
    Кстати, а вы планируете всегда держать один луч как перед квадрокоптера, или они будут меняться в процессе полёта, в зависимости от требуемого профиля полёта? Ведь в классической аэродинамике связанная система координат ориентирована по продольной оси ЛА, а у коптера её как бы и нету. Отдельный момент: с точки зрения практического использования удобнее проводить продольную ось по биссектрисе между лучами, тогда можно ставить вперёдсмотрящую камеру и пропеллеры не будут закрывать её собой.

    Кстати, почему вы решили не рассматривать скоростную (относительно воздуха) составляющую полёта и связанные с ней углы атаки и скольжения? Без них кмк сложно будет делать стабилизацию в уличных условиях.
  • +1
    А Калман будет?
    • 0
      Будет, но позже. Когда датчики пойдут
  • 0
    Было бы замечательно, если бы некоторые термины рассказали что это и откуда их взять? (например, коэффициент пропорциональности)
    • 0
      Просто коэффициент, который связывает скорость вращения пропеллера и тягу. То есть во сколько раз надо умножить скорость вращения, чтобы получить тягу. Берётся с потолка очевидно. На самом деле враньё, так как зависимость нифига не линейна, и коэффициент должен быть функцией от скорости вращения (и не только).
      • 0
        скорость вращения в квадрате на коэффициент. Проверку на глупость выдерживает: тяга должна зависеть квадратично, т.к. винт «давит» своей поверхностью — двумерный объект, а скорость вращения — одномерный
        • 0
          www.rcdesign.ru/articles/engines/prop_select_theory

          Тяга винта зависит ещё и от скорости воздуха вдоль оси вращения винта, угол атаки будет меняться. Коптерам практически пофигу, они вертикально вверх на скорость редко летают, а при горизонтальном полёте составляющая скорости по оси вращения винтов не такая уж и большая. Обычно берут винты, которые дают большой момент в статике (слоуфлаеры).
          • 0
            Ну значит b в формуле — не постоянный множитель. Суть зависимости от скорости вращения винта — квадратичная — никуда не делась.
  • +2
    Добавьте ссылки на литературу. Или вы не читая никаких книжек и статей все выводили? Просто за частую интереснее не готовый результат, а способ его нахождения.

    Есть ряд статей в которых с разных сторон описывается вывод подобных формул:
    Design and Control of an Indoor Micro Quadrotor
    Modelling, Identification and Control of a Quadrotor Helicopter
    Full control of a quadrotor
    Control of quadrocopter
    (по названием их гугл сразу выдает)

    Мне больше всего нравится «Control of quadrocopter». Там нету вывода этих формул, зато есть более понятный вывод формул для стабилизации по высоте и углам крена и тангажа.
  • 0
    замечательно. Ждем доступного кода в матлабе и визуализацию решения.
  • НЛО прилетело и опубликовало эту надпись здесь
  • –1
    Оригинальный способ найти редактор формул.
  • 0
    Рекомендую пройти курс class.coursera.org/conrob-001/class/index
    Если прикладывать математику к реальности самостоятельно, можно наловить кучу непонятных с первого раза эффектов.
  • 0
    Вот обзор онлайн-редакторов формул Latex:
    habrahabr.ru/post/100938/
  • 0
    А я хочу сделать дирижабль с нуля.
    • +1
      там всё просто, «ро-же-ве»
  • +1
    Смело, но, кажется мне, Вы не в том направлении двигаетесь.
    Возьмем, к примеру, вторую производную по оси z:

    z·· = g — (cosφcosθ)U1/m

    Для случая ровного полета можно даже так:

    z·· = g — U1/m

    И того, задав некоторое U1, квадрокоптер быстро разгоняется до, скажем, 300 км/ч. Не смущает?
    Тяга должна зависеть от скорости набегающего потока и угла атаки.

    Но вообще все должно быть намного проще. Первые системы автопилота не умели считать такие сложные системы.

    Для управления, например, по оси z можно рассуждать так:
    Коррекция скорости вращения винтов пропорциональна разнице заданной скорости и фактической скорости:

    Δω = k0 * ΔV

    Чтобы не было запаздывания:

    Δω = k0 * ΔV + k1 * d(ΔV)/dt

    Можно еще вторую производную добавить
    • 0
      Горизонтальная и вертикальная скорости квадрокоптера зависят от углов тангажа и крена, как и у вертолёта. Нельзя рассматривать изменение скорости вращения винтов в отрыве от этих углов, ведь ровного полёта не существует, как минимум всегда есть ветер, искажения потоков воздуха всякими предметами, находящимися рядом, и неравномерности в оцифровке PWM сигнала, работе двигателей и винтов. Скорее всего, если пользоваться вашим вариантом, колбасить коптер будет не по детски. Ну и барометр нужен, чтоб вертикальную скорость знать.

      Тяга даже SF винтов растёт почти линейно до скорости порядка 10 м/с. Если хочется лететь быстрее — то можно E винты поставить и разгоняться до 20 м/с. Это я к тому, что на низких скоростях полёта линейная тяга — хорошее приближение.
      • 0
        Конечно Все это нужно учитывать. И именно поэтому описывать динамику системы я считаю не правильным подходом. Хотя, конечно же, будет интересно посмотреть на результат, если я не прав.

        Я и не думал предлагать правильные уравнения. Там много чего не хватает. Я всего лишь показал идею, которую, как мне кажется, я правильно запомнил с курса по автоматизации полета. Собственно, кроме идеи я ничего и не запомнил :)

        Но те кто заинтересуются, смогут найти все выкладки в соответствующих учебниках.
  • 0
    Спасибо. Как раз искал подобное описание.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.