MultiWii - обсуждаем и отлаживаем Alt Hold

SovGVD

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

как вариант:

  1. считать высоту такой же, пока нет сигнала N циклов,
  2. если N>порог_ошибок, то считаем что улетели и забиваем на код ограничения высоты,
  3. если сигнал вылез, N=0 и go to 1

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

Sir_Alex

А в чем проблема ориентироваться на высоту Сонар+баро. Просто должен включатся AltHold, как только высота становится меньше 2м. Поднялись выше - отключается (включается предыдущий режим).

SovGVD

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

igor_v_t
SovGVD:

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

Можно управлять не газом ,а заданной высотой (полуавтоматический режим)

alexmos
SovGVD:

а с другой стороны - какова вероятность что сигнала долго нет из-за глюка/поверхности?

Вероятность большая. Например при определенном угле наклона сигнал уже не вернется. Ещё mahovik говорил, что шум моторов может сонар забивать (может на какой-то резонансной частоте, непредсказуемо). Так что тут однозначно нужна связка сонар+баро.

AltHold может управляться газом, но по другому алгоритму (подстройка высоты идет, а коптер старается ей соотвествовать). Но в данном случае подстраивать вниз нельзя, а вверх можно сколько угодно резко, так что этот режим - не AltHold.

А если сделать такой режим, что до X высоты летем как хочешь, ниже X - огранчиваем скорость снижения, напрмер 10см/сек. Тогда и посадка возможна без выхода из этого режима, и большие просчеты пилотирования будет время скорректировать.

SovGVD

как вариант можно ограничить угол наклона на малой высоте, что уменьшит скорость (опасно гонять у земли) и не даст пропасть сигналу из-за сильного наклона
опять же как вариант: повесить 2 сонара под углом (например 10*) и поочередно их мучить - это конечно усложнит конструкцию, но добавит надежности и при наклонах и при потери сигнала

скорость снижения сложно сделать 10см/сек, при том что баро показывает ±1м, а сонар может врать или вообще пропадать

alexmos

Выложил все наработки, все протестировал в GUI.
code.google.com/p/multiwii-alexmos/…/browse/?r=15#…

Улучшения:

  • Мягкий старт - сенсоры согласуются сразу при инициализации и не требуется время на стабилизацию
  • Автоматическая подстройка внутреннего PID-регулятора сенсоров
    (позволяет автоматически усилить влияние акселерометр в случае его корректной работы, и быстрее корректировать его ошибку в случае некорректной)
  • Более точная процедура калибровки акселерометра по 3-м осям (для улучшения точности удержания высоты в движении + для улучшения полетов в level mode)
    www.multiwii.com/forum/viewtopic.php?f=7&t=1247
  • Настраиваемая коррекция газа по углу наклона (как в ардукоптере, для улучшения точности удержания высоты в движении) - THROTTLE_ANGLE_CORRECTION
  • улучшен алгоритм управления высотой в режиме AltHold по стику газа (более плавный чем был)
  • плавный переход с сонара на барометр на заданной высоте (начиная с SONAR_MAX_DISTANCE - 1м)
  • добавлен коэффициент усиления Alt PID при использвании сонара - SONAR_BARO_PID_GAIN (для более агрессивной стабилизации при полете по сонару)
  • улучшен алгоритм авто-калибровки акслерометра в полете (теперь калибруется по всем 3-м осям, а не только по Z, что дает бОльшую точность AltHold в движении)
    • в теории эту автокалибровку можно брать и для level-mode, даже если не включен AltHold.
alexmos

А вот и тесты новой версии:

www.youtube.com/watch?feature=player_detailpage&v=…

www.youtube.com/watch?v=nuJkHBdoO3U&feature=player…

После подстройки PID сонар работает просто идеально: высоту держит ±5 см и стабилизируется за 2-3сек без осцилляций вообще.
По барометру вроде тоже неплохо, в пределах расчетного метра и тоже без осцилляций.

soliada
alexmos:

А вот и тесты новой версии:

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

SovGVD
alexmos:

А вот и тесты новой версии:

не, всё… завтра впаиваю bmp085 и сонар и то же так попробую (нашел заначку с пропами - 2 пакета - ^_^ можно экспериментить снова)

alexmos:

Выложил все наработки, все протестировал в GUI.
code.google.com/p/multiwii-al...unc%2FMultiWii

или я чето не то делаю или у меня косяк с DNSками

