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

skyrider

Заработал сонар, почти отлично, на видео ручку газа не трогал вообще, видно как несколько раз “чихает” по высоте, а так все отлично! Браво Алексей!

Получается до этого я летал с отключенным сонаром, и рывки по высоте до этого были по барометру, как и сейчас если подняться метров на 5 и включить удержание, видимо для правильной работы калибровка по шести точкам обязательна, у меня почему то по ROLL становится криво. Алексей, последовательность калибровки не имеет значения (естественно кроме позиции №1)

soliada

Возник вопрос такого характера. А на какие пины подключать сонар на Ардуине с 2560АТмегой?

alexmos
skyrider:

После калибровки по этой методике ROLL почемуто стоит ровно под 45 градусов, что то делаю не так…

По GUI у вас по двум осям 255… а должно быть только по одной. Какая у вас схема расположения моторв? на рисунке для QUADX - т.е. оси датчика должны смотреть ровно под 90 градусов по горизонту. Сорри если по схеме это не очень понятно 😃 Порядок не имеет значения, да и точность расположения не надо выерять до 1 градуса- удерживать в руках вполне достаточно.

soliada:

Возник вопрос такого характера. А на какие пины подключать сонар на Ардуине с 2560АТмегой?

Не знаю, дело в том что мегу я в глаза не видел, и писать для нее код вслепую смысла нет. Trig можно на любую ногу вешать, а вот Echo - только там где есть свободное прерывание. Попробуйте разобраться в Sonar.pde как правильно настроить прерывания на мегу и на каком порту/ноге, а я включу в основной код…

skyrider:

видно как несколько раз “чихает” по высоте, а так все отлично

Это плохой симптом - на такой высоте как на видео сонар должен работать идеально. У меня при висении до 2-х метров никаких намеков нет на провалы. Если быстро носиться туда сюда с наклонами 45 град. - тогда да, начинает слегка подергивать по высоте.
Очень важно свободное пространство в угле 120 градусов от датчиков сонара, а также не должно быть наводок (типа проводов от ESC и моторов вблизи платы, серв на той же линии питания и т.д.), т.к. сонар имеет очень чувствителен к питанию, там же микрофонные усилители по сути.

skyrider
alexmos:

По GUI у вас по двум осям 255

Теперь только по Z 255

alexmos:

Какая у вас схема расположения моторв? на рисунке для QUADX - т.е. оси датчика должны смотреть ровно под 90 градусов по горизонту. Сорри если по схеме это не очень понятно Порядок не имеет значения

Схема расположения моторов QUAD X, пробовал менять последовательность, добился правильной калибровки в такой последовательности по Вашей схеме : 1 , 2 , 5 , 4 , 3 , 6. Не знаю почему , но в моем случае именно эта последовательность сработала, перепроверял три раза.
Если завтра позволит погода, проверю работу барометра, пропадут рывки по высоте после правильной калибровки акселя или нет.

alexmos:

чень важно свободное пространство в угле 120 градусов от датчиков сонара

С этим все в порядке.

alexmos:

а также не должно быть наводок (типа проводов от ESC и моторов вблизи платы, серв на той же линии питания и т.д.)

Попробую поменять на провода в изоляции.

alexmos:

на такой высоте как на видео сонар должен работать идеально

Может быть причиной небольших провалов то что мой квадрик более тяжелый, моторы относительно медленные 750кв, т.е он более вялый , не такой резкий, и ему нужны другие пиды ALT?

alexmos
skyrider:

Схема расположения моторов QUAD X, пробовал менять последовательность, добился правильной калибровки в такой последовательности по Вашей схеме : 1 , 2 , 5 , 4 , 3 , 6. Не знаю почему , но в моем случае именно эта последовательность сработала, перепроверял три раза.
Если завтра позволит погода, проверю работу барометра, пропадут рывки по высоте после правильной калибровки акселя или нет.

Хм, похоже баг где то в алгоритме. Последовательность не должна играть никакой роли, кроме того что Z всегда в начале. Подумаю…

skyrider:

Может быть причиной небольших провалов то что мой квадрик более тяжелый, моторы относительно медленные 750кв, т.е он более вялый , не такой резкий, и ему нужны другие пиды ALT?

