Проект Мегапират на самик!

LeonVS

Хм… а то что сейчас у тебя реализовано не достаточно, уплывает на каких то режимах? Или чисто из спортивного интереса 😃?

Syberian

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

Нуач0, проц мощный, пить - так пить, е*ать - так королев… ОСД есть, звук есть, пусть теперь будет калман за компанию.

LeonVS

Гы, что верно то верно, эт из цикла: “… зачем? Потому что могу!” 😃
Я отрубил в твоем МАРГе компас, работает на много адекватней и держит лучше чем ДЦМ, правда в полете пока не тестил, не как не выберусь… 😃

Lazyan

Набор датчиков ограничивается только AllinOne и Vortex или можно пользовать более новый 6050 и высотомер MS561101BA?

Кто-нибудь пользует систему для мультироторных аппаратов?

Syberian

Леонид. Чтобы совсем не лишаться компаса, вот тебе фрагмент кода для IMU.c - это недавно внедренный мной ТСС для МАРГ.

short TCC(float bx, float by, float bz, float phi, float theta)
{    float variation, Xh, Yh, angle;
    Xh = bx * cosf(theta) + by * sinf(phi) * sinf(theta) + bz * cosf(phi) * sinf(theta);
    Yh = by * cosf(phi) - bz * sinf(phi);
    angle = 572.9578f*(atan2f(-Yh, Xh) /*+ declination*/);
    return angle;
}

usage:
TCC(mx,-my,-mz,roll,pitch);
выход - курс *10 (число 15 = 1.5 град), приравнивай к нему yaw_sensor в марг.с в самом конце процедуры
mx my mz roll pitch это переменные из МАРГ.с
declination - склонение *10, по идее глобальная переменная где-то есть.

компас должен быть запрещен в дефайне: compass_enabled 0

Lazyan:

ограничивается

На данный момент только вышеуказанные. МПУ-датчики не будут поддерживаться вообще. МС-ка у меня в планах есть, но отсутствует физически, поэтому отложена.

Syberian

===
апдейт 2.0.1524

  • Замена алгоритма ориентации с MARG на EKF. Алгоритм устойчив, сингулярности устранены, на движение с ускорением (по полу катал) почти не реагирует. Остается облетать. Прогноз положительный.
  • устранены вопросы по высоте таргетов
  • галка TCC больше смысла не несет в связи с устранением самого алгоритма

Уточнение по калибровке датчиков. Плату датчиков надо выставлять в LEVEL на ровной горизонтальной поверхности! Потом уже крепить на пепелац и, подкладывая что-то под края, добиваться желаемого угла атаки и т.п.
Создатели различных ардупилотов заигрывают с пользователем, пытаясь устанавливать LEVEL при произвольном положении платы. Это в корне неправильно. Не считая удобства настройки, это полностью испоганит алгоритм ориентации из-за паразитных составляющих по сдвинутым осям гироскопа.

Lazyan
Syberian:

На данный момент только вышеуказанные. МПУ-датчики не будут поддерживаться вообще

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

Syberian

Ради датчиков - нет, слишком дорого. разве что алинон, и то дорого.
Сейчас силами энтуазистов и потреотов делается “наша” родная плата икса, с бл-дж и шл. Жду вот…

про мпу я свое мнение писал на предыдущей странице.

ViktorDoma

Ура. У меня ЗАРАБОТАЛО.
Плата Дискавери + Шилда (компас, баро, гиро, аксель, мапять).
Есть проблема с ОСД. Кокое то эхо прёт. Хотя сделан полный КЛОн с кЕтайской.

Олег - куда подать бортовое напряжение - шоб видеть напряжение на ОСД ???

Lazyan
Syberian:

Ради датчиков - нет, слишком дорого. разве что алинон, и то дорого. Сейчас силами энтуазистов и потреотов делается “наша” родная плата икса, с бл-дж и шл. Жду вот…

Можно подробней? Или к кому обратиться?
Я так понял, датчики дешевле, чем у кетайцев не найдутся:
aliexpress.com/…/562055389-100-New-10DOF-ITG3200-I…

Syberian

ха, алинон склонили! рассыпухой и то дороже… надо сравнить расположение датчиков.

Виктор, скриншот давай, что там у тебя фонит и глючит…

Drou

www.rcgroups.com/forums/showthread.php?t=1473207 По поводу ОСД думаю почти тоже самое (Если учесть, что в дневничке у Сибериана написано можно сгоревшее. Имеется ввиду схема получения кадра\строки), но судить конечно ему. Просто может кому поможет, что бы не заказывать спец Е-ОСД… Если подойдет схема, там же есть схема с LM1881 на ней имхо еще проще, стоит около 15руб…

ViktorDoma

