MultiWii

Covax

Саш, а не хочешь попробывать повесить настройку пидов на крутилку в мультивие?
Вообще конечно идеально выбирать какой именно параметр будет обновляться через ГУИ, но хотя бы через прошу.

#RC_TRIMMING_ROLLPITCH_P
//#RC_TRIMMING_ROLLPITCH_I
//#RC_TRIMMING_ROLLPITCH_D
и т.д.

mahowik
alexmos:

как сонар работает совметсно с барометром на пределе измерений сонара или в сложных для него условиях

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

#define MAX_SONAR_RANGE 400
#define BARO_TO_SONAR MAX_SONAR_RANGE+150 // Due to low baro accuracy
#define SONAR_TO_BARO_FADE (MAX_SONAR_RANGE/3) // 33% of Max sonar range
#define SONAR_TO_BARO_FADE_FROM (MAX_SONAR_RANGE - SONAR_TO_BARO_FADE) //4m-33% = 2.67m start value to fading from sonar to baro

int32_t  currAlt;
  if(SONAR){
    //sonarTempDistance = (sonarTempDistance - (sonarTempDistance >> 3)) + sonarDistance;
    //sonarDistance = sonarTempDistance >> 3;

    if((BaroAlt - BaroAltOffset) < BARO_TO_SONAR){
      float scale = (sonarDistance - SONAR_TO_BARO_FADE_FROM) / SONAR_TO_BARO_FADE;
      scale = constrain(scale, 0, 1);
      currAlt = ((float)sonarDistance * (1.0 - scale)) + ((float)(BaroAlt - BaroAltOffset) * scale);
    }
    else{
      currAlt = (BaroAlt - BaroAltOffset);
    }
  }
  else{
    // no sonar altitude
    currAlt = (BaroAlt - BaroAltOffset);
  }
Covax:

настройку пидов на крутилку в мультивие

по идее не сложно… тут даже это было в теме месяцев так 6-8 назад… некий неизвестный Сайбериан писал неизвестному Сергею Коваксу с кусками кода в комменте… ))
про неизвестных шучу конечно! 😉 но кажется точно было в теме это… посмотрю отпишусь… а пока пора спать… чрез 6ч на работу ((

alexmos
mahowik:

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

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

mahowik:

С легким ветром и в динамике (вперед на скорости 15-20км/ч потом резко назад…) подбрасывает вверх до 5м…

Мне кажется тут поможет только дебаггинг алгоритма - подключать bluetoth, брать ноут и гонять. Один гоняет, другой сморит в GUI как ведет себя определитель высоты. За ту часть, что в PID контроллере, я практически уверен - там сложно ошибиться.

D-составляюшая у меня проявляется хорошо - если она в 0, то резкие рывки вниз отрабатываются с задержкой, если она 50 - то мгновенно. Ты точно Alt PID крутишь? Velocity PID не используется у меня.

mahowik:

тут какой то косяк с офф. версией. либо пишут что оч. хорошо держит (куча примеров на офф. форуме с рабочими пидами + я тож добивался хороших результатов порой), либо пишут вообще про разгон в +/-5м…

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

SovGVD

мне послышалось или 20-80кг, 150км и 20к$ о_0
национальная разработка как всегда =)))

mahowik
alexmos:

Мне кажется тут поможет только дебаггинг алгоритма - подключать bluetoth, брать ноут и гонять. Один гоняет, другой сморит в GUI как ведет себя определитель высоты.

это дааа, напарника порой очень не хватает…

alexmos:

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

а вот тут может быть косяк… в оф. версии там ПИ-ПД регуль, где ПИ на медленных данных высоты, а ПД на быстрых данных скорости и это должно работать. хороший пример - стаб. мод с ПИ-ПД регулем, где ПИ тоже на относительно медленных данных углов из ИМУ, а ПД на быстрых данных угловых скоростей с гиро… это я к тому что рано наверное ты отказался от ПИ-ПД… и я писал также об этом АлексуВПариже приводя данную аналогию в защиту ПИ-ПД, который тоже выкосил ПД регуль и теперь альт холд вообще не пашет (проверял на последней дев.), хотя он сейчас тоже его мучает… прям как в истории открытий! новое знание приходит примерно в одно и тоже время группе людей, а открытие уходит в свет от самого быстрого 😃

alexmos:

Ты точно Alt PID крутишь? Velocity PID не используется у меня.

обижжжжаете профессор! 😉

з.ы. забыл написать. вчера на тестах использовал ACC_BARO_CMPF=500.0f… меньше шума в гуи и вроде без ущерба быстродействию…
и кстать после прочтения статьи на хабре многие моменты в алгоритме прояснились, но не совсем ясно как bias можно складывать с ускорением если это не соразмерные величины… вот тут у меня в голове не хватает уровня абстракции, чтобы это понять… и если не трудно поясни плз.

omegapraim
Dimm168pin:

простите за оффтоп, не мог не поделиться)

Единственный аппарат в Украине, и в России такого нет)))))) Во дед загоняется та, а))) а нас тут вообще не существует))))))

mahowik
omegapraim:

Единственный аппарат в Украине, и в России такого нет)))))) Во дед загоняется та, а))) а нас тут вообще не существует))))))

nu dik kluchevaya fraza tam bila cho apparat stoit 20k, po kotoroy voennim ego vtuhali skore vsego 😉
potomu on edinstvenniy i nepovtorimiy i ni gde takogo net! vsezh logichno! 😃

alexmos
mahowik:

а вот тут может быть косяк… в оф. версии там ПИ-ПД регуль, где ПИ на медленных данных высоты, а ПД на быстрых данных скорости и это должно работать