$ svn checkout multiwii-alexmos.googlecode.com/svn/trunk/ multiwii-alexmos-read-only
svn: E170000: URL ‘multiwii-alexmos.googlecode.com/svn/trunk’ doesn’t exist

upd: скачалось… транк надо было стереть

soliada:

не могли бы вы выложить готовую прошивку

nekaka.com/folder/view/fflQygFI - папка с multiwii вещами и ссылка на прошивку nekaka.com/d/goCWk9pImD

alexmos

Я сделал zip-архивчик, для тех у кого нет svn: code.google.com/p/multiwii-alexmos/…/detail?name=M…
этот конфиг я заливаю себе. Только я закоментил сонар (навряд ли у кого он есть) и отдладку в GUI. Все остальное “нестандартное” подписано в config.h

Кстати сонар я брал у этого продавца: www.ebay.com/itm/280778106586 (цена вопроса 4$ с доставкой), взял 4 штуки про запас все рабочие.

Совет: откалибруйте акселерометр по моему алгоритму www.multiwii.com/forum/viewtopic.php?f=7&t=1247 (повернуть и откалиброватья по всем 6-ти направлениям), и проверьте что в GUI с него действительно идут даные 255 (±5) в предельных положениях для всех осей.

И очень желательно тестировать “с рук” для начала, т.к. толком не протестил все, а разные сетапы могут себя вести непредсказуемо (особенно это касается акселерометра). У меня он почти не уплывает со временем, и мало плывет от вибраций, поэтому его показания позволяют сильно повысить точность стабилизации.

Кстати, с сонаром посадка намного упрощается. И раньше проблем не было благодаря моду ThrottleExpo, но теперь в режиме AltHold как перышко опускается 😃 С барометром так не прокатывает - все таки подкидывает немного возле земли из-за более слабых настроек PID.
На видео видна разница.

mahowik
alexmos:

После подстройки PID сонар работает просто идеально: высоту держит ±5 см и стабилизируется за 2-3сек без осцилляций вообще. По барометру вроде тоже неплохо, в пределах расчетного метра и тоже без осцилляций.

Алексей, если не трудно впиши свои демо-ПИДы в EEPROM.pde или выложи их сюда pls…

Dimm168pin
alexmos:

Я сделал zip-архивчик, для тех у кого нет svn: code.google.com/p/multiwii-alexmos/…/detail?name=M…
этот конфиг я заливаю себе. Только я закоментил сонар (навряд ли у кого он есть) и отдладку в GUI…

это вы зря)) я как раз ждал когда ж появится поддержка) сонар лежит) служба идет) точнее кролик идет)
дособеру большую раму, обязательно проверю)
www.ebay.com/itm/200659774649?ru=http%3A%2F%2Fwww.…
такой брал, для ушастого. )5 ног.

mahowik
alexmos:

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

  • bma180 хорош однозначно и резолюшн можно поднять до +/-16g и точность 256 на 1g еще останется, чего вполне достаточно… + температурный сенсор (и корректировка по нему) внутри…
  • bma020 при 8g дает всего 64 единицы на 1g… маловато…
  • adxl345 резолюшн дает хороший, но поплывет на морозе (уже приехал… все никак не впихну)
alexmos:

Если в дачике настроен фильтр 25Hz, разве из этого следует, что в течение 40мс показания не меняются с него? Это как взять слегка размытую картинку (Гаусс ~ LPF) и разбить на большие пиксели - разница все равно будет заметна глазу.

посмотрел датаршит на adxl345 (7-я таблица)… как и говорил, количество самплов всего в два раза выше чем полоса пропускания… т.е. по 2 сампла на герц…
по bma180 надо смотреть, не удивлюсь если там также…

бегло посмотрел код:

  1. Помнишь говорили про “раскрытие скобок”? походу ошибка все еще там 😉
  2. BaroSonarDiff думаю стоит повесить на старт движков, т.к. за пару мин. баро может уплыть на 1…3 метра, а взлетов-посадок обычно несколько на одной батарее…
  • в последней дев. прошивке есть улучшайзер для бмп085, также вот тут чел запостил изменения по драйверу баро
    www.multiwii.com/forum/viewtopic.php?f=7&t=363&sta…
    как мин. усреднение температурного сенсора точно можно взять, т.к. этот параметр меняется очень медленно… думаю уменьшит шум по баро…
gensek
alexmos:

