flybrain. передатчик + приемник + автопилот. powered by stm32
А по-моему все супер!!!
Респект разрабу!
давно читаю тему (с самого основания…) - скептикам ПРИВЕТ!!!
сам не прогер, поэтому судить не могу…
Но Алекс - просто молодец…
Чуствую сейчас кто-то подтянется критиковать…
Чуствую сейчас кто-то подтянется критиковать…
С чего? Всё путем, разве что центробежку надо таки учитывать. Если дать модели кругами полетать над базой, то за минуту без коррекции любого калмана сшибет.
Ну и ПИДЫ. Чем не угодили? Весь мир их уже лет 50 как их использует везде, и пока альтернатив особых нету. Или я ошибаюсь?
С Кальманом на самом деле все очень просто, если реально вникнуть. Никаких шаманств там нет. А с кватернионами, как оказалось, еще проще чем с эйлером. Я вчера глянул в свой код, чтобы освежить в памяти, что я там делал. Так вот на вопрос об учете ЦСУ, ответ простой.
У меня стоит некоторый зазор достоверности вектора G. Если он по модулю вылезает за заданные рамки, достоверность его снижается при корректировке кватерниона, а достоверность мага нарастает. Соответственно, отсюда все результаты. Компас не калиброван + есть лаг по корректировке акселем в недостоверной зоне. Но расти ошибка будет только до пределов пока аксель совсем не исключается из цепочки корректировки. Ну собственно это мы и видим. До определенной ошибки оно растет, а дальше хоть уповорачивайся. Но в этот момент на передний план выходит компас и он должен показывать правильно. Ну короче, все эти эффекты, это вопрос испытаний и более качественных подборов границ вариативности, шумов и достоверности. Можно, наверное, и точнее будет подобрать. Но сейчас я не хочу в это дело влезать. Практика показывает, что кривизна геометрии самой модели + небольшие порывы ветра сносят и качают горизонт сильнее, чем любые развороты с ЦСУ.
Если дать модели кругами полетать над базой, то за минуту без коррекции любого калмана сшибет.
Нет, аксель отбросится, компас его задавит. Кроме того достаточно выпрямить модель и тут же аксель включится и снимет дельту по крену.
Единственное, чего надо бы добавить в мою модель горизонта это критерии вранья компаса. В принципе понятно как это реализовать, но мне реально лень сейчас это делать. Для нормальных полетов, того, что есть по горизонту, за глаза хватает.
Ну и ПИДЫ. Чем не угодили?
Просто я хочу попробовать что-то другое. Пиды всегда можно прикрутить, этот вариант я держу на про запас. В больших самолетах и веса больше, и крены там маленькие. Медленное нарастание I особо не достает. А на модели, от нее либо толка нет, либо за реакцией модели не успевает. Сегодня ветер такой, завтра сякой. принятие решения должно быть быстрее. Получится у меня или нет что-то хорошее, я пока не знаю. Но в конце концов, это мой проект и у меня есть возможность потратить немного усилий для выяснения своих заблуждений. Никто не может мне запретить это дело. Ты кстати тогда был прав, у меня алгоритм if() else уже за сотню кейсов переваливает. Но ведь маневрирует! 😃
Сообщение от alex-ber Чуствую сейчас кто-то подтянется критиковать… С чего?
Тимофей, эта фраза никоим случаем к тебе не относилась… К кому она была обращена и так знает…
Алекс, а на видео какой из вариантов твоего АП: с подключением в обычному РС каналу или с твоим приемником-передатчиком!
Спасибо!
У меня стоит некоторый зазор достоверности вектора 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;
}
точнее она будет при длине дуги равной Пи.
Алекс, а на видео какой из вариантов твоего АП: с подключением в обычному РС каналу или с твоим приемником-передатчиком!
Пока только мой передатчик и мой приемник. Сопрягалка сейчас как раз в процессе написания программы зависла. Изучаю PPM сигналы с приемника. Делаю так сказать даунгрейд.
Молодец, AlexSneg!
Значит так … я решил освоить МК STM32 и начал с STM32F103C6T6A. Планирую пока что собрать платку, помигать светодиодами, сделать свой энкодер, научиться читать данные с мемс гироскопа L3G4200D по SPI и I2C, сделать таймер (нужны часы реального времени), записывать получаемые данные с датчиков на SD карту, а далее квадролет и самолет … .
Пока что налепил такую схемку:
s48.radikal.ru/i119/1209/b0/7b404af4d88c.jpg
Питать буду от двух аккумуляторов типа АА (1.2 В каждый). Есть вопросы по поводу схемы:
- Правильно ли гироскопы подключил?
- Кусок схемы AlexSneg-а:
s57.radikal.ru/i157/1209/f8/d2e3e68e7646.jpg
1* - почему 4 выход гироскопа к земле подключен?
2* - конденсаторы С16 и С22 для чего? - Подскажите, пожалуйста, схемку для прошивки МК, чтобы через USB ПК можно было прошить.
Значит так … я решил освоить МК STM32 и начал
Молодой человек, вы случайно не ошиблись веткой? Сдесь тема по автопилоту flybrain, а не ликбез по основам цифровой электроники.
Или хоть бы в личку свои вопрсы задавали.
Значит так … я решил освоить МК STM32 и начал с STM32F103C6T6A.
А что так торкнуло на подвиги ратные? Может съел чего не того? 😲
- двух акков по 1,2В не хватит.
- я не понял зачем тебе 2 гироскопа? Думаешь два будет лучше чем один? Или у тебя двойное резервирование на случай выхода одного из строя?
- 4 выход насколько я помню то ли адрес I2C фиксирует, то ли в сам режим I2C переключает выходной интерфейс. Я точно не помню, посмотри в ДШ
- Можешь обойтись и без С16 и С22. Работать оно будет гарантированно, только криво. А ты вообще в курсе зачем блокировочные кондеры ставят?
- STM32F103C6T6A по usb прошить без танцев с бубнами не получится. Хочешь заниматься девелопингом под stm32, покупай jtag отладчик.
Судя по вопросам мне кажется пока рановато за паяльник, может еще хотя бы недельку ДШ разные поизучать? Мне кажется основы можно можно на специализированных форумах поизучать. И необязательно доставлять удовольствие всей аудитории моделистов. На худой конец можно в личку спросить.
Я, кстати, знаю одного продвинутого перца. Он в МК знает ну ващщще усе! Не хочу вслух называть его имени. Но в личку я тебе скажу к кому обратиться.😒😒😒
Manamet, лучше прикупите недорогую evaluation board (хотя бы STM32F4Discovery) Избавитесь от фантомных проблем связанных с пайкой и прошивкой.
Заодно прошивальщик других плат будет. ну и ессно прошивать этого “бобика” сможете через USB.
Подключать дополнительные внешние микрухи или модули можно через штырьковый разъем.
ответы на простые вопросы можно найти на http://easyelectronics.ru
Так, мне нужна помощь зала для прояснения 3-х вопросов.
- Расскажите мне или ткните где найти и прочитать про то, как на стандартных аппаратурах FS событие обнаружить на приемнике. А так же, как это будет обнаруживаться для варианта sumppm
- Сколько каналов ждать в sumppm сигнале? Сколько их там вообще может быть? Тайминги такие же, как для дискретных ppm, то есть 1-2мс или бывают клинические случаи несоблюдения стандартов?
- Полярность фронтов в сумппм отрицательная всегда или отдельные производители считают, что они ровнее других и работают по положительным фронтам?
Собственно, все это нужно для завершения деталей прошивки по модулю сопрягалке. Я тестирую со своим пультом e-sky 4ch. У него sumppm отдает 8 каналов отрицательными фронтами на тренерском разъеме. Но как бы хочется понять общую обстановку по этому делу.
--------------
В субботу довелось проверить полезность АП в реале. Хотел протестить до куда рфм22 пробивает. Залетел на 2км и тут сдох акк ноутбука. Изображение пропало. Врубил возврат домой и перекрестившись стал ждать. Через пару минут скай прилетел у хозяину. Я доволен. 😁
Неудачной получилась проверка аварийной посадки. Поднял самолет на 500 метров вверх и вырубил пульт. Оно сказало FS, прилетело и начало кружиться и спускаться. нарезало порядка 6 кругов (горизонт кстати не перекосило без компенсации центробежки, как некоторые предполагали). Затем я понял, что надо прекращать снижение, оказалось, что центр кружения находится над автодорогой оживленной. Ну косяк понятен, буду вводить процедуру корректирующую центр кружения ближе к точке дома, а не где попало возле дома. В чистом поле в принципе по-фиг, дальше 100 метров оно не улетит, но в моем случае 100м уже попало в нехорошую зону.
Нарыл еще косяк с алгоритмом передачи тангажа от процедуры “удержания курса” к процедуре “вираж”. После этого останется заняться компасом и сделать его таки tilt compensated. На этом можно будет сказать, что в первом приближении борьба с навигатором окончена. Останется только один косяк - отсутствие воздушной скорости. Как только дифф. датчик ко мне приедет, займемся и этим. Ну, а пока останется риск провала при неблагоприятном попутном ветре.
ФС- выход сигнала за границы откалиброванного диапазона. Обычно так.
Сумм ппм я встречал как негативный, так и позитивный. Эксперт помоему как то сделал так, чтш понимает оба варианта, определяет сам автоматически. Лучше делать так конечно.
Количество канал чем больше, тем лучше 😃.
Я сейчас вытащил 12 каналов по сумм ппм. Наверно оптимально. Но вдруг кто на копиях полетит по фпв! 😃 им маловато будет.
ФС- выход сигнала за границы откалиброванного диапазона
В каких пределах? 10мкс может поставить? На каком канале? заранее заданном?
А как тогда оно FS положение серв устанавливает, если выходит за границы допустимого диапазона? Кстати выходит в большую или меньшую сторону?
Я сейчас вытащил 12 каналов по сумм ппм.
Как так, 12 каналов не поместится в 20мс период. Или у меня опять пробел в знаниях?
На каком канале? заранее заданном?
Обычно используют канал газа. Это самое удобное, поскольку регулятор калибрует свой нуль при подаче напряжения.
В каких пределах? 10мкс может поставить? На каком канале? заранее заданном?
Нет, это как критерий брать нельзя. Случайные импульсы идут со старых FM приемников.
На современных - либо ничего , либо последнее что было, либо запомненное как файлсейф.
Потому файлсейф понимать только по запрограммированной длительности канала , который под это и отдали ( или изгаляться с каналом газа).
Сообщение от SkyWorker
ФС- выход сигнала за границы откалиброванного диапазона
В каких пределах? 10мкс может поставить? На каком канале? заранее заданном?
В пределах откалиброванного, 10 мкс перебор, каналы настраивать лучше всего.
А как тогда оно FS положение серв устанавливает, если выходит за границы допустимого диапазона? Кстати выходит в большую или меньшую сторону?
FS в приемнике это просто установка одного и нескольких каналов в заранее запрограммированные или последние принятые значения…
Сообщение от SkyWorker
Я сейчас вытащил 12 каналов по сумм ппм.
Как так, 12 каналов не поместится в 20мс период. Или у меня опять пробел в знаниях?
Там по хитрому бывает, у разных апп по разному! Где то тут прикольные осцилограммки были от baychi, но это на передатчик. На приемники не уверен как они появляются.
К примеру. запоминаем ФС на приемнике с положением каналом газа нижнюю границу 1мс(-100%). Это и будет значения для определения ФС на приемнике. Подымаем тримами или другими настройками аппаратуры, границу на 10%. Это будет нуль для регулятора, при включении.
К примеру. запоминаем ФС на приемнике с положением каналом газа нижнюю границу 1мс(-100%). Это и будет значения для определения ФС на приемнике. Подымаем тримами или другими настройками аппаратуры, границу на 10%. Это будет нуль для регулятора, при включении.
Или наоборот: триммером или субтриммером вгоняем канал газа до -120%, например, сохраняем это положение в настройках апы как фс, затем возвращаем триммеры в 0. Все. Теперь если по каналу газа сигнал уйдет в этой диапазон, приемник поймет, что случился фс и даст команды всем сервпм встать в заданное положение. Ну а в нашем случае, АП перехвптит управление.
триммером или субтриммером вгоняем канал газа до -120%
Не все аппаратуры позволяют тримировать газ ниже 0(-100%). Но суть такая же.
Хорошо, поставлю вопрос так.
Достаточно ли будет, если я внедрю такую настройку:
- Задается канал приемника на котором анализируется состояние
- Если там раньше что-то было, а теперь пусто, значит FS
- Если там уход из зоны калибровки крайних положений, либо вверх, либо вниз, но не более чем (скажем) 30%, и повторяется хотя бы более 10 импульсов подряд и далее, значит FS
- если выходим из пункта 2 или 3 (длина импульса нормализовалась), значит передатчик вернулся на связь
Это исчерпывающий вариант?
Cortex - не дорогой
Ну, тут, возможно, засада. В эмбеддинг сообществе давно ходят мысли о том, что STM искусственно занизила цену чипов, чтоб выйти на рынок, и рано или поздно отобьёт своё. С атмелом ведь так же было (и есть). Сначала м48 стОила 20 рублёв и народ наклепал на них 100500 поделок. Сейчас оно стОит уже дороже ф100, но деваться некуда - не переделывать же проекты.
Меньше проводов и модулей - проще установить
Когда там будет один модуль, тогда да 😃
Не нужны специальные приспособления для обслуживания - проще пользоваться
Когда там блюпуп будет, тогда да 😃
Мощнее контроллер и больше памяти для ПО - приятнее и безопаснее летать
А вот это вообще к делу не относится. Недавно ковырял САУ от МИ-8, там 2кб внешней ПЗУ и 51-й камень на 2,5 МГц. И ведь летает уже лет 40… Да и на атмегах туева хуча живых проектов поднималась.
Хотя, несомненно, согласен, что когда чип есть, с такими ресурсами, глупо им не пользоваться.
родилось оно не случайно, а из нежелания на тот момент разгребать четный-нечетный полукадр. А так же по причине неясности сколь еще я скушаю оперативки. Чисто программным апгрейдом я могу увеличить разрешение по горизонтали в 1,5 раза и в 2 раза по вертикали. Увеличение по горизонтали более чем в 1,5 раза возможно, но не перебор ли это?
Кроме того надо принять во внимание следующее, что развертка белого буфера и черного идет аппаратно и одновременно. То есть их нужно иметь всегда 2 выделенных.
Вот и минус использования DMA как модулятора… А можно использовать 2 бита кодирования цвета и получить 2 оттенка серого (не считая Ч/Б), при этом заняв 256*192*2 = 98304 бит ОЗУ. То есть 13 кБайт всего. SRAM микросхемка на 16 ножек бывает минимум на мегабайт. И 133 МГц тактовой.
Это я сейчас с гордостью упоминаю ПЛИС 😃
А можно 3 бита, и иметь аж 9 цветов.
ПС. Кстати, сейчас вышли кисликсы с аппаратным контроллером DDR. Народ в буржунии уже VGA контроллеры на них лепит и мультики крутит. Ибо DDR уже где-то 512 Мбайт на камешек получается. И частоты там до гигагерца…
Понятно, что нафиг такие скорости не нужны, но меньше не бывает 😃
Не понимаю я, от куда берётся достоверная информация о векторе G, если он длительное время смещён за счёт центростремительного ускорения,
Ну так гироскопы то работают. Их уход позволяет им верить 1-2 минуты. Про секунды вообще не вопрос. Значит, если гиры показывают угол 10 градусов, то по акселю можно судить про ускорение,зная куда направлен вектор Жо и его примерный модуль.
Опять же, зная модуль Жо можно делать выводы, действуют ли на самик сейчас иные ускорения или нет.
Нет, аксель отбросится, компас его задавит. Кроме того достаточно выпрямить модель и тут же аксель включится и снимет дельту по крену.
То есть вектор состояния задан только через углы? Без скоростей?