flybrain. передатчик + приемник + автопилот. powered by stm32

rual
AlexSneg:

В ИМУ крен после длительных поворотов неточен Да, я в этом тесте проверял физическую модель расчета критериев (мне нужно в реале оценить как они работают, прежде чем их применять), оно сейчас чисто на свободном ходе тормозит.

Т.е. сейчас коррекции центростремительного ускореня нет?

AlexSneg:

Вот лог, там все есть,

А “сырой” аксель можешь выложить в логи?

AlexSneg
rual:

Т.е. сейчас коррекции центростремительного ускореня нет?

Я может неточно выразился. Отвечал на вопрос по рулению, а не по IMU. Сорри.

В IMU крутится Кальман, ему не надо специально ничего компенсировать, если все правильно настроить, оно работает без костылей. Это относится и к центробежке. При длинном развороте - да, возникает временная ошибка, но она ограничена моими настройками и более чем некоторая величина превысить не может, вот хоть ты кругами облетайся. В том числе это плата за виброустойчивость. Матрицы подобраны так, чтобы гарантировано иметь сходимость, пусть даже за счет допущения небольших временных неточностей. Кроме того сейчас компас откалиброван как попало, можно даже сказать совсем никак. На видео может это не сильно заметно, но если платку провернуть вокруг своей оси ролл за счет кривого компаса может показывать 0 на север и +3 на юг, затем по мере поворота опять в 0 приходит. Это четко видно когда я лечу к лесу оно ровно показывает, а когда от леса к взлетке, его слегка уводит. Надо бы конечно заново и гиру и маг перекалибровать, но лень мне этим заниматься, потому как я конфиги время от времени переписываю в дефолт и калибровка сбрасывается. А заниматься этим в поле нет никакого желания, сейчас есть гораздо более важные задачи.

rual:

А “сырой” аксель можешь выложить в логи?

С полета никак, у меня флешка 2мега, а аксель фигачит с частотой под 100 герц(если память не изменяет)
его можно спихнуть только в USB, но usb в полете нет, сам понимаешь.

rual
AlexSneg:

В IMU крутится Кальман, ему не надо специально ничего компенсировать, если все правильно настроить, оно работает без костылей. Это относится и к центробежке. При длинном развороте - да, возникает временная ошибка, но она ограничена моими настройками и более чем некоторая величина превысить не может, вот хоть ты кругами облетайся. В том числе это плата за виброустойчивость. Матрицы подобраны так, чтобы гарантировано иметь сходимость, пусть даже за счет допущения небольших временных неточностей.

мда… Я с калманом не дружу, для меня это волшебство… Не понимаю я, от куда берётся достоверная информация о векторе G, если он длительное время смещён за счёт центростремительного ускорения, и как внести поправки, если нет данных для вычисления базиса? Где можно по русски и доходчиво про калмана почитать?
А вообще, впечатлён результатами, за столь короткое время. Поздравляю!

alex-ber

А по-моему все супер!!!
Респект разрабу!
давно читаю тему (с самого основания…) - скептикам ПРИВЕТ!!!
сам не прогер, поэтому судить не могу…
Но Алекс - просто молодец…
Чуствую сейчас кто-то подтянется критиковать…

smalltim
alex-ber:

Чуствую сейчас кто-то подтянется критиковать…

С чего? Всё путем, разве что центробежку надо таки учитывать. Если дать модели кругами полетать над базой, то за минуту без коррекции любого калмана сшибет.
Ну и ПИДЫ. Чем не угодили? Весь мир их уже лет 50 как их использует везде, и пока альтернатив особых нету. Или я ошибаюсь?

AlexSneg