попробую объяснить почему я откзалася от раздельных PI и PD. D в высоте - это производная ошибки, но данные о высоте у нас неточные и D от этих даных будет ещё хуже. Но производная ошибки - это и есть скорость (dErr = d(Hhold - H) = dHhold - dH = -dH), которую наш алгоритм худо-бедно выдает. То есть я просто обозвал P-составляющую скорости D-составляющей высоты, не изменив логики оригинальной версии, только PID высоты теперь стал классическим PID. А VelocityPID остался только D - производная скорости, что по сути является ускорением. А так ли нужен этот компонент? Посмотри на график ускорения при любом линейном перемещении - это выброс вверх и равнозначный выброс вниз. Т.е. компенсация а короткий перод времени даст +100 а потом -100 - такое моторы даже не успеют отработать, а есть ещё инерция коптера. Так что смысла от D-скорости ноль.

mahowik:

но не совсем ясно как bias можно складывать с ускорением если это не соразмерные величины

Конечно, размерности не совпадают, ведь все интегрирования добавляют время в размерность - но из-за того, что время цикла у нас меняетя мало, мы просто эти 3-4 мс закладываем в коэффициенты. Если быть очень дотошным, можно делить/умножать на время цикла, но в данном случае bias - !третий! интеграл и в нем время цикла отлично усредняется. А при вычислении скорости и высоты я учитываю время цикла в теукщей итерации.

Covax

Я помню сам выводил на крутилку level I, но черт потерял я ту прошивку ))
Но у меня было не красивое решение, скорее экспериментальное

alexmos
mahowik:

вчера на тестах использовал ACC_BARO_CMPF=500.0f… меньше шума в гуи и вроде без ущерба быстродействию

Быстродействие понятно что не страдает, его акселерометр отрабаывает, но из-за ослабения влияния барометра акселерометр может начать плавать сам по себе. И неизвестно какое из зол меньше. В этом кстати пока минус моего агоритма - требуется много времени на отладку связки этих датчиков, чтобы найти золотую середину. А это не всякому пользоватею может быть по силам. Вот если б он сам калибровался… 😃 Думаю тут надо смотреть в сторону Калмана, но я его пока не осилил.

Или если без калмана - есть алгоритмы автоматического PID-тюнинга. Его тоже в будущем можно встроить в multiwii в качестве отдельной “калибровочной” процедуры.

PS: решил перенести дальнейшее обсуждение в отдельную ветку: rcopen.com/forum/f123/topic265409, чтобы не сильно засорять эту.

Spin7ion

Здравствуйте!
Начал строить свой трикоптер на базе Wii, уже спаял пробный шилд на arduino. Встал вопрос о мотоустановке.
Ждать месяц заказ не хочется, потому присматриваюсь к вот такой паре:

Моторы: eflyone.ru/catalog/detail.php?ELEMENT_ID=57055&SEC…
Регуляторы: eflyone.ru/catalog/detail.php?ELEMENT_ID=57087&SEC…

Скажите подойдут ли они для постройки первого трикоптера.
Понимаю, что за весом уследить не очень смогу поначалу, но все же, на какой максимальный вес рамы ориентироваться.

Заранее спасибо.

Не нашел про эти моторы, может проглядел?

Covax

Пойдут, нормально. Нужна еще серва для трикоптера.

Spin7ion

Огромное спасибо. Серва металлическая уже есть.
А нет ли моторов на 12А, больно уж эти моторчики дорогие, да и регуляторов нету почти нигде.

Covax

На этих моторах можно сделать eflyone.ru/catalog/detail.php?ELEMENT_ID=16256&SEC…, на батарее 2200mah будет летать больше 15ти минут
На таких моторах пол форума на аиркам.ru летает.

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

VitaliyRU

Если байан, сори - последнее время за темой не следил.
Калибровка и настройка регулей без соплей и лишних проводов.
заливаем вот это(для квадрика и promini)

int st = LOW;

void setup() {
  pinMode(3, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(2,INPUT);
}
void loop()
{
  st=digitalRead(2);

  digitalWrite(3,st);
  digitalWrite(9,st);
  digitalWrite(10,st);
  digitalWrite(11,st);
}

USB шнурок не отключаем.
Включаем передачик с поднятым газом.
Подключаем основной Акк(питание регулей), дальше по инструкции все четыре регуля c пульта разом калибруем настраиваем и т.д…

Covax

Интеллигентно 😃 А мы как то все четыре сигнальных провода от регулей проводком одним обвиваем, другой кончик цепляем на канал газа и калибруем без ардуин, скетчей, ноутбуков и ЮСБ, как деревня 😃

VitaliyRU
Covax:

А мы как то все четыре сигнальных провода от регулей проводком одним обвиваем,

да мне так без вариантов было 😃

omegapraim

Напишу свой способ калибровки))) Втыкаю батарею на 4,2В в приемник, все кроме регулей запускается, потом АРМ и ручку газа в самое верхнее положение, ну а дальше все как обычно)))) и не нужно ничего обвивать.

SovGVD
Covax:

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

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

VitaliyRU
omegapraim:

Напишу свой способ калибровки))) Втыкаю батарею на 4,2В в приемник, все кроме регулей запускается, потом АРМ и ручку газа в самое верхнее положение, ну а дальше все как обычно)))) и не нужно ничего обвивать.

Я думал так не проканает 😃 Из-за минфротл.
А это мысль сказали дети 😃). У меня приемник питается от ардуины, даже батарейка не нужна, достаточно USB 😃