Я сделал zip-архивчик, для тех у кого нет svn: code.google.com/p/multiwii-al...q=#makechanges
этот конфиг я заливаю себе. Только я закоментил сонар (навряд ли у кого он есть) и отдладку в GUI. Все остальное “нестандартное” подписано в config.h

Слежу за этим проектом в основном из за сонара, лежит в пакетике уже несколько месяцев и ждет своего часа, похоже он настал.
Хотелось бы попробовать прошивку с полностью задействованным сонаром,а также как попросил mahowik демо-ПИДы в EEPROM.pde, и если можно подробней про точную калибровку акселя, по ссылке не очень понятно.

alexmos

Да, самое главное забыл 😃 Мои PID для Alt: P=10, I=0.05, D=10.
Можно начать с таких, это первое, что я поставил, и оно заработало.
(в этом PID D пропорционально P, так что если увеличиваете P, D можно не трогать).
Vel PID не используется, можно их не крутить.

Ещё в конфиге SONAR_BARO_PID_GAIN 1, что дает удвоение отклика PID при работе сонара.

gensek:

Хотелось бы попробовать прошивку с полностью задействованным сонаром,а также как попросил mahowik демо-ПИДы в EEPROM.pde, и если можно подробней про точную калибровку акселя

Сонар в config.h включается, просто раскоментируйте #define SONAR
Тогда с тестами не спешите, я напишу инструкцию на русском, как все правильно настроить и проверить перед полетом (а то уже человек пожаловался, что в небо улетел 😃

mahowik:
  1. Помнишь говорили про “раскрытие скобок”? походу ошибка все еще там

Вряд ли - я достаточно долго в GUI гонял, пробовал и разные формулы, сейчас принцип корректировки самый верный.

mahowik:

посмотрел датаршит на adxl345 (7-я таблица)… как и говорил, количество самплов всего в два раза выше чем полоса пропускания… т.е. по 2 сампла на герц…

У меня стоит в плане попробовать уменьшить частоту до 20…50Hz и сравнить две версии. Но это не совсем просто, так надо будет по новой найти все коэффициенты при интеграторах.

mahowik:
  1. BaroSonarDiff думаю стоит повесить на старт движков, т.к. за пару мин. баро может уплыть на 1…3 метра, а взлетов-посадок обычно несколько на одной батарее…

Не принципиально. При старте системы на земле, 100% рабоатет сонар, а барометр корректируется по нему за пару секунд (LPF, стоящий на разницу, совсем слабый - только чтобы шум барометра сгладить).

mahowik:

в последней дев. прошивке есть улучшайзер для бмп085, также вот тут чел запостил изменения по драйверу баро
www.multiwii.com/forum/viewto...tart=130#p9159
как мин. усреднение температурного сенсора точно можно взять, т.к. этот параметр меняется очень медленно… думаю уменьшит шум по баро…

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

На оф. форуме у marbalona на обном барометре очень крутая стабилизация. Я слежу за веткой.

PS: Если хочешь, создам branch в svn чтобы ты мог тоже править исходники. А то ты свои редко выкладываешь, но некоторые вещи интересно посмотреть.

Sir_Alex

Эххх, вот бы надо пиратом такая же команда работала… а то походу я там вообще один остался 😦

SovGVD
Sir_Alex:

Эххх, вот бы надо пиратом такая же команда работала… а то походу я там вообще один остался

когда то и с пиратом так было =)

tusik
Sir_Alex:

Эххх, вот бы надо пиратом такая же команда работала…

Так на пирате это все уже работает. Я, кстати, сегодня подлетнул на 2,4. В комнате. Поднял на пол-метра и сел. Места мало

igor_v_t
mahowik:
  • в последней дев. прошивке есть улучшайзер для бмп085, также вот тут чел запостил изменения по драйверу баро
    www.multiwii.com/forum/viewtopic.php?f=7&t=363&sta…
    как мин. усреднение температурного сенсора точно можно взять, т.к. этот параметр меняется очень медленно… думаю уменьшит шум по баро…

Попробовал улучшайзер. У меня не помогает, правда стоит усреднение по 4 измерениям. Пришел к выводу что MS5611 все легко и просто , а с 085 ±1 метр в самом хорошем случае. Я с ним применял сонар МВ1200 . Он меряет до 7 метров по паспорту и до 5 обычно без проблем . И это позволяло в автомате летать на любой высоте.