Попозжа, немножко отдыхаю под автомобилем. У нас несколько жарковато 30-33 в тени. А климат в машиГе шалит. Трахаюсь с блЯдскими клипсами иППонскими. Какая гнида их придумала, снять не реально - тока ломать. а они стоят по 3 (ТРи) доллара за штучку. БЛЕАТЬ. уже баксов на 60 попал. Пол машины собрано на клипсах и защелках. ПИНДЕЦ.

А вообще нужно бвло продуть и промыть радиаторы. Но для этого, пришлось демонтировать кучу деталей. Уже пол мотора видно снаружи и вся морда лежит поДетально во дворе.

Drinker
AlexSneg:

Поздравляю, видишь, ничего страшного!

Действительно - контрол ц, контрол в.

AlexSneg:

меня 25мкс

тыж хвалился 85 мкс.

25 мкс цикл настоящего фильтра калмана на ф4 быть не может. И у содранного вами роботиксного простейшего алгоритма тоже не может.

Syberian
Drinker:

На днях ветку создам в теме фпв. Гарантирую - ты офигеешь.

ну-ка кыш троллить в свою НЕсозданную тему!
Уже месяц прошел, а он все “создает”…

Drinker

Как проверить “настоящесть” фильтра калмана? Очень просто - в серьёзном фильтре, в состоянии покоя показания по всем углам колеблются в пределах 0.001 градуса на обычных гирах и акселях.

Syberian:

ну-ка кыш троллить в свою НЕсозданную тему!

Ждешь с нетерпением? Потерпи чуток. До моего отпуска. Офигеть должен вообщето не ты.

smalltim

Syberian, AlexSneg, если не сложно, опишите в двух словах механизм вывода из массива пикселов на ногу проца.
Как зарядить дма и всяческие прерывания - это понятно. Как массив байт вы разворачиваете в биты 0-1 на ноге? В меге я делаю руками сдвиги и выводы в порт, а вы на арме как это делаете? Дма ж минимум по 1 байту дает на порт, меньше не может, или я что-то пропустил? Неужели на каждый пиксел по байту отдаете?
Почему не сделали выше разрешение на экране? Проц же формально позволяет, ногой можно дергать на 60МГц и выше, не то что мои 5.5 МГц (3 клока на бит на 16 МГц).
В исходники не отправляйте, пожалуйста 😃 Чужих исходников уже года 3 не смотрел, да и на словах понятнее будет.

Syberian

хы хы канкурент лезет 😁
Опишу, как просил, в 2 словах: SPI Master (у меня), у Снега - Slave. Подходы в корне разные.
Разрешение такое, потому что прескалер фиксированный. А исходников никто и не покажет 😛

smalltim

Сталобыть, SPI разворачивает. Спасибо, Олег.

AlexSneg
Syberian:

Разрешение такое, потому что прескалер фиксированный.

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

smalltim:

Syberian, AlexSneg, если не сложно, опишите в двух словах

Да, как Олег и сказал, у нас подходы кардинально разные. Но и так и так работает. У Олега софт каждую строку перезаряжает, а я только в начале кадра. Здесь вопрос филосовский больше.

Drinker:

тыж хвалился 85 мкс.

Это с пачкой вложенных прерываний, от USB, video, и прочей мутотени. Чистого времени там 25-30мкс.

Drinker:

роботиксного

Что за алгоритм, можно ссылку? Посмотрю на досуге.

Drinker:

Как проверить “настоящесть” фильтра калмана?

Мне не нужно настоящесть в твоем понимании. Мне нужна достаточность в зоне текущего практического применения. Для меня показаний покоя в пределах до 0.5 градуса, что сейчас имеется, вполне достаточно, думаю что и Олегу этого за глаза хватает.

LeonVS

Кто еще копает старый добрый арду на меге и хочет курс компасса юзать как дополнительную переменную для навигации 😃
Адаптированный код Олега для арду 😃

short TCC(float bx, float by, float bz, float phi, float theta)
{ float variation, Xh, Yh, angle;
Xh = bx * cos(theta) + by * sin(phi) * sin(theta) + bz * cos(phi) * sin(theta);
Yh = by * cos(phi) - bz * sin(phi);
angle = 572.9578f*(atan2(-Yh, Xh) / 10/*+ declination*/);
if (angle > 0) angle = 360 - angle;
angle = abs(angle);
return angle;
}

Использование:
TCC(compass.mag_x,-compass.mag_y,-compass.mag_z, dcm.roll , -dcm.pitch);

Syberian:

ха, алинон склонили! рассыпухой и то дороже…

Не совсем 😃 Адреса и расположение гиры и акселя как у FFIMU, ну и еще сюрпрайз по компасу x и y перепутаны местами 😃 В общем усе програмно решается, вот только задалбывает иногда менять библиотеки вливая паршивку то в вортекс то в аурдино 😃