High end Low cost Quatrocopter

alexmos

Я правильно понял, у вас свой отдельный форк MultiWii , скрещенный с ArduCopter? Мне кажется вы пошли не очень правильным путем, по двум причинам: одному человеку трудно будет портировать все новые фишки, которые добавляет сообщество разработчиков, и все ваши разработки также останутся недоступны сообществу, если сильно уйдете в сторону.

Я также любитель поковыряться с программой и добавить что то новое, но к вашему проекту не присоединюсь именно по этой причине - не стоит плодить столько клонов. Но ничто не мешает, конечно, советоваться и брать рабочиее решения друг у друга.

Li2n

Я так понял что это более продвинутая версия Адруины.

Dimm168pin
alexmos:

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

Таймкоп в пример) портировал multiwii на платформу stm8\32 ,уже набил оскомину)
Главное что если будет положительный эффект, доступное железо и простота софта , то сразу появится куча желающих что-то ковырять в коде ,прикручивать новые сенсоры, сонары и почее г, равно как и летчиков испытателей))

igor_v_t

Я сам занимаюсь Arducopter ом. В начале прошлого года была программа ArducopterNG к которой я дописал свой автопилот. Меня интересовал полет в автоматическом режиме. И программку потихоньку довел. Заодно разобрался как все работает. При появлении АРМ 2 решил , что мне пора переходить Arducopter 2.0

Поскольку АРМ 2 долго не ехал купил ArduIMU+ V3и начал изучать датчики. Гироскопы понравились. Они получше, чем в АРМ 1. Понадобилось попробовать влияет ли качество гироскопа на реальный полет. Для этого взял DCM матрицу и алгоритм стабилизации из проекта Арду к этому добавил обработку сигналов приемника от МультиВии и соответственно вывод на моторы из МультиВии. В результате получилась программка, которая летает. Можно было это сделать и чисто на МультиВии, но DCM матрица мне ближе. Подключать к этому дальше датчики смысла нет, так как АРМ 2 стоит $200 и существенно интереснее.

Поэтому это не проект, а просто результат работы куски из которой можно использовать. Или в целом виде, если кому нибудь такое нужно. Можно при желании переделать под железки МультиВии. Но это если кому-то нравится DCM матрица.

Алгоритм обработки датчиков и расчета управляющих сигналов взят из более серьезного проекта и вставлен в Атмегу 328.

Ну а далее попробовать сделать так , чтобы летало не хуже NAZA, но это если получится. Сейчас разбираюсь с магнетометром и барометром в АРМ 2. И если удастся написать простой алгоритм стабилизации по высоте по барометру и акселерометру, можно будет прицепить баро и летать как NAZA , но может и не получится, так как ВМР085 не подойдет по причине низкой точности, а будет ли в ближайшее время что то хорошее и дешевое непонятно. Второе - может элементарно не хватить мощности процессора для обработки.

alexmos

Так вроде стабилизации по барометру и по компасу есть (в той или иной версии работоспособности) во всех проектах? Я из-за недостатка времени только MultiWii пробовал, но он понравился сразу продуманностью кода, то что полетел сразу же без плясок с бубном, с 9 DOF сенсорами. Все, что надо - там есть уже, дальше можно тольк улучшать понемногу. Если вы следите за официальным форумом, там сейчас в разработке много интересных нововведений, и это здорово когда можно полностью сосредоточился на каком-то куске кода и в то же время не пропустить что то важное (ошибки или улучшения) сделанные другими.

igor_v_t
alexmos:

Так вроде стабилизации по барометру и по компасу есть (в той или иной версии работоспособности) во всех проектах? Я из-за недостатка времени только MultiWii пробовал, но он понравился сразу продуманностью кода, то что полетел сразу же без плясок с бубном, с 9 DOF сенсорами. Все, что надо - там есть уже, дальше можно тольк улучшать понемногу. Если вы следите за официальным форумом, там сейчас в разработке много интересных нововведений, и это здорово когда можно полностью сосредоточился на каком-то куске кода и в то же время не пропустить что то важное (ошибки или улучшения) сделанные другими.

