А давайте обсудим Arducopter - APM

Alex-13

К сожалению я в програмировании полный “дуб”

igor_v_t
Alex-13:

К сожалению я в програмировании полный “дуб”

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

Syberian
Sir_Alex:

пока идет изменение температуры датчика - прилично плывет высота

Может, вообще температуру выбросить? Т.е. для навигации применять высоту ЖПС, а для удержания высоты, как более быструю величину - барометр? Тупо его сырые показания, безо всяких вычислений.

Просто замечал такую фишку, когда зимой летаешь, 3.3В стаб греется, и когда треха стоит на земле, температуру показывает +15, винты включил - постепенно до -6 доплывает, в результате баровысота становится -30. После посадки все повторяется.

Еще всякие вукенги используют акселерометр для вертикальной стабилизации - тот самый трюк на видео, когда пихают квад снизу или сверху, а он как мячик назад отскакивает.
Насколько я помню, в 2.0 эта стабилизация вообще отключена.

alexeykozin

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

наверное я другую версию смотрел, сейчас смотрю библиотеки 2.1 там константы

ступил, в пятницу проверял код бошевского бмп085,
тут константы

igor_v_t
Syberian:

Может, вообще температуру выбросить? Т.е. для навигации применять высоту ЖПС, а для удержания высоты, как более быструю величину - барометр? Тупо его сырые показания, безо всяких вычислений.
Еще всякие вукенги используют акселерометр для вертикальной стабилизации - тот самый трюк на видео, когда пихают квад снизу или сверху, а он как мячик назад отскакивает.
Насколько я помню, в 2.0 эта стабилизация вообще отключена.

Высота ЖПС имеет большую ошибку. Вообще с 085 барометром точность порядка 2-х метров, а + сонар и летает нормально. Проблема только на переходе на уровне 8 метров. Пытался я использовать акселерометр для вертикальной стабилизации около земли, но не получилось, поэтому при ручном газе на малых высотах добавил в газ вертикальную скорость с коэффициентом из данных сонара с ограничением +40 -20 и перестал проваливаться при маневрах около земли.
Вообще для плавного полета ПИДы снижать нужно и тогда летает плавненько. Я свой настраивал на предельные режимы для полетов при ветре , но при этом немного дерганный становится.

alexeykozin
igor_v_t:

…Пытался я использовать акселерометр для вертикальной стабилизации около земли, но не получилось…

…Вообще для плавного полета ПИДы снижать нужно и тогда летает плавненько. Я свой настраивал на предельные режимы для полетов при ветре , но при этом немного дерганный становится…

я много думал как “наза” так лихо может стабилизировать любую модель не делая ее дерганной и четко стабилизируя,
однозначно при толчках используется акселорометр. Но брать разницу проекции на перпендикуляр к земле текущего ускорения ( сумма вектора ускорения + вектора силы тяжести) не так просто. это не проекция на ось z акселя потомучто вертоль всегда в наклоне, нужно вычислять перпендикуляр земли по гироскопам, и брать на него проекцию векторов ускорения акселя (x^2 + Y^2 + Z^2) = ускорение_силытяжести^2 + ускорение_модели^2.
в результате получаем значение ускорения к перпендикуляру земли, дальше просто иходя из ускорения и времени получаем вертикальную скорость, исходя из скорости и времени вертикальный путь.
что касается второго пункта назы и недерганность и четкость в любой модели - тут наверное еще автокалибровка пидов, видимо отслеживает как модель отреагировала на предыдущее действо и если неадекват прибавляет почутьчуть воздействие

igor_v_t
alexeykozin:

я много думал как “наза” так лихо может стабилизировать любую модель не делая ее дерганной и четко стабилизируя,
однозначно при толчках используется акселорометр. Но брать разницу проекции на перпендикуляр к земле текущего ускорения ( сумма вектора ускорения + вектора силы тяжести) не так просто. это не проекция на ось z акселя потомучто вертоль всегда в наклоне, нужно вычислять перпендикуляр земли по гироскопам, и брать на него проекцию векторов ускорения акселя (x^2 + Y^2 + Z^2) = ускорение_силытяжести^2 + ускорение_модели^2.
в результате получаем значение ускорения к перпендикуляру земли, дальше просто иходя из ускорения и времени получаем вертикальную скорость, исходя из скорости и времени вертикальный путь.
что касается второго пункта назы и недерганность и четкость в любой модели - тут наверное еще автокалибровка пидов, видимо отслеживает как модель отреагировала на предыдущее действо и если неадекват прибавляет почутьчуть воздействие

