MultiWii
Вот, все обещанное находится в очень полезном блоге:
www.mictronics.de/projects/remzibi-osd/
там в архивах все есть
Я повторял этот проэкт.Все отлично работает в моем варианте с ардупилотом.
Основной сложностью было это сверление межплатных переходов сверлом 0.4…
Как Вы думаете,какой контроллер наиболее перспективен в этом случае?
У меня есть основания доверять:
затестил MARG на 72МГц М3 (в симуляторе). 1.9мс вместо 3 в AVR. Ваще негусто. Ожидал гораздо круче разницу. Попробую М4 запустить.
После мешочка гимора запустил-таки MARG в симе на 407-м ядре. 200мкс по сравнению с 1900 на 103-м и 3000 на AVR FPU рулит.
Я твой MARG на себе запускал. 1 цикл расчета занял 2мкс. Сейчас полноценный (гира+аксель+компас) оптимизированный алгоритм с кватернионами + EKF отрабатывает около 10мкс на моей платформе, и еще можно улучшить.
Хотя сейчас Кролик и ТаймКоп, а также желающие-умеющие портировать, используют 103. Надеюсь, ситуация устаканится. Я готов купить “мощный” ARM 407 и более навороченный, если начнут портировать Мультивии. Сам покопался в ARM - помигать светодиодиком можно, математику сделать. А с приемом PPM, выдачей сигналов на ESC - трудно для понимания с полпинка.
Я повторял этот проэкт.Все отлично работает в моем варианте с ардупилотом.
а чего это за страшная такая петля из медного провода?
а чего это за страшная такая петля из медного провода?
Радиатор 😃
на что, на мегу? =-ООО???
нет уж. Готов поверить, что это суперпупер ядреная земля с экраном, но никак не радиатор ))))
Все летает, но раздельно используется ДУС, акселерометр из MPU6050 и магнетометр. Поддержки DMP в коде нет.
Я тут подумываю попробовать 6axis DMP заюзать в пирате… Тот код который сперли с демок Invensense 😃
на что, на мегу? =-ООО???
На MAX, уж не знаю почему он там так греется, но он как чайник 😃
а на 328U4 никто не пробовал WII запускать
Что-то какя то шляпа с этой АТмегой 32U4. Не работает она через встроенный УСБ,тупо не определяется и не находятся для него нужные драйвера.Признаться даже и не особо понятно какие именно и где их взять.
Что-то какя то шляпа с этой АТмегой 32U4. Не работает она через встроенный УСБ,тупо не определяется и не находятся для него нужные драйвера.Признаться даже и не особо понятно какие именно и где их взять.
гм, а тупо по rx tx?) через ftdi переходничек или cp2102, хоть попробовать что оно, вроде ног больше, тоже поглядываю пока на stm32 нету времени развести и с софтом разобраться.
эти чипы (32U4) изначально пустые … совсем пустые … там нет бутлодыря как на stm32 … их нужно шить через ISP как и обычные меги на ардуишах … лодырь ессно свой …
Здравствуйте залил я тут прошивку вии 2.0 рк3 вопрос, автор ввел переменную Д для акселя чего не было в предыдущих прошивках, выставив Д=0 получил равномерное качание коптера во все стороны. Изначально автор по стандарту поставил Д = 100, За что может отвечать этот параметр, Тоже самое что и в в гирике по крену и тангажу или нет?
Я тут подумываю попробовать 6axis DMP заюзать в пирате… Тот код который сперли с демок Invensense
www.i2cdevlib.com/devices/mpu6050 пишут “The register info shown below is for a revision B1 chip. The newest “C” revision may not be fully compatible with these addresses or bit arrangements. I am working on updating the library to use the latest information available.”
Если что, на аналоге ФриИМУ4 от CSG_EU стоит чип с ревизией D (11-48 YY-WW)
Сейчас попробую на ардуинке проверить код. Конечно, жалко, что магнетометр не подмешивается (он подключен к MPU6050) для 9DOF DMP. Но можно потом добавлять магнетометр:
if((mx != 0.0f) && (my != 0.0f) && (mz != 0.0f) {
// Normalise magnetometer measurement
recipNorm = invSqrt(mx * mx + my * my + mz * mz);
mx *= recipNorm;
my *= recipNorm;
mz *= recipNorm;
// compute reference direction of flux
hx = 2.0f*mx*(0.5f - q2q2 - q3q3) + 2.0f*my*(q1q2 - q0q3) + 2.0f*mz*(q1q3 + q0q2);
hy = 2.0f*mx*(q1q2 + q0q3) + 2.0f*my*(0.5f - q1q1 - q3q3) + 2.0f*mz*(q2q3 - q0q1);
hz = 2.0f*mx*(q1q3 - q0q2) + 2.0f*my*(q2q3 + q0q1) + 2.0f*mz*(0.5f - q1q1 - q2q2);
bx = invSqrt((hx*hx) + (hy*hy));
bz = hz;
// estimated direction of gravity and flux (w)
wx = 2.0f*bx*(0.5f - q2q2 - q3q3) + 2.0f*bz*(q1q3 - q0q2);
wy = 2.0f*bx*(q1q2 - q0q3) + 2.0f*bz*(q0q1 + q2q3);
wz = 2.0f*bx*(q0q2 + q1q3) + 2.0f*bz*(0.5f - q1q1 - q2q2);
// error is sum of cross product between reference direction of fields and direction measured by sensors
ex = (my*wz - mz*wy);
ey = (mz*wx - mx*wz);
ez = (mx*wy - my*wx);
}
#endif
// integral error scaled integral gain
exInt = exInt + ex*Ki;
eyInt = eyInt + ey*Ki;
ezInt = ezInt + ez*Ki;
// adjusted gyroscope measurements
gx = gx + Kp*ex + exInt;
gy = gy + Kp*ey + eyInt;
gz = gz + Kp*ez + ezInt;
// integrate quaternion rate and normalise
qa = q0;
qb = q1;
qc = q2;
qd = q3;
q0 += (-qb*gx - qc*gy - qd*gz)*halfT;
q1 += (qa*gx + qc*gz - qd*gy)*halfT;
q2 += (qa*gy - qb*gz + qd*gx)*halfT;
q3 += (qa*gz + qb*gy - qc*gx)*halfT;
// Normalise quaternion
recipNorm = invSqrt(q0 * q0 + q1 * q1 + q2 * q2 + q3 * q3);
q0 *= recipNorm;
q1 *= recipNorm;
q2 *= recipNorm;
q3 *= recipNorm;
гм, а тупо по rx tx?
Тоже пробовал,так же без результатно.
Бутлоудер соответственно заливал,правда не знаю тот или не тот,но другого вроде нет,называется DiskLoader-Leonardo.hex.
Испытал аналог freeimu4 на Multiwii 2 pre3
Как там кстати компас? На него не оказывают сильное влияние близкорасположенные детальки?
Как там кстати компас? На него не оказывают сильное влияние близкорасположенные детальки?
Залил свой модифицированный код FreeIMU_lib - все идеально. Тестовый кубик на экране повторяет движения платы (поворот на 90 по транспортиру дает 90 градусов приращения по YAW).
В Мультивии 2 пре3 при крене “компас” отклоняется, при тангаже - стоит на месте. Думаю, это связано с реализацией IMU в этой версии прошивки. Сам компас работает хорошо.
а чего это за страшная такая петля из медного провода?
Греется как кипятильник этот макс,это его особенность.На esyosd до 70 градусов,как вы думаете как ему живется…
Готов поверить, что это суперпупер ядреная земля с экраном, но никак не радиатор ))))
Попробуйте собрать потом посмотрим кокое ядерное заземление вы придумаете 😃😃😃
Радиатор
Прямо в точку 😃
2.0 рк3 вопрос, автор ввел переменную Д для акселя чего не было в предыдущих прошивках, выставив Д=0 получил равномерное качание коптера во все стороны. Изначально автор по стандарту поставил Д = 100, За что может отвечать этот параметр
это давний энхансмент от Шикры… полезен для ФПВ… “для полетать” мне не нравится, т.к. соот-е сила-наклон в стаб моде становится нелинейной…
www.multiwii.com/forum/viewtopic.php?f=8&t=1290
The term D of the PID LEVEL settings is now used to limit the effect of the level correction thanks to the suggestion of Shikra (see viewtopic.php?f=7&t=905 ).
By default (D=100), the behaviour of the stable mode is unchanged.
With a lower D, effects are:
- a smoothing level change
- should prevent some wobbles of death
…
Не смог понять одного - можно ли подключить этот модифицированный E_OSD к плате MWii на меге 328? Или нужен отдельных хардверный (mega 1280(2560))/софтверный uart для передачи данных с IMU? Надо будет код глянуть…
Я подключал к Arduino Nano. OSD подключаеться к пин TX мозга. Если хочеться LCD то ему надо подключить к RX arduino. Передача данньiх к OSD неперерьiвная. Если нужно подключить GPS то он должен бьiть на I2C - я далеко от етого. Подключил сонар DIY007v2 и он работает вместе с баро, но т.к. у меня баро нету то OSD отображает только вьiсота из сонара. У меня ОСД с мега168 и т.к. у ней в 2 раза больше память запихнул еще 2 линии для будущих разработок - данньi из GPS-a: Latitude, Longitude, Distnce to Home и углах ROLL, PITCH, YAW. Думаю не очен сложно добавить ето в коде МултиВии как только код а ля GPS-a будеть без багов. Flash заполнена на 60%.

MULTIWII_V1_DIMM168PIN.rar
файл можно смело править заменяя компоненты и изменяя конфигурацию ног, это полноценный мультивии, только вход с приемника 1, ppm sum, обычными приемниками пользоваться не планирую по этому убрал, но если нужно, дорисовать не трудно.
Проверил, подправил, все работает, глюков не замечено, поставил пока на подвес в качестве независимых мозгов .
Схему не выкладываю, ибо ее нет, все как на картинке, оно по даташиту ардуины и pca9306
вход приемника 1, ppm sum
Дмитрий, что это значит? Как я понимаю, обычный приемник не подключить? На пример, для управления сервами в ручную.