Компас почти у всех 5883L. А к нему у меня вопросы.
Если взять DCM матрицу, то с нормальными датчиками при повороте коптера с допустимой угловой скоростью по любой оси матрица мгновенно выдает текущее состояние (углы по осям). С магнетометром если вращать в горизонтальной плоскости, то более менее, а по другим осям смотреть на результаты грустно. А по углу вращения вокруг вертикальной оси других данных нет. И гироскопы подстраивать не по чему.
По барометрам- ВМР085 дает большие шумы и высота, рассчитанная по баро гоняет коптер по вертикали и точного удержания не получить. Усреднение (медианный фильтр) не очень здорово, так как сигнал идет с запозданием. Полгода тому, я возился с этой проблемой , но бросил потому что в конечном итоге за 10-20 минут высота измеренная по баро уползала на 2 метра. Поэтому поставил сонар - сначала МВ 1200, а потом МВ1260 и до восьми метров от земли начал мерять с точностью до нескольких сантиметров. С появлением 5661 к этой проблеме вернулся.
Для нормального управления коптером в любой момент времени надо знать его положение.
А теперь для чего это мне.
Хочу чтобы коптер летал быстро. Сейчас он у меня летает с наклоном до 45 град. И при этом хорошо себя чувствует. Скорость пока на длинных пролетах не мерял, но на 40 метрах до 15 м/сек разгоняется легко. На более длинных участках будет больше 20 м/сек.
С быстпыми подъемами проблем ни у кого не было. Со спусками сложнее. Последнее решение линеаризовать характеристику регулятора. После этого введения на спуске раскачиваться перестал.
Далее винты у меня на коптере не останавливаются, а обычный диапазон управления таков , что это очень вероятно. В Арду ограничение по управлению наклоном ±250 мкс плюс к этому -60 на спуск. Крутизна характеристики на начальном участке регулятора в 2-3 раза ниже. При перевороте кверху ногами у меня газ тут же сбрасывается, дабы не шел на полном ходу в землю. И куча других мелочей.
Поэтому , учитывая что в Арду любые данные есть в удобном виде, мне он и понравился. И матрица за это нравится, что не надо напрягать мозги реализуя какую то очередную бредовую идею.
Существенный момент тот что в Арду пишется лог и потом если полетел не так можно выяснить почему. И здесь вывод углов вместо условных величин упрощает анализ, особенно если кувыркнулись.
Вот поэтому и взялся за эту платку и реализовал эту идею. А времени ушло на это - неделя по вечерам. И все равно это время потратил бы разбираясь с датчиками. А потом выяснить что существенно, а что не очень тоже не просто. Так по моему теперешнему пониманию - качество гироскопов больше влияет на виброустойчивость. А далее для получения эффекта от хороших гир серьезно надо возится и при желании за счет этого можно компенсировать медленные акселерометры и их шумы. И так далее.

Вот иллюстрация тех проблем которые пытаюсь решить
Лог полета 30 мая прошлого года . Погода тихо без ветра. Три пролета по маршруту на одном заряде. Маршрут - на юг от точки старта на 20 метров и два пролета по квадрату 20 на 40 метров. Далее команда возврат в точку старта. И так три раза. По шкале времени 1 соттв. 0,2 сек. Достигнув точки висим 10 сек.

Кино одного из пролетов.

Лог положения

Лог высоты


Хотелось бы чтобы коптер летал оченб резво но прямо. Направление не выдерживает из-за магнетометра. С высотой в данном случае не настроен и сильно проваливается но проблема не единственная. А так автомат полный.

alexmos
igor_v_t:

Компас почти у всех 5883L. А к нему у меня вопросы. Если взять DCM матрицу, то с нормальными датчиками при повороте коптера с допустимой угловой скоростью по любой оси матрица мгновенно выдает текущее состояние (углы по осям). С магнетометром если вращать в горизонтальной плоскости, то более менее, а по другим осям смотреть на результаты грустно

В мултиви сейчас компас работает удовлетворительно, гляньте как там сделано. Я с компасом не разбирался ещё детально, т.к. GPS пока не планирую, а удержание ориентации по YAW он выполняет с незначительным дрейфом, что не сильно страшно. На форуме multiwii.com есть тема, где человек добился существенно более высокой точности при калибровке, говорит что достаточно для GPS. Может появится в следующей прошивке.

igor_v_t:

А по углу вращения вокруг вертикальной оси других данных нет. И гироскопы подстраивать не по чему.

По другим осям он и не нужен, есть акселерометр. Компасс только для YAW.

igor_v_t:

По барометрам- ВМР085 дает большие шумы и высота, рассчитанная по баро гоняет коптер по вертикали и точного удержания не получить. Усреднение (медианный фильтр) не очень здорово, так как сигнал идет с запозданием. Полгода тому, я возился с этой проблемой , но бросил потому что в конечном итоге за 10-20 минут высота измеренная по баро уползала на 2 метра. Поэтому поставил сонар - сначала МВ 1200, а потом МВ1260 и до восьми метров от земли начал мерять с точностью до нескольких сантиметров. С появлением 5661 к этой проблеме вернулся.

Да, на прошлой неделе тоже с ним возился - выдает ужасные результаты, но у меня плавает с выключенными двигателями не так страшно, ± 0.5м. Я написал PID-регулируемый фильтр с подключением гир и акселерометра для опеределния точного ускорения, скорости и смещения по Z, а также PID-регулятор высоты. Но пока опробовать на практике не могу, только в теории + понаблюдать в GUI. Если то, что показывает GUI, правда, и оно сохранится с включенем моторов, то барометр будет работать очень неплохо, даже такой хреновый как BMP085. А с хорошим барометром и сонар не нужен. Если вкратце, то что я делаю, позволит:

  • держать высоту с любым углом наклона коптера (до 60гр.) и с любыми горизонталными ускорениями и перемещениями
  • агрессивно держать нулевую скорость (то, что так любфт демострировать, резко пихая коптер вниз. Хотя в полете такие возмущения крайне маловероятны)
  • маневрировать по высоте, не выключая режим удержания высоты.
  • автоматически подстраиваться под “уплывания” акселя по оси Z (я такого у себя не видел, но многие жалуются)

Сонар я тоже планирую пркрутить, правда недорой за 4$. (он меряет до 4 метров и довольно глючный, плохо ведет себя когда теряет сигнал - так что не знаю, будет ли от него польза). Напишите подробней по своему опыту и результатм - насколько сонар чувствителен к наклонам, к поверхности, и есть ли видео его работы на удержание высоты?

igor_v_t:

Последнее решение линеаризовать характеристику регулятора

Поясните подробней суть проблемы и ваше решение.

У вас коптер летает по программе. Программа зашита в мозги или удаленно передается? Если зашита то как обновляется? И я так понял у вас GPS? Иначе отследить положение невозможно

Вот ролик полугодичной давности от разработчика multiwii:

Так что у нее со стабилностью тоже все в порядке 😃

igor_v_t

Почитаю даташит на альтернативу ВМР085, но там может быть ньюанс со скоростью реагирования на изменение высоты. За подсказку спасибо.
По сонару - в матрице DCM [2][2] косинус углла отклонения от вертикали. На него умножается результат измерения.
Программа автопилота в памяти. Точки записываются в ЕЕРROM в виде смещения от точки старта по горизонтали и вертикали, высоты и скорости полета (чтобы не носился как угорелый).
Вот тут полетали при ветре и под дождиком. Полет сначала в полуавтомате- высота по сонару, по горизонтали держит ЖПС, а стиками изменяем точку удержания. С 45 сек пытаемся лететь в автомате. (газ в автомате 1450 мкс) При полете к первой точке коптер должен был подняться на 5 метров. Ветром его швырнуло вверх, коптер сбросил газ на -60 мкс и интегральная составляющая чего-то добавила и в результате регулятор начал работать в нелинейной области. Коптер остался цел. Один винтик пострадал. При более слабом ветре не падал, хотя раскачивался.

Магнетометр в МультиВии посмотрю и отпишусь.

igor_v_t

Оказалось увлекательное занятие 9 осей правильно взаимно расположить. В результате магнетометр начал работать с ошибкой меньше 15 град при наклонах. А при хороших гироскопах и акселерометр не очень нужен.😃

ArduIMU_V3_8.rar

mahowik
igor_v_t:

интегральная составляющая чего-то добавила и в результате регулятор начал работать в нелинейной области

takie kosyaki bivayut iz za perepolneniy peremennih… po krayney mere v multiwii v PID regulyatorah mnogo gde ispolzuetsya int16_t… potomu nado ostorozhno i vnimatel’no…

odin v odin poluchil kuvirok imenno iz-za perepolneniya peremennoy v PID regule…

igor_v_t
mahowik:

takie kosyaki bivayut iz za perepolneniy peremennih… po krayney mere v multiwii v PID regulyatorah mnogo gde ispolzuetsya int16_t… potomu nado ostorozhno i vnimatel’no…