Нет, по видео очень похоже на кратковременные лаги сонара. От веса конечно зависит, но просто будет чуть медленне стабилизация - а тут из стабилного состояния рывки в нестабильное. Попробуйте запустить моторы на рабочую мощность с подключением в ГУИ и гляньте что показывает сонар. Высота не должна прыгать.

Вообще с сонаром надо быть осторожнее, т.к. если он начнет выдавать неправильные данные (например от наводок решит что высота всегда равна 1 метру) - коптер может как свалиться, так и в небеса улететь. Я сделал ограничитель по барометру для крайних случаев, но не проверял его работу. Так что при испытаниях надо руку всегда держать на ручке отключения режима Alt Hold 😃

skyrider

Изменил пару параметров в config.h
#define MINTHROTTLE 1130
#define INTERNAL_I2C_PULLUPS
#define DEADBAND 20
#define MAXTHROTTLE 1900
#define THROTTLE_HOVER 1440
#define SHIFT_HOVER 1450
#define MAG_ORIENTATION(X, Y, Z) {magADC[ROLL] = -Y; magADC[PITCH] = X; magADC[YAW] = Z;}
Откалибровал по шести точкам и подлетнул на метровой высоте - дергается при включении Alt Hold по высоте как припадошный каждые 2-3 секунды, что то из того что я сделал ему явно не понравилось, нужно цеплять блютус и смотреть что кажет в полете.

alexmos:

Попробуйте запустить моторы на рабочую мощность с подключением в ГУИ и гляньте что показывает сонар. Высота не должна прыгать.

Скачет примерно + - 0.1-0.3

HikeR

народы, подскажите, плиз, по работе сонара.
если заявлена дальность 5 метров, то что выдает сонар на бОльшей высоте?
какой примерный “угол охвата”?
какая средняя по больнице частота опроса?

alexmos
HikeR:

народы, подскажите, плиз, по работе сонара.
если заявлена дальность 5 метров, то что выдает сонар на бОльшей высоте?
какой примерный “угол охвата”?
какая средняя по больнице частота опроса?

Правильный ответ - зависит от сонара. Как у него определено в датащите для таких случаев, то и должен выдавать.
Но к примеру тот, что я использую - ему плевать на датащит и он выдает при потере сигнала 1 метр (все 4 штуки что я тестил - по разному). Но при этом время измерения подскакивает до 250мс, и вот так можно распознать ошибку.

Частота измерений зависит от расстояния… При нулевом - близко к нулю, +50мс на паузу между измерениями.

Угол охвата также зависит от сонара, на практике градусов 60. В датащите приводится диаграмма направленности.

5 метров это для идеальных условий. Реально в условиях зашумленного питания, ненулевого угла наклона будет меньше. Я ставлю с 2 до 3 метров плавный переход на барометр. При наклонах лимит опускается (я заложил примерную диаграмму направленности в алгоритм).

mahowik
alexmos:

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

Попробовал. По графикам пока очень нравится. Выводил одновременно 2 графика: ускорение “с минус acc_1G” и “c минус 1/InvG”. В ГУИ они практически совпадают.
Профит:

  1. скорость не шумит
  2. высота соот-но шумит меньше, а если повысить коэф. компл. фильтра до 200-300, то вообще меедленно плавает +/-0.2…0.4 м
  3. простота настройки, т.к. нет зависимых параметров типа ПИДы в интеграторе и коэф. компл. фильтра

но это все теория пока 😃 облетать не могу, т.к. еще не починился после последнего краша…

alexmos

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

mahowik

На 2.0 перевести не долго, я уже с ним и тестировал… а цикл будешь паузами выравнивать, чтобы сводить время итерации к константе?

alexmos

Нет, в 2.0 вроде сделали некоторое подобие таймслотов для распределения медленных вычислений, вот их заюзаю.

Полетал сегодня - барометр не нравится как держит. Все равно склонен к осцилляциям. Иногда и до 3 метров прыгал верх вниз. Не то, к чему стремился 😦

mahowik

