MultiWii
У меня вопрос к знатокам MultiWii, какими настройками добится более резвого разворота квадрика по yaw , а то он уж больно какойто вялый. У меня была прошивка 1,6 1,7 1,8 1,8p2 везде одинаково медленно разворачивается.
Не очень важная доработка но я думаю что полезно: более точная калибровка нуля гироскопа. Сейчас в коде ноль округляется до целых. Так как данные гироскопа интегррируются, даже небольшая ошибка накапливается. Лучше окрулять до десятых, тем самым слегка повышается точность и уменьшается дрифт.
Sensors.pde, GYRO_Common(): ... if (calibratingG == 1) { gyroZero[axis]=g[axis]/40; ... for (axis = 0; axis < 3; axis++) { gyroADC[axis] = (int32_t)(gyroADC[axis] * 10 - gyroZero[axis])/10; ...
похоже Алексей это бомба в коде 😃 настраивал IMU на предмет LEVEL дрифта и совсем забыл, что ранее добавил ваш энхансмент… пол дня промучался, не понимания почему при резких поворотах появилось доплывание на 30-60гр.
Самое главное что по мат. части все верно по идее и даж начал думать что разрядности gyroZero не хватает. Поменял на 32 бита, но таже проблема похоже. Попробуйте просто резко крутануть плату на 90гр. и обратно на 180гр.
Вернул калибровку на место, доплывания прекратились…
какими настройками добится более резвого разворота квадрика по yaw , а то он уж больно какойто вялый
YAW “P” можно увеличить… если 20-ти не хватит, то можно в коде коэф. добавить 😃
Вот жеж блин сидел смотрел фильм и решение вдруг самое всплыло, а даже вроде и не думал… подсознание варило знацца 😃
преобразование в инт32 должно относиться к gyroADC[axis] а не результату в скобках… тут и было переполнение…
gyroADC[axis] = ((int32_t)gyroADC[axis] * 10 - gyroZero[axis])/10;
проверил… работает!
Интересны окончательные результаты, если проблема решится дайте знать, обязательно попробую на квадрике, строю трикоптер ( ITG3205+ADXL345), на нем тоже можно будет попробовать.
Похоже нашел в чем корень зла. Пидалил НЧ фильтр (ACC_LPF_FACTOR). Более заметно стало что в нем дело, когда поднял его значение более 20-ти (на MultiWii_1_8_patch1). Мелко-повороты проглатывались в итоге, т.е. к примеру коптер наклонен на 1-3 гр., а через фильтр значение ноль. Отсюда и дрейф по идее…
Проверить в полете к сожалению не могу, т.к. коптер в гипсе… В гуи вроде ок… Если есть желающие потестить, нужно закоментировать ACC_LPF_FACTOR в IMU.pde + LEVEL “I” выставить не более 0.01, либо вообще в ноль. Должно пахать… тем более что если у вас к примеру bma020, то там есть внутренний хардварный НЧ фильтр, который сконфигурен на 25гц в мултивии. Так что без фильтра не останемся 😃
З.Ы. А вообще надо читать release notes 😃 После того как промудохался со своими тестами прочитал в change.txt к последнему MultiWii_1_8_patch2:
- adding another condition in the attitude IMU calculation to take into account the ACC (should help to prevent LEVEL drift problem)
НО новый вариант фильтра както оссобо видимо не работатет, т.к. летать я пробовал именно на MultiWii_1_8_patch2. Потому просто коментарим ACC_LPF_FACTOR и пробуем летать.
//#define ACC_LPF_FACTOR 8
Также кто летает НЕ на WMP, а других гирах (3205->3200 либо L3G4200D) есть интересное решение позволяющее сократить цикл на 600-700мкс. Сейчас там два последовательных чтения с гиры через 650мкс. Похоже это на наследие от wii сенсоров, где было необходимо читать данные последовательно, сперва с wmp потом с чаки…
В общем я попробовал это убрать. Цикл упал на 600-700мкс, в ГУИ все плавней стало крутиться + команды на моторы на глаз адекватные. Облетать опятьже не могу пока, потому если кто на свой страх и риск аккуратно проверит, буду очень благодарен.
в IMU.pde заменить функцию computeIMU()
void computeIMU () {
uint8_t axis;
static int16_t gyroADCprevious[3] = {0,0,0};
static int16_t gyroADCp[3];
static int16_t gyroADCinter[3];
static int16_t lastAccADC[3] = {0,0,0};
static uint32_t timeInterleave = 0;
static int16_t gyroYawSmooth = 0;
if (ACC) {
ACC_getADC();
getEstimatedAttitude();
if (BARO) getEstimatedAltitude();
}
if (GYRO) Gyro_getADC(); else WMP_getRawADC();
for (axis = 0; axis < 3; axis++) {
gyroADCinter[axis] = gyroADC[axis]+gyroADCp[axis];
// empirical, we take a weighted value of the current and the previous values
gyroData[axis] = (gyroADCinter[axis]+gyroADCprevious[axis]+1)/3;
gyroADCprevious[axis] = gyroADCinter[axis]/2;
if (!ACC) accADC[axis]=0;
}
for (axis = 0; axis < 3; axis++) {
gyroADCp[axis] = gyroADC[axis];
}
annexCode();
#if defined(TRI)
gyroData[YAW] = (gyroYawSmooth*2+gyroData[YAW]+1)/3;
gyroYawSmooth = gyroData[YAW];
#endif
}
Ну все поговорил сам с собой, теперь можно и поспать 😃
Смотрите какая нямка продается у китайского “Александра Иванова” 😃
item.taobao.com/item.htm?id=12758903060&ad_id=&am_…
заказать можно через посредников, работающих с таобао
Смотрите какая нямка продается у китайского “Александра Иванова” 😃
item.taobao.com/item.htm?id=12758903060&ad_id=&am_…
заказать можно через посредников, работающих с таобао
Красиво, дороговато… 700 юаней 3532руб. Еще посреднику…
Дороговато? 😃 У Себастьяно Перейры такая шутка стоит $140 + доставка. И уже новый баро стоит. Посредник берет 10%, всего.
И тут стоит мега, а у Перейры 328я
Кстати, так как китаец стал принимать paypal, но отправляет напрямую без посредников только DHL, который не растаможить в РФ частнику, давайте ему кто заинтересован отправим просьбы высылать платки обычной Registered Mail! его почта admin@cuav.net
дороговато…
имхо очень красивая цена, по сути BlackVortex с хорошим баро и без гпс (и без еще чего то) www.ebay.com/itm/…/260854008499
для сравнения: www.ebay.com/itm/…/260782395748
под такую и мегапирата можно портануть =)
И тут стоит мега, а у Перейры 328я
Не разглядел процессор. И гугловский переводчик сказал “Используйте 1280/2560 чипы”
Похоже только датчики.
Подождем фоток с обратной стороны
Не разглядел процессор.
И бародатчик! Остальные отмечены.
И бародатчик! Остальные отмечены.
高分辨率MS5611 - 01BA,精度可达10cm
Так как кол-во платок 0, это скорее всего прототип, и проц и баро находятся на другой стороне.
Так как кол-во платок 0, это скорее всего прототип
странно а ниже написано Pieces (stock 235 pieces) (из гугл переводчика)
😃)) ни кто носителнм китайского у нас не является чтобы разобраться точно что есть на плате и есть ли в наличие?)
😃)) ни кто носителнм китайского у нас не является чтобы разобраться точно что есть на плате и есть ли в наличие?)
Вот в этом и проблема. Непонятно, что они там предлагают!
преобразование в инт32 должно относиться к gyroADC[axis] а не результату в скобках… тут и было переполнение…
Спасибо, я действительно не проверял на эктремальных значениях, и вроде как позаботился о переполеннии - но не хватило опыта программинга микроконтроллеров. Привык уже работать с безразмерными типами в других более продвинутых языках 😃
Привык уже работать с безразмерными типами в других более продвинутых языках
тоже самое, а переполнении както не думаешь 😃
у вас кстати в стаб. моде есть дрейф? если нет то какая прошивка или можэт изменения какие добаляли в код?
Сегодня возился с Turnigy 9X 9Ch Transmitter…
-
Запихать туда внутрь таки пак с батарейками.
Удачно, но частично: теперь отсек не открывается… -
Подключение подсветки.
Удачно, если не считать, что в одном месте экран чуть темнее… -
Разобраться с настройками.
Почти. В вертолётном режиме Газ одновременно управляет ещё и каналом PIT: как разделить - фз!
Ну и ручечек-переключателей несколько больше, чем вариантов в настройке каналов…
Инструкция помогает слабо: Енд Поинты переключаются между мин-макс с помощью ручек пульта… Фантазёры… Причём часть непонятно какими!!!
У пульта одна неприятная особенность - матерится с ошибкой, если при включении все переключатели не в дальнем положении… ФЗ - может оно оправданно для моделистов?!
P.S. Заказал на ХоббиКинге проп-сейверы с резинками: надоело при снятии пропеллеров кусать стяжки… Теперь в сомнениях - написано, что в комплекте 10 штук, но верится слабо - возможно 10 РЕЗИНОК? Поэтому заказал сразу восемь штук…
У пульта одна неприятная особенность - матерится с ошибкой, если при включении все переключатели не в дальнем положении…
и это правильная особенность, сделано что бы вас не порубило на колбасу при включении 😃
P.S. Заказал на ХоббиКинге проп-сейверы с резинками: надоело при снятии пропеллеров кусать стяжки… Теперь в сомнениях - написано, что в комплекте 10 штук, но верится слабо - возможно 10 РЕЗИНОК? Поэтому заказал сразу восемь штук…
10 штук в комплекте и резинок и оснований.