На этом коптере стоят у меня перемотанные DT750 с 1000 об/вольт, поэтому регуляторы работают на начале характеристики (газ висения 1450). До этого с этой же электроникой летал на другом коптере , где газ висения был 1560 мкс и проблем не было. После линеаризации проблемы исчезли. К тому же поставил ограничение снизу, чтобы моторы не останавливались

alexmos
igor_v_t:

По сонару - в матрице DCM [2][2] косинус углла отклонения от вертикали. На него умножается результат измерения

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

А полет по точкам - это уже очень сложно, думаю тут десяток крашей при отладке гарантирован. Но я пока не понимаю какя польза от того что коптер научится летать по программе?

mahowik
alexmos:

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

tut da, vse pravilno… rashodyaschiysya luch… ya eto tozhe zametil, cho nakloni do ~20-ti gradusov ne vliyaut na pokazaniya sonara… + videl podobnuyu korrektirovky v arducopterNG, no po defoltu ona otkluchena vidimo po etoy zhe prichine

alexmos:

А полет по точкам - это уже очень сложно, думаю тут десяток крашей при отладке гарантирован. Но я пока не понимаю какя польза от того что коптер научится летать по программе?

dlya menya aktualen rezhim ALYARM! GO HOME! 😃
potomu GPS budu brat’ kak min dlya etogo…

igor_v_t
alexmos:

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

А полет по точкам - это уже очень сложно, думаю тут десяток крашей при отладке гарантирован. Но я пока не понимаю какя польза от того что коптер научится летать по программе?

Дотошно как меряет сонар не исследовал. Но при полетах над асфальтом с лежащим полицейским на полицейским подпрыгивает. При наклонах не подпрыгивает. Второе 20 градусов наклона для полета в автомате мало. У меня один раз коптер сдуло несильным ветром и час на поле искал. У меня разрешенный угол для управления автоматом ± 45 градусов и до 50 по диагонали.
При отработке автомата падал не меньше сотни раз, но с маленькой высоты. Поломано десяток винтов и несколько лучей.

mahowik:

dlya menya aktualen rezhim ALYARM! GO HOME! 😃
potomu GPS budu brat’ kak min dlya etogo…

Между нормальным возвратом домой и полетом в автомате практически нет разницы. Вместо дома подставляете путевые точки. Одно из применений автомата - видеосъемка. Коптер летит по заданной программе, а пилот может немного подруливать и сосредоточиться на видеосъемке.

alexmos

Ого, если для видеосъемки - то тут надо делать среьезно а это как минимум продвинутый интерфейс, чтобы в полевых условиях с 3D привязкой к местности заводить программу… Да и контроль с земли нужен цифровой. У меня в далекой перспективе есть такая цель, но для нее ардуино даже не планировал, как минимум Android (его можно “посадить” на борт пассажирром, там нормальный язык программирования, цифровые беспроводные интерфейсы, камера, GPS, мощный проц - в общем все что надо за смешные деньги).

igor_v_t
alexmos:

Ого, если для видеосъемки - то тут надо делать среьезно а это как минимум продвинутый интерфейс, чтобы в полевых условиях с 3D привязкой к местности заводить программу… Да и контроль с земли нужен цифровой. У меня в далекой перспективе есть такая цель, но для нее ардуино даже не планировал, как минимум Android (его можно “посадить” на борт пассажирром, там нормальный язык программирования, цифровые беспроводные интерфейсы, камера, GPS, мощный проц - в общем все что надо за смешные деньги).

В конечном итоге и нормальный сервис должен быть.
Но сначала коптер должен хорошо летать. Для этого планирую пока использовать платформу Arducopter (APM 1, APM 2). Пока что на АРМ 1 это выглядит так kitka-ua.blogspot.com . То есть управление коптером из спорта превращается в обычную рутину. Следующий шаг - улучшение поведения аппарата - плавные реакции и не в ущерб скорости (пока будет АРМ 2). А потом действительно процессор помощнее и какой нибудь Линукс и алгоритмы посерьезнее и уже к этому удобный интерфейс. Но самому зто сделать нереально, успеть бы освоить то что народ делает.

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

alexmos

Вот именно - все делать самому времени не хватит. Ещё и основаня работа за компом, если бы на заводе работал - было бы проще, так как смена деятельности. А тут вроде и время свободного много после работы - но за компом его не проведешь 😦