Я хотел бы разработать собственное программное обеспечение для управления, навигации и управления (GN&C) на Raspberry Pi для небольшого беспилотного летательного аппарата с неподвижным крылом. С физической точки зрения, каков минимальный набор датчиков/входов, необходимых для реализации старого простого GPS-следования по путевым точкам?
Я понимаю, что мне нужно выучить много математики, но каков минимальный набор входных данных для этой математики? У меня есть опыт работы со встроенным C++ для автомобильных развлекательных систем, но я не разбираюсь в авиации.
Абсолютный минимум для универсального транспортного средства, которому необходимо знать свое положение и положение (ориентацию) в пространстве, составляет один на степень свободы. Это можно уменьшить, если мы располагаем информацией о естественных режимах системы и их устойчивости .
Для простоты предположим, что транспортное средство движется в трех измерениях, что означает в общей сложности 6 степеней свободы:
Самый простой способ удовлетворить эти требования — акселерометры для координат XYZ и гироскопы для углов, которые часто объединяются в IMU . Технически вам даже не нужен фактический GPS, если вы знаете координаты начального местоположения, так как вы можете просто интегрировать его, чтобы узнать свою позицию. Это известно как счисление пути через инерциальную навигацию, и оно работает следующим образом (давайте воспользуемся координатной В качестве примера):
Конечно, это имеет множество недостатков. Акселерометры реального мира имеют шум, гироскопы смещаются, ваше начальное местоположение, вероятно, неточное, вашему транспортному средству, вероятно, требуется больше данных, чем это, для работы, и все системы, которые я только что описал, не могли найти себя, если они сбрасываются в миссии.
Для реалистичного базового проекта, как вы описали, вам понадобятся:
Дополнительные источники данных желательны, но сильно усложняют архитектуру FCS, так как нужно правильно взвешивать данные, в конце концов, вы же не хотите, чтобы самолет доверял магнитометру больше, чем гироскопам, и показывал вам небольшой трюк, которому научился при прохождении вблизи магнитная аномалия.
В частности, датчик Пито хорошо знать вашу воздушную скорость, а не скорость относительно земли. Альфа-флюгер — это немного роскошь, и он не нужен, если только вы не выходите за пределы диапазона полета.
Любой датчик наблюдения за землей с достаточной частотой обновления, дальностью и точностью (ИК, лазер, LiDAR, акустический и т. д.) позволит вам сгладить ваши посадки, и какой из них вы выберете, должен зависеть от вашего дизайна и бюджета; у всех есть плюсы и минусы.
С точки зрения кодирования, если вы серьезно относитесь к тому, чтобы сделать это самостоятельно с нуля, вам следует изучить системы реального времени, фильтры Калмана и обширную область слияния датчиков. Также изучите аэродинамику, чтобы сам планер не был для вас черным ящиком. Вы можете запустить FCS на Arduino даже для квадрокоптеров, если вас устраивает только базовый SAS .
В Интернете существует большое сообщество любителей БПЛА, которые могут предоставить вам почти готовое решение для вашей FCS ( Ardupilot ), если вы предпочитаете такой подход. Лично я часто обнаруживаю, что их документации не хватает, поэтому я предлагаю вам, по крайней мере, изучить основы того, что вы делаете, чтобы помочь вам ориентироваться в неизбежных пробелах в руководстве. Кроме того, поскольку это проект с открытым исходным кодом, вы можете заполнить эти пробелы.
Вероятно, это возможно только с приемником GPS, но это будет непросто, и вам, возможно, придется пойти на некоторые компромиссы в конструкции планера для достижения необходимой пассивной устойчивости.
Традиционный набор датчиков для такого рода приложений примерно в порядке приоритета:
Поскольку это ваш первый БПЛА, я настоятельно рекомендую иметь первые 4 датчика и, возможно, № 5 и/или № 6 (но, возможно, использовать их для диагностики и анализа, а не для управления, поскольку они могут быть немного сложными с нелинейностью и надежностью). .
Если вы просто хотите, чтобы ваш БПЛА летел к путевой точке, вы можете сделать это с помощью одного датчика GPS, если он базируется на очень стабильном самолете, таком как «Gentle Lady» или «Radian» RC планер, до тех пор, пока вы не t летать на нем при очень сильном ветре, когда есть вероятность того, что дрон будет лететь назад над землей, когда он направлен против ветра и летит на балансировочной скорости. Я предполагаю, что вам, вероятно, также понадобится датчик высоты, если только вы не хотите просто применить достаточную мощность, чтобы дрон медленно набирал высоту на протяжении всей автономной части полета. Конечно, вы можете просто получить информацию о высоте от датчика GPS.
Если вы решили добавить 1-осевой гироскоп скорости рыскания, это обеспечит более плавное управление. Но в контексте очень стабильного самолета в качестве вашей базовой платформы вам действительно не нужно ничего большего, если ваша основная цель состоит в том, чтобы сохранить простоту.
Говоря с точки зрения того, кто успешно управлял сверхлегким самолетом в облаке, используя только 1-осевой электронный индикатор скорости поворота, GPS и мокрый компас — и компас в половине случаев вращался назад. Управление в конкретных ограниченных условиях (т. е. в спокойном воздухе, без попыток постоянного вращения в тепловом восходящем потоке, выполнение только очень низких поворотов) было возможно без индикатора скорости поворота, и робот, несомненно, справился бы с этим лучше, чем человек.
Просто проведите достаточные испытания, чтобы убедиться, что самолет не склонен к сильным колебаниям шага "фугоид" при используемом вами CG.
Этих входных данных хватило для автономного трансатлантического перелета по цепочке путевых точек шестнадцать лет назад.
Возможно, вам поможет краткое введение в теорию управления. С точки зрения управления ваш самолет представляет собой динамическую систему, которую можно описать состоянием и динамической моделью.
Состояние — это просто набор переменных того, где находится самолет в каждый момент времени . Для полного описания вам понадобятся положение и отношение в пространстве, а также их первые производные. Любая другая инерция также может иметь свою собственную переменную состояния; например, скорость пропеллера.
Уравнения состояния описывают, как состояние изменяется во времени. Из этих уравнений (особенно в линеаризованной форме) мы можем выделить ряд (собственных) мод . Эти режимы описывают определенное поведение системы и бывают двух видов: стабильные и нестабильные режимы. Устойчивый режим - это динамика системы, которая при конечном входе (возмущении) не приводит к тому, что какая-либо переменная состояния стремится к бесконечности. Обратите внимание, что это не означает, что переменные состояния возвращаются к некоторому постоянному значению: ограниченное колебание все еще можно считать устойчивым! Неустойчивый режим — это динамика, которая при конечном входе приводит к неограниченному росту некоторой переменной состояния.
Чтобы узнать, сколько датчиков вам нужно, вам понадобится несколько вещей. Прежде всего, вы хотите, чтобы ваша система была стабильной. Очевидно, это означает, что вы хотите иметь набор датчиков, способных измерять любой неустойчивый режим ( обнаруживаемость ), и набор исполнительных механизмов, способных управлять неустойчивыми режимами ( стабилизируемость ). Существует ряд (возможно) неустойчивых режимов, наиболее важным из которых является спиральное расхождение . Многим самолетам с неподвижным крылом не свойственна устойчивость к крену, поэтому вам нужно иметь возможность определять угол крена.(датчик скорости рыскания или курса также может работать из-за связи крена / рыскания). Кроме того, есть просто ваше линейное движение, которое также нестабильно (это может показаться нелогичным, но все это означает, что вы можете уйти бесконечно далеко от своей начальной точки, двигаясь по прямой). Для этого вам понадобится какой-нибудь датчик положения (скорее всего, GPS).
Все другие динамические режимы не являются нестабильными по своей природе в самолете с неподвижным крылом, хотя ваша конкретная конструкция может иметь некоторые дополнительные нестабильности, такие как нестабильное фугоидное движение, для которого вы хотите иметь возможность измерять и контролировать движение по тангажу.
Таким образом, абсолютным минимумом являются два-три датчика (широты и долготы и, возможно, крена или рыскания), и используйте прямую связь для всех остальных переменных (установите триммер и мощность в зависимости от желаемой высоты и скорости и просто действуйте). На практике никто не стал бы строить БПЛА всего с тремя датчиками. На это есть две причины,
Для любительского БПЛА обычно оказывается, что датчики относительно дешевы благодаря МЭМС. Обычно вы используете 3-осевой акселерометр, 3-осевой (скорость крена) гироскоп и 3-осевой магнитометр (компас), а почему бы не иметь также барометр и термометр? И поскольку вы используете GPS, вы можете также использовать его данные о высоте. Если вы используете бесщеточный двигатель постоянного тока, вам не составит труда измерить скорость винта. Я думаю, вам будет намного проще создать работающий БПЛА с этими готовыми компонентами (и программным обеспечением с открытым исходным кодом, которое обычно написано для этих датчиков), чем найти датчик одноосного гироскопа и написать собственное программное обеспечение.
Кроме того, использование большего количества датчиков значительно упрощает процесс наблюдения . Это понятие способности делать выводы о состоянии системы на основе выходных данных. Теоретически, если ваша модель достаточно сложна, вам нужно очень мало датчиков для оценки текущего состояния (точное счисление). Однако, если вы действительно можете измерять свои состояния, ваша модель уже не так важна, и ваш БПЛА сможет гораздо лучше реагировать и быть менее чувствительным к изменениям в окружающей среде или в самом БПЛА.
Проект ArduPilot, вероятно, уже сделал за вас большую часть работы, если вас больше интересует конечный результат, чем процесс его создания для себя. Даже если вы решите не использовать их программное обеспечение, вероятно, есть полезная информация о том, какие датчики и в каком количестве необходимы.
Джеффри
тихий летчик
Крис Стрэттон
Харпер - Восстановить Монику
рейраб
Стив
слебетман
слебетман
Стив
слебетман
слебетман
пользователь7915
Стив