Когда идеи заканчивались, меня спасали более мягкие ПИД-ы + более зажатые констрэйнты конечного PID регуля, в частности на D часть…

з.ы. Ну все! Желаю удачи! A я собирать чемоданы и лететь туда где не бывает холодно и недоступный интернет, точнее очень дорогой… 😃

soliada
alexmos:

Не знаю, дело в том что мегу я в глаза не видел, и писать для нее код вслепую смысла нет. Trig можно на любую ногу вешать, а вот Echo - только там где есть свободное прерывание. Попробуйте разобраться в Sonar.pde как правильно настроить прерывания на мегу и на каком порту/ноге, а я включу в основной код…

Здравствуйте Алексей. Признаться так и не смог разобраться с этим вопросом.Если чесно,в этом вопросе не совсем разбираюсь,вернее совсем не разбираюсь,а точнее не знаю в каком направлении надо мыслить.
Если не трудно,можете подсказать что конкретно надо посмотреть- проанализировать в Sonar.pde?
Очень хочется попробовать сонар.

alexmos

Я тоже плохо представляю в чем отличия меги от обычной 328/168, а особенно в вашем варанте её включения. Задача - найти свободное прерывание, выбрать ногу, которая ему соотвествует. Далее прописать эту ногу в константе SONAR_READ в конфиге, задействовать прерывание по сигналу на этой ноге:

  #if defined(PROMINI)
   PCICR |= (1<<0) ; // PCINT activated for PINS [D8-D13] on port B
   PCMSK0 = SONAR_READ_MASK; // trigger interrupt on this pin only
  #endif
  #if defined(MEGA)
    // TODO: setup interrupt on MEGA
  #endif

Если прерывание отдично от INT0 - переписать заголовок обработчика:

// Install interrupt  handler
ISR(PCINT0_vect) {

В общем то это все очень просто но я не могу потестить не имея меги.

alex_f73

Подскажите, а HC-SR04 будет работать ? В Config.h такого не нашел.
И если будет, то где посмотреть схему включения ?

Почитал ветку, сонар HC-SR04 работает. Для его включения надо раскоментировать //#define DYP_ME007 ?
Остается открытый вопрос куда его включать.

alexmos

Если вы про мой код - то будет. Он и писался под такой сонар. Раскоментируйте #define SONAR и под ним будут определены ноги, куда его цеплять. Также в Sonar.pde есть пояснения насчет включения.

Но дело в том что у меня нет #define DYP_ME007… Так что, возможно, вы смотрите другую прошивку.

alex_f73

Я смотрел код mahowik, я думал вы совместно одну прошивку допиливаете.Сейчас скачал вашу, для CriusSE, что раскоментировать или закоментировать надо ?И если у меня ESC Plush то мне MINTHROTTLE 1300 устанавливать ?

alexmos

Моя прошивка как раз для CriusSE настроена, на ней и тестирую. Вообще по основным настройкам - выставляйте все так же, как и в обычной 1.8, 1.9. Если есть вопросы - то смотрите в стандартных руководствах как что настроить. Мои настройки в конце, там надо убрать OPTFLOW и настроить SONAR (фактически только его подключить надо и все оставить по умолчанию). И установить THROTTLE_HOVER на покаатели газа в момент отрыва, или закоментировать вообще этот блок.

8 days later
skyrider

Если меняем THROTTLE_HOVER 1400 на другое значение, например 1450, значение SHIFT_HOVER 1400 тоже нужно менять?
//#define OPTFLOW ADNS_5050 - режим OPTFLOW полностью отключен, или нужно отрубать что то еще?

alexmos
skyrider:

Если меняем THROTTLE_HOVER 1400 на другое значение, например 1450, значение SHIFT_HOVER 1400 тоже нужно менять? //#define OPTFLOW ADNS_5050 - режим OPTFLOW полностью отключен, или нужно отрубать что то еще?

SHIFT_HOVER можно менять, можно не менять. Я ставлю 1500 и у меня отрыв всегда на середине газа (по пульту). Если определить в конфиге #define SHIFT_HOVER = THROTTLE_HOVER то будет только экспонента без сдвига.

Закомнтировать //define OPTFLOW достаточно.