С Кальманом на самом деле все очень просто, если реально вникнуть. Никаких шаманств там нет. А с кватернионами, как оказалось, еще проще чем с эйлером. Я вчера глянул в свой код, чтобы освежить в памяти, что я там делал. Так вот на вопрос об учете ЦСУ, ответ простой.
У меня стоит некоторый зазор достоверности вектора G. Если он по модулю вылезает за заданные рамки, достоверность его снижается при корректировке кватерниона, а достоверность мага нарастает. Соответственно, отсюда все результаты. Компас не калиброван + есть лаг по корректировке акселем в недостоверной зоне. Но расти ошибка будет только до пределов пока аксель совсем не исключается из цепочки корректировки. Ну собственно это мы и видим. До определенной ошибки оно растет, а дальше хоть уповорачивайся. Но в этот момент на передний план выходит компас и он должен показывать правильно. Ну короче, все эти эффекты, это вопрос испытаний и более качественных подборов границ вариативности, шумов и достоверности. Можно, наверное, и точнее будет подобрать. Но сейчас я не хочу в это дело влезать. Практика показывает, что кривизна геометрии самой модели + небольшие порывы ветра сносят и качают горизонт сильнее, чем любые развороты с ЦСУ.

smalltim:

Если дать модели кругами полетать над базой, то за минуту без коррекции любого калмана сшибет.

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

smalltim:

Ну и ПИДЫ. Чем не угодили?

Просто я хочу попробовать что-то другое. Пиды всегда можно прикрутить, этот вариант я держу на про запас. В больших самолетах и веса больше, и крены там маленькие. Медленное нарастание I особо не достает. А на модели, от нее либо толка нет, либо за реакцией модели не успевает. Сегодня ветер такой, завтра сякой. принятие решения должно быть быстрее. Получится у меня или нет что-то хорошее, я пока не знаю. Но в конце концов, это мой проект и у меня есть возможность потратить немного усилий для выяснения своих заблуждений. Никто не может мне запретить это дело. Ты кстати тогда был прав, у меня алгоритм if() else уже за сотню кейсов переваливает. Но ведь маневрирует! 😃

alex-ber
smalltim:

Сообщение от alex-ber Чуствую сейчас кто-то подтянется критиковать… С чего?

Тимофей, эта фраза никоим случаем к тебе не относилась… К кому она была обращена и так знает…
Алекс, а на видео какой из вариантов твоего АП: с подключением в обычному РС каналу или с твоим приемником-передатчиком!
Спасибо!

rual
AlexSneg:

У меня стоит некоторый зазор достоверности вектора G. Если он по модулю вылезает за заданные рамки, достоверность его снижается при корректировке кватерниона, а достоверность мага нарастает. Соответственно, отсюда все результаты. Компас не калиброван + есть лаг по корректировке акселем в недостоверной зоне. Но расти ошибка будет только до пределов пока аксель совсем не исключается из цепочки корректировки. Ну собственно это мы и видим. До определенной ошибки оно растет, а дальше хоть уповорачивайся. Но в этот момент на передний план выходит компас и он должен показывать правильно.

У меня похожий алгоритм, только полной отсечки коррекции нет:

 /* определяем  длину дуги между G и ИНС */
 qAcc.normalize();
 float delta = inner_product(qIMU, qAcc);
 if  (abs(1 - AccMag) < 0.05f) {
  q = (qIMU * (1.0f-omega))+(qAcc*delta*omega);
  /* устраняем вырождение кватерниона */
  if ((q.w!=0)||(q.x!=0)||(q.y!=0)||(q.z!=0)) qIMU = q;
 }

точнее она будет при длине дуги равной Пи.

AlexSneg
alex-ber:

Алекс, а на видео какой из вариантов твоего АП: с подключением в обычному РС каналу или с твоим приемником-передатчиком!

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

Manamet

Молодец, AlexSneg!
Значит так … я решил освоить МК STM32 и начал с STM32F103C6T6A. Планирую пока что собрать платку, помигать светодиодами, сделать свой энкодер, научиться читать данные с мемс гироскопа L3G4200D по SPI и I2C, сделать таймер (нужны часы реального времени), записывать получаемые данные с датчиков на SD карту, а далее квадролет и самолет … .
Пока что налепил такую схемку:
s48.radikal.ru/i119/1209/b0/7b404af4d88c.jpg
Питать буду от двух аккумуляторов типа АА (1.2 В каждый). Есть вопросы по поводу схемы:

  1. Правильно ли гироскопы подключил?
  2. Кусок схемы AlexSneg-а:
    s57.radikal.ru/i157/1209/f8/d2e3e68e7646.jpg
    1* - почему 4 выход гироскопа к земле подключен?
    2* - конденсаторы С16 и С22 для чего?
  3. Подскажите, пожалуйста, схемку для прошивки МК, чтобы через USB ПК можно было прошить.