DCM[2][2] это косинус между вертикалью и вертикальной осью. Когда предельный угол по GPS у меня стоял 10 град летал плавно, а при 45 срывается с места и летит в новую точку как чумной. Поэтому может не ПИДы а ограничения подстраивать надо и тогда будет плавность, а с ограничениями проще получится так как если ПИД сильно снизить (в 2 раза) стабилизироваться плохо будет. По высоте на малых высотах сонар держит ±10 см. Если ПИД уменьшить точность уменьшится плавность повысится и с интегральной составляющей поиграться надо, но до этого руки не дошли.

Sir_Alex

Прикольно. Кстати, вроде в последних прошивках Арду, что то допиливали, что бы лучше вел себя в Windy погоду. (Еще были видео, когда батарейку подвешивали к одному лучу).

И еще, я тут подумал, раз уж можно использовать аксель для льт холда… то почему нельзя использовать его для Лоитер режима? Ведь с его помощью можно детектить, сместился в реальности коптер или нет (когда показания GPS скачут)

alexeykozin

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

Timmy

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

alexeykozin
Timmy:

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

сколько десятков кг весит это оборудование?
сколько мощности потребляет? сотни ватт?
сколько радиус точности необходимой позиции? несколько км?
тут аксели гирики весят в месте с платой десятки грамм, потребляют милиамперы не имеют никакого обвеса по фильтрации питания и защиты от наводок,
собственно когда точность источника данных выражается в единицах нет смысла математически считать с точностью до 10 знака, а если мыслить прогнозами - будет результат как у китайской фотокамеры с сенсором на 300килопикселей интерплированной до 5 мега

Dokz

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

alexeykozin

вот какие мысли поповоду почему у ардукоптера (и ардупланера тоже) если сильные пиды - осцилирует слабые не обеспечивает четкий горизонт.
есть пиды которые определяют усиление того или иного сигнала, возьмем стабилизацию по крену
допустим пид стабилизации крена P определяет пропорцию при каком отклонении от нормы насколько сильное должно быть воздействие на баланс моторов в пропорции к имеющемуся крену,
есть есть еще два пида по крену - как я понимаю которые определяют кривую где выше усиление в верхней части или при близости к нулевой отметке. Тоесть вся завязка на отклонении от горизонта и некотором значении передаваемом на регули / сервы
совершенно не учитывается момент инерции.
вот ситуация если
квадрокоптер уклонился на 1 градус по крену то надо дать газку одному мотору и чуть сбавить на другом
этаже ситуация, уклон составляет тот же 1 градус но модель имеет вращательный момент по крену в нужном для стабилизации направлении - в этой ситуации пора бы сделать обратную отработку на парирование инерции
этого пид-система не предусматривает,
собственно пока модель уклонена влево стабилизация будет давать сигнал правее, чем ближе к нормали тем меньше но все равно в этом же направлении, а парировать надо начинать раньше, учитывая скорость исправления ошибки рассчитывая противодействующее усилие.

видимо это есть в назе и нет в ардупилоте

igor_v_t

Вывел на порт барометр и посмотрел АРМ 1 и АРМ 2 на столе. Практически 085 и 5611 шумят одинаково и меряют одинаково. Изменение высоты на 0,5 м (длина кабеля) видно при усреднении по 10 измерениям. Так что улучшений при переходе на новую плату в части баро не предвидится. Где то народ уже писал об этом.

igor_v_t

Еще немного повозился. Вписал чтение баро в быстрый цикл. То есть пытаемся читать быстро (200 Гц) усредняем по 10 измерениям. Результат таков, что баро не успевает, но порядка 50 Гц получить может удастся. В результате размах шумов 50 см. Подъем на высоту 70см четко виден, но с течением времени данные ползут

alexeykozin

игорь, а какие нибудь меры по фильтрации шумов на шлейфе шелда, втч по питанию, акустических, вибрационных, световых предпринимаете?
производитель пишет что даже свет влияет на результаты измерений может этот синус от лампы?

igor_v_t
alexeykozin:

игорь, а какие нибудь меры по фильтрации шумов на шлейфе шелда, втч по питанию, акустических, вибрационных, световых предпринимаете?
производитель пишет что даже свет влияет на результаты измерений может этот синус от лампы?

