Автопилот для RC модели на AT91SAM7

Maksimuzz

Всем привет. Я несколько лет занимался в рамках хобби изобретением “велосипеда”, решил поделиться,
может кому-то будет интересно. Вот так выглядит сама несущая плата с датчиками и контроллером:

Автопилот сделан на базе отладочной платы. Схема состоит из схемы отладочной платы и периферии:

Проект с исходниками софта для контроллера находиться тут. Одна из моделей для испытаний представлена
на рисунке ниже.

Это Wing Dragon Sportster, размах 1.18М, взлетный вес по паспорту 650г, реально измеренный 750г,
с автопилом 840г. (явный конечно перегруз) Более подробно с проектом можно ознакомиться в моем блоге.
В статье выдвинута концепция построения автопилота для радиоуправляемого беспилотного самолета на базе
дешевого контроллера и современных инерциальных датчиков положения. Концепция проверена на модели
виртуальной с использованием симулятора X-Plane 6 и на реальной модели с толкающим винтом и
электрическим мотором. Предложен вариант алгоритма полета по маршруту с использованием GPS. Проведены
испытания, построены графики и обсуждены полученные полетные данные. Приведена программа расчета
центровки самолета с использованием программируемого калькулятора под Android и приведен пример ее
использования. Доступны все исходники от моделирования до проекта печатной платы.

ADF

За работу руками и головой - всегда плюс!

Велосипед не велосипед, это суть хобби: делать что-то руками, а не тупо запускать готовое.

13 days later
blade
Maksimuzz:

Доступны все исходники от моделирования

Несколько вопросов (я тоже АП занимался, только за дешевизной не гнались- на нормальных процессорах делали)
Так вот: Вы в курсе, что “0” гироплатформы- довольно резво уходит при эволюциях ЛА, от температуры и просто так, из-за действия силы Кориолиса? Причем последнее-еще и от курса аппарата зависит.
Какие то меры по коррекции всего этого- приняты? А то модуля GРS на фото- как то не видно? Может,сослепу не заметил:( А без него “0” править- нереально.
Вопрос 2- на какое максимальное время летал данный аппарат (справка- современные БПЛА летают до 2,5 часов, что делает очень критичными вопросы термо/вибро и другой нестабильности АП)? В Питере есть очень серьезные ребята, занимающиеся этими вопросами: rcopen.com/forum/f90/topic394570
Третье: Вы в курсе, что есть такой АрдуПилот, который в готовом виде- стОит около 50$, рамеры имеет (насколько можно судить по фото)- раза в 3 меньше, а есть и наборы для самосборки…rcopen.com/forum/f90/topic132831
И этот АП- летает давно и успешно, листинг- открыт, делай что хочешь:)

Maksimuzz

Спасибо за комментарий, а то я уже подумал, что тема совсем никого не интересует. (: GPS есть, это можно видеть на фото самолета, на схеме от него только асинхронный последовательный интерфейс (UART). Кроме того, есть магнитный компас от Honeywell.

  1. Жаль, что Вы не посмотрели блог. Я уже получал сообщения о проблемах с гиро, в т.ч. о фильтрах Кальмана, и что без них – не полетит. Однако мне дрейф гиро не грозит, поскольку гироскоп (MEV-50A) я использую нетрадиционно и по этому поводу я не получал никаких опровержений или замечаний.
  2. Время полета в одном из испытаний максимально было около 2 минут (см. черный ящик) из-за слабости аккумулятора и перегрузки самолета. Однако, на большой самолет (wingspan 2.08M, ДВС) я пока автопилот ставить не готов, поскольку не хочется снова его разбить, как это было во втором испытании. Но будьте справедливы: серьезные ребята занимаются этим в рабочее время и за серьезные деньги. Я же cделал все один и в рамках хобби.
  3. Да, я знаю про АрдуПилот. Размер сейчас не так важен, поскольку это прототип. Можно конечно развивать то, что кто-то однажды предложил, не предлагая ничего нового и своего. Но ведь можно тогда вообще ничего не изобретать, а купить просто готовый китайский автопилот. Именно так судя по форумам все и делают. Это дело вкуса и возможностей. Я предложил один из вариантов.
blade
Maksimuzz:

а купить просто готовый китайский автопило

Ну, так делают далеко не все: в ветке “Полеты по камере, телеметрия” есть два вполне серьезных парня, которые с “0” разработали и довели до уровня промышленного образца свои автопилоты, рядом с которыми Арду- и не лежал. Smalltim и Aviaks.
То, что предлагаете Вы- весьма сырое изделие: Вы даже не в курсе, что фильтр Калмана- не способ коррекции гироскопов, а способ усреднения данных. Кстати, в Арду- используется не он, а ПИД регуляторы.
И уход “0” от силы Кориолиса нельзя побороть никаким “оригинальным включением гироскопов”- это чисто физический процесс, связанный с вращением Земли. И корректируется он при помощи GPS и 3D магнитного компаса.
Удачи Вам!

7 days later
Maksimuzz

Спасибо;) Я почитал про фильтры Калмана, да это несомненно отличная вещь для всего чего угодно, где нужно качественно делать усреднение. Скорее всего я возможно при наличии времени подумаю о применении этого в своем ПО. Нашел еще и магистерскую работу, ознакомился с терминологией. В своем проекте я и использую ПИД регуляторы, и конечно с обработкой измерений, но своими методами, скорее классическими. А вот что касается силы Кориолиса, то она для меня не имеет особого значения. Более того, готов с Вами поспорить, что очень точный гироскоп делать бессмысленно все равно из-за серьезного вмешательства в полет самолета внешних воздействий. Кстати, это хорошо видно в фильме, демонстрирующем выход самолета из штопора, и по поведению авиагоризонта, работающего по принципу расчета крена по угловой скорости. Поэтому конечно я использую и магнитный компас(2D), и GPS. Лежит в запасе minimu9, с 3D компасом, акселерометром и гироскопом. Но если Вы когда-нибудь что-то делали с контроллерами, Вы понимаете, что только на словах все подключается легко. А реально получается не быстро и не сразу. И да, это такой просто трюк - все сделано неправильно, но самолет реально летает, и пролетает в 3 м от заданной в полетном задании точки, и выполняет посадку в нормальном самолетном режиме, а не на парашюте, как у некоторых серьезных парней.