BAU
Manamet:

Значит так … я решил освоить МК STM32 и начал

Молодой человек, вы случайно не ошиблись веткой? Сдесь тема по автопилоту flybrain, а не ликбез по основам цифровой электроники.
Или хоть бы в личку свои вопрсы задавали.

AlexSneg
Manamet:

Значит так … я решил освоить МК STM32 и начал с STM32F103C6T6A.

А что так торкнуло на подвиги ратные? Может съел чего не того? 😲

  1. двух акков по 1,2В не хватит.
  2. я не понял зачем тебе 2 гироскопа? Думаешь два будет лучше чем один? Или у тебя двойное резервирование на случай выхода одного из строя?
  3. 4 выход насколько я помню то ли адрес I2C фиксирует, то ли в сам режим I2C переключает выходной интерфейс. Я точно не помню, посмотри в ДШ
  4. Можешь обойтись и без С16 и С22. Работать оно будет гарантированно, только криво. А ты вообще в курсе зачем блокировочные кондеры ставят?
  5. STM32F103C6T6A по usb прошить без танцев с бубнами не получится. Хочешь заниматься девелопингом под stm32, покупай jtag отладчик.

Судя по вопросам мне кажется пока рановато за паяльник, может еще хотя бы недельку ДШ разные поизучать? Мне кажется основы можно можно на специализированных форумах поизучать. И необязательно доставлять удовольствие всей аудитории моделистов. На худой конец можно в личку спросить.

Я, кстати, знаю одного продвинутого перца. Он в МК знает ну ващщще усе! Не хочу вслух называть его имени. Но в личку я тебе скажу к кому обратиться.😒😒😒

EHOT

Manamet, лучше прикупите недорогую evaluation board (хотя бы STM32F4Discovery) Избавитесь от фантомных проблем связанных с пайкой и прошивкой.
Заодно прошивальщик других плат будет. ну и ессно прошивать этого “бобика” сможете через USB.

Подключать дополнительные внешние микрухи или модули можно через штырьковый разъем.
ответы на простые вопросы можно найти на http://easyelectronics.ru

18 days later
AlexSneg

Так, мне нужна помощь зала для прояснения 3-х вопросов.

  1. Расскажите мне или ткните где найти и прочитать про то, как на стандартных аппаратурах FS событие обнаружить на приемнике. А так же, как это будет обнаруживаться для варианта sumppm
  2. Сколько каналов ждать в sumppm сигнале? Сколько их там вообще может быть? Тайминги такие же, как для дискретных ppm, то есть 1-2мс или бывают клинические случаи несоблюдения стандартов?
  3. Полярность фронтов в сумппм отрицательная всегда или отдельные производители считают, что они ровнее других и работают по положительным фронтам?

Собственно, все это нужно для завершения деталей прошивки по модулю сопрягалке. Я тестирую со своим пультом e-sky 4ch. У него sumppm отдает 8 каналов отрицательными фронтами на тренерском разъеме. Но как бы хочется понять общую обстановку по этому делу.

--------------
В субботу довелось проверить полезность АП в реале. Хотел протестить до куда рфм22 пробивает. Залетел на 2км и тут сдох акк ноутбука. Изображение пропало. Врубил возврат домой и перекрестившись стал ждать. Через пару минут скай прилетел у хозяину. Я доволен. 😁

Неудачной получилась проверка аварийной посадки. Поднял самолет на 500 метров вверх и вырубил пульт. Оно сказало FS, прилетело и начало кружиться и спускаться. нарезало порядка 6 кругов (горизонт кстати не перекосило без компенсации центробежки, как некоторые предполагали). Затем я понял, что надо прекращать снижение, оказалось, что центр кружения находится над автодорогой оживленной. Ну косяк понятен, буду вводить процедуру корректирующую центр кружения ближе к точке дома, а не где попало возле дома. В чистом поле в принципе по-фиг, дальше 100 метров оно не улетит, но в моем случае 100м уже попало в нехорошую зону.