Синусоида-это перемещение датчика по высоте на длину кабеля (убедится что правильно меряю и понять разрешающую способность). В конце добавлены данные через 10 мин-видно что измеренная высота ушла в низ - вывод : с абсолютной точностью есть вопросы и нужно разбираться.

alexeykozin:

вот какие мысли поповоду почему у ардукоптера (и ардупланера тоже) если сильные пиды - осцилирует слабые не обеспечивает четкий горизонт.
есть пиды которые определяют усиление того или иного сигнала, возьмем стабилизацию по крену
допустим пид стабилизации крена P определяет пропорцию при каком отклонении от нормы насколько сильное должно быть воздействие на баланс моторов в пропорции к имеющемуся крену,
есть есть еще два пида по крену - как я понимаю которые определяют кривую где выше усиление в верхней части или при близости к нулевой отметке. Тоесть вся завязка на отклонении от горизонта и некотором значении передаваемом на регули / сервы
совершенно не учитывается момент инерции.
вот ситуация если
квадрокоптер уклонился на 1 градус по крену то надо дать газку одному мотору и чуть сбавить на другом
этаже ситуация, уклон составляет тот же 1 градус но модель имеет вращательный момент по крену в нужном для стабилизации направлении - в этой ситуации пора бы сделать обратную отработку на парирование инерции
этого пид-система не предусматривает,
собственно пока модель уклонена влево стабилизация будет давать сигнал правее, чем ближе к нормали тем меньше но все равно в этом же направлении, а парировать надо начинать раньше, учитывая скорость исправления ошибки рассчитывая противодействующее усилие.

видимо это есть в назе и нет в ардупилоте

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

Alex-13

Хочу поделиться опытом с Arducopter AP 1 плата Amega 2560 Купил весной 2011
Поставил на Quadrocopter после 10-12 полетов разбил,но не по своей вине а в связи с тем что произошел неконтролируемый полет
Через некотрое время все повторилось один к одному …Перебрал множество причин,но так и не дошел до истины
Перепрограмировал на Ardupilot и поставил на самолет Все лето отлетал во всех режимах и очень доволен
13 Января,после долгого перерыва, вышла версия Arducopter 2.2 beta На сегодняшний день эта ветка дискусси
насчитывает сотни откликов Mногие начали пробовать новую версию но воз и ныне там
Десятки разбитых коптеров Это видео сделано на прошлой неделе наглядно показывает то с чем я столкнулся год назад
Выводы сделайте сами

Ветка дискусии

diydrones.com/forum/topics/arducopter-2-2-beta

Video

Sir_Alex
igor_v_t:

с абсолютной точностью есть вопросы и нужно разбираться.

Это температурный дрифт, изменение температуры датчика на один градус, может привести к изменению высоты на 1м (я точных замеров не делал, но порядок примерно такой). Я уже проводил такие эксперименты, почитайте предыдущую страницу (графики правда уже пропали с сервера). По итогу я оставил Медианный фильтр на 11 шагов. Перемещать чтение датчика в быстрый цикл не имеет смысла, т.к. время одного измерения датчика ~10ms (сейчас под рукой нету даташита), а это ~50Hz (с учетом, что еще и температуру надо читать раз в 5 раз).

igor_v_t
Sir_Alex:

Это температурный дрифт, изменение температуры датчика на один градус, может привести к изменению высоты на 1м (я точных замеров не делал, но порядок примерно такой). Я уже проводил такие эксперименты, почитайте предыдущую страницу (графики правда уже пропали с сервера). По итогу я оставил Медианный фильтр на 11 шагов. Перемещать чтение датчика в быстрый цикл не имеет смысла, т.к. время одного измерения датчика ~10ms (сейчас под рукой нету даташита), а это ~50Hz (с учетом, что еще и температуру надо читать раз в 5 раз).


Прописал два барометра в течении 10 минут на столе. АРМ 2 с 5611 (желтенький) похоже получше в 4 раза;), поэтому есть смысл с ним повозится. Идея такова добавить акселерометр в формулу фильтрации (т.е. предсказание изменения высоты). Будет такой себе Калман убогонький. На нормальный мощности процессора похоже уже не хватит.
Радует, что новый датчик лучше. Надеюсь, что присоединив Калман убогонький можно повторить результат китайцев. Полгода назад занимался проблемой но с точностью 085 смысла не было.