blade
Maksimuzz:

Я почитал про фильтры Калмана

Ну, на этом этапе я- был примерно 10 лет назад:)
Так что Вас- впереди масса нового и интересного!
Дерзайте!

Maksimuzz:

я использую и магнитный компас(2D)

Ну, в таком режиме- он ничего не даст, от слова вообще. При наклоне от горизонта- там такая искажуха прет…
Нужен 3Д
Да и уже есть комплексные микросхемы, в которых 3 гиры, 3 акселя, Калман- оператор и даже- два типа выходных протоколов.
Есть ли там компас- не уверен, надо у ребят спросить.

ADF
Maksimuzz:

не хочется снова его разбить, как это было во втором испытании.

Всего два раза реально летал?! Так разработка не ведётся. Можно сказать, что (несмотря на все усилия) ваш автопилот еще не испытан толком.

Maksimuzz:

Но будьте справедливы: серьезные ребята занимаются этим в рабочее время и за серьезные деньги.

  • Множество проектов как раз любителями и в рамках хобби сделаны!
Maksimuzz

Привет, как Вы так сходу делаете выводы типа я не смотрел, но мне не нравится… не, ну не два конечно испытания. Посмотрите все-таки сам блог, там много испытаний, они разные, и на мой взгляд интересные. А долго делал, да, к сожалению такова жизнь, не было возможности по разным причинам, но решил таки довести до чего то законченного. Это второе испытание было неудачное из-за плохого гироскопа, и это подтверждено графиками полетных данных и видео. Более того, сравнил по характеристикам гироскопы. И я как раз из того множества, которое делает в рамках хобби, и еще и делится кодами, которые можно реально использовать. Например, Вы в курсе как устроена FAT32? Или, может лучше вовсе не делать, или делать, но не делиться? А хотите, посмотрите pdf. Там все сразу, и в одном месте, и все ссылки рабочие.

Maksimuzz
blade:

Ну, на этом этапе я- был примерно 10 лет назад

У нас с Вами разные этапы. На моем вы точно не были, поскольку осведомленность о фильтрах Калмана не является достаточным условием для реализации такого проекта.

blade:

При наклоне от горизонта- там такая искажуха прет…

Об этом у меня написано в блоге, возможно, Вам известно о возможности компенсации крена при расчете курса. Есть графики, демонстрирующие компенсацию и для 2D компаса.

29 days later
Maksimuzz

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

Например, я никогда не назову конденсатор “кондюком”, резистор “резюком”. Ну операционный усилитель называть “операционник” нормально. Диси-дисишка - может тоже ничего. Мне кажется, что тот, кто называет акселерометр “акселем”, а гироскопы “гиры”, вряд ли работал с ними всерьез… Как-то кажется, нужно уважать такие продукты. ИМХО

ADF

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

Maksimuzz

Ну , кондёр, наверное да, и электролит, сам так говорю, но как можно про уже такие сложные приборы то так говорить:)) Ну Аксель… - ну неважно же звучит)

blade
Maksimuzz:

Ну Аксель… - ну

Ясен пень! Неэстетишно!
А уж как плохо звучит “гиро”😢
Тем более когда знаешь, что применяемые в автопилотах “гироскопы”- таковыми ни разу не являются, а вовсе они- датчики угловых скоростей, то есть ДУС:)

14 days later
Maksimuzz

Вот такая платка автопилота получилась, 90х60:

Но не уверен, что стоит ее изготавливать, поскольку уж больно дорогие и редкие датчики я применил. Кажется, надо перейти на L3GD20 и LSM303DLM. Они в 5 раз хуже по характеристикам, но зато в 10 раз дешевле и доступны даже в чип-дипе.

14 days later
mit65536

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

В чужих примерах видел что для получения обратной связи по тангажу и крену с гироскопа используется функция включающая коэффициент полученный в результате расчета векторной суммы трех величин ускорений (тангаж+рыск+крен) для чего это нужно понять не могу. А также для расчета ОС по крену и тангажу от сигналов гироскопа применяется функция arcsin - также не могу понять для чего (явно для линеаризации, но только как это положительно влияет?).

Я использую самодельный ПИД для стабилизации в контурах тангажа и крена где в ОС фильтрованные простым рекуррентным фильтром сигналы гироскопа, в качестве аргумента для диф. составляющей я не стал высчитывать производные от гироскопа, просто взял сигналы от акселерометра (ускорение это и есть производная от сигнала гироскопа 😃). Интегральная часть классическая, но с примочкой: гашу интегратор в ноль при малых углах рассогласования (менее 0.5 град. ошибки) и при больших углах рассогласования более 20град. отработка гашений инерциальных движений только по производным - хрен его знает на сколько это правильно, сделал так на всякий случай.

горизонт держит на удивление великолепно и не трясется.

Есть еще проблема с некоторыми датчиками: не могу прочитать их на DUE, по этой причине не могу пробовать свои идеи дальше 😃