Нарыл еще косяк с алгоритмом передачи тангажа от процедуры “удержания курса” к процедуре “вираж”. После этого останется заняться компасом и сделать его таки tilt compensated. На этом можно будет сказать, что в первом приближении борьба с навигатором окончена. Останется только один косяк - отсутствие воздушной скорости. Как только дифф. датчик ко мне приедет, займемся и этим. Ну, а пока останется риск провала при неблагоприятном попутном ветре.

SkyWorker

ФС- выход сигнала за границы откалиброванного диапазона. Обычно так.
Сумм ппм я встречал как негативный, так и позитивный. Эксперт помоему как то сделал так, чтш понимает оба варианта, определяет сам автоматически. Лучше делать так конечно.
Количество канал чем больше, тем лучше 😃.
Я сейчас вытащил 12 каналов по сумм ппм. Наверно оптимально. Но вдруг кто на копиях полетит по фпв! 😃 им маловато будет.

AlexSneg
SkyWorker:

ФС- выход сигнала за границы откалиброванного диапазона

В каких пределах? 10мкс может поставить? На каком канале? заранее заданном?
А как тогда оно FS положение серв устанавливает, если выходит за границы допустимого диапазона? Кстати выходит в большую или меньшую сторону?

SkyWorker:

Я сейчас вытащил 12 каналов по сумм ппм.

Как так, 12 каналов не поместится в 20мс период. Или у меня опять пробел в знаниях?

BAU
AlexSneg:

На каком канале? заранее заданном?

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

Панкратов_Сергей
AlexSneg:

В каких пределах? 10мкс может поставить? На каком канале? заранее заданном?

Нет, это как критерий брать нельзя. Случайные импульсы идут со старых FM приемников.
На современных - либо ничего , либо последнее что было, либо запомненное как файлсейф.
Потому файлсейф понимать только по запрограммированной длительности канала , который под это и отдали ( или изгаляться с каналом газа).

SGordon
AlexSneg:

Сообщение от SkyWorker
ФС- выход сигнала за границы откалиброванного диапазона
В каких пределах? 10мкс может поставить? На каком канале? заранее заданном?

В пределах откалиброванного, 10 мкс перебор, каналы настраивать лучше всего.

AlexSneg:

А как тогда оно FS положение серв устанавливает, если выходит за границы допустимого диапазона? Кстати выходит в большую или меньшую сторону?

FS в приемнике это просто установка одного и нескольких каналов в заранее запрограммированные или последние принятые значения…

AlexSneg:

Сообщение от SkyWorker
Я сейчас вытащил 12 каналов по сумм ппм.
Как так, 12 каналов не поместится в 20мс период. Или у меня опять пробел в знаниях?

Там по хитрому бывает, у разных апп по разному! Где то тут прикольные осцилограммки были от baychi, но это на передатчик. На приемники не уверен как они появляются.

BAU

К примеру. запоминаем ФС на приемнике с положением каналом газа нижнюю границу 1мс(-100%). Это и будет значения для определения ФС на приемнике. Подымаем тримами или другими настройками аппаратуры, границу на 10%. Это будет нуль для регулятора, при включении.

SkyWorker
BAU:

К примеру. запоминаем ФС на приемнике с положением каналом газа нижнюю границу 1мс(-100%). Это и будет значения для определения ФС на приемнике. Подымаем тримами или другими настройками аппаратуры, границу на 10%. Это будет нуль для регулятора, при включении.

Или наоборот: триммером или субтриммером вгоняем канал газа до -120%, например, сохраняем это положение в настройках апы как фс, затем возвращаем триммеры в 0. Все. Теперь если по каналу газа сигнал уйдет в этой диапазон, приемник поймет, что случился фс и даст команды всем сервпм встать в заданное положение. Ну а в нашем случае, АП перехвптит управление.