Создание собственной системы стабилизации
шум барометра проявляется при резких наклонах, при активном маневрировании и сильных порывах ветра, если просто зависнуть, то барометр нормально показывает, не знаю как у людей что то на барометре летает, но при порывах ветра, показания скачут на 2-3 метра, даже с маленькой коррекцией от баро, коптер плохо летает. Может реально барометр битый.
вот схема откл/вкл силовой части
вот схема откл/вкл силовой части
посмотрите на микросхему btc555 хороший ключ, дешево и посто
Спасибо, но в продаже я его не нашел, кроме Чип и Дипа за 520 р. 3 IRF4905 обойдутся дешевле. К тому же, тут есть небольшая особенность, что надо коммутировать именно питание (+), так как если коммутировать (-), на управляющем выводе ардуины окажется все напряжение аккума. N - канал не оч подходит из-за неполного открытия, не хотелось проверять, поэтому сразу поставил P-канальный мосфет.
но в продаже я его не нашел, кроме Чип и Дипа за 520 р.
вот 388р за 2 штуки с учетом пересылки ru.aliexpress.com/item/…/32694229975.html
если кому нужно , могу насыпать жменьку китайских BTS555 за шапку сухарей … 2 раза пытался купить у китайцев , и оба раза так и не смог заставить их работать … так и валяются до сих пор …
теперь покупаю только официально , с документами , и соответственно дорого …
Хард - STM32f407VGT6 - оценочная плата Discovery, вообще в планах сделать порт по F4BY, не зря ж его покупал, но времени не хватает.
Илья, а небыло каких либо мыслей применить RaspberryPi для сей задачи ? Я время от времени достаю свою с полки пробую разные идеи в этом направлении… и забрасываю обратно по разным причинам… Очередной “приступ” её использовать недавно был кстати… идея сама по себе заманчивая и перспективная…
(хотелось бы обменяться мнениями на этот счет…)
Есть мысли применить stm32f7 и дополнить UKF еще и данными с камер, предварительно обработанными ПЛИС, но это новая тема для меня, мб потом разберусь. Но в планах полюбому задействовать, что то помощнее Ф4. RaspberryPi у меня нет, я особо не вдавался в подробности работы с ней. А она может под ОСРВ работать? Я так понял проблема писать мозжечок коптера под мощным процом заключается в прямом доступе к перефферии и в поддержке ОСРВ. Или вы хотите мозжечок оставить на Ф4, а остальное, не требующее реального времени, отдать RaspberryPi?
Есть мысли применить stm32f7
у меня пока лежит 746-й до зимы наверно 😦 до чего дошли руки - это залить u-boot линуксовый и потыркаться в консоль )))
Или вы хотите мозжечок оставить на Ф4, а остальное, не требующее реального времени, отдать RaspberryPi
Как вариант, да… (и видимо, он самый реальный). Основная мотивация - наличие мощного видеоядра (люблю я FPV,а OSD на LM1881 уже задолбало своими косяками), ну и конечно неоспоримые плюсы - “человеческий” звук, wi-fi, высокоуровневый питон… и т.д. и т.п.
у меня пока лежит 746-й
А в чем фишка этого проца ? посмотрел, не понял,…
Хард - STM32f407VGT6 - оценочная плата Discovery, вообще в планах сделать порт по F4BY, не зря ж его покупал, но времени не хватает.
Могу вывалить свои исходники низов Ф4БЫ, можешь оттуда надергать или взять как есть.
Система работает примерно так: есть некая задача запроса данных, либо по внешнему прерыванию, либо по таймеру - происходит запрос данных с датчиков. Спустя какое то время происходит прерывание соответсвующего интерфейса (SPI, I2C), в котором выдается семафор. Соответсвующая задача обработки ловит этот семафор и обрабывает данные, выдает семафор для логов или другой обработки.
У меня все обработки в прерываниях.
и UKF (один общий для ориентации и положения)
Сам написал? Что там лианеризируется?
НО если происходит насыщение по ЯВУ, то происходит конкуренция угловых пидов и пида высоты, из-за чего коптер теряет устойчивость.
У меня микшер взвешивающий, т.е. курсовой шим в максимуме вывалит в канал моторв в 2 раза меньше.
Напишу как я про “классную” квадратную шину: приехала мне плата бракованая, пока чисто ось крутится вроде все хорошо как только запускаешь арду - ну тут как-то ещё пол беды, коннектится через УСБ через раз, но стоит откалибровать компас и перегрузить, мало того что настройки “слетают” ну на самом деле не “слетают” а практически недоступны, проц такое ощущение сбрасывает частоту. Менял я и компас и фрам и проц - ничего не дало, а оказалось всё прозаично просто, баро тупил и не отпускал scl ( у слейва есть такая привилегия) и все - все хитромудрые алгоритмы коту под хвост!
в основном полагаюсь на высоту по GPS - она довольно качественная.
Насколько качественная ? Я разные модули пытал (EB-500,EB-270,SIM68,SIRFIII), скачки по высоте в лучшем случае 10-15 метров, проявляются с частотой в несколько секунд…
Менял я и компас и фрам и проц - ничего не дало
понимаю, бывает ())… я вот тоже недавно спалил свой “супер контроллер”, подав 12 вольт на вход АЦП, пришлось перепаивать (на ЛУТ плате) стоногий F407…(😃)
про “классную” квадратную шину
мораль: при планировании новых контроллеров надо отказываться от использования I2C в пользу SPI
благо у всех сенсоров включая HMC5983 и ms5611 она есть
Могу вывалить свои исходники низов Ф4БЫ, можешь оттуда надергать или взять как есть.
Давайте, думаю не помешает, мне там только порты переобозначить по идее. Но теперь коптером займусь только в следующем году.
У меня все обработки в прерываниях.
У меня тоже раньше вся обработка в прерываниях была, но дальше определенного предела так двигаться не получается, слишком нерационально процессорное время тратится. Работой FreeRTOS я доволен, все инструменты для масштабируемой и надежной системы есть (семафоры, мьютексы).
Сам написал? Что там лианеризируется?
UKF полностью взял у Autoquad, слегка модифицировал, добавил компенсацию нецентрального расположения ЖПС, чутка улучшил коррекцию по ЖПС, и там по мелочи.
Линеаризуются все уравнения связанные с переходом из локальной СК в глобальную (они ж нелинейные или я ошибаюсь?), а также все операции связанные с кватернионами.
У меня микшер взвешивающий, т.е. курсовой шим в максимуме вывалит в канал моторв в 2 раза меньше.
А можно поподробнее? просто выход курсового ПИДа ограничен?
Насколько качественная ? Я разные модули пытал (EB-500,EB-270,SIM68,SIRFIII), скачки по высоте в лучшем случае 10-15 метров, проявляются с частотой в несколько секунд…
В начале когда спутники ловит, да прыгает, но это около 10 секунд, потом она относительно четкая, график я приводил на предыдущей странице.
На первом видео на этом форуме, у меня высота определялась по акселю + коррекция от ЖПС через ПИ регулятор (по принципу Махони), и ничего четко летал даже в порывы ветра и резкие наклоны.
оказалось всё прозаично просто, баро тупил и не отпускал scl ( у слейва есть такая привилегия) и все - все хитромудрые алгоритмы коту под хвост!
СКЛ слейв удерживает если хочет захватить управление шиной. Серёг, зачем барику бунтовать на шине?
Давайте, думаю не помешает, мне там только порты переобозначить по идее.
Завтра выложу.
Но теперь коптером займусь только в следующем году.
Что так?
У меня тоже раньше вся обработка в прерываниях была, но дальше определенного предела так двигаться не получается, слишком нерационально процессорное время тратится.
То что масштабируется плохо это да, а насчет времени вряд ли.
Линеаризуются все уравнения связанные с переходом из локальной СК в глобальную (они ж нелинейные или я ошибаюсь?), а также все операции связанные с кватернионами.
Кватернионы - линейная алгебра, всё должно быть линейно, кроме преобразования угловой скорости в ориентацию (там тригонометрия), но за период отчета в переделе макс угловой скорости ДУС синус линеен.
А можно поподробнее? просто выход курсового ПИДа ограничен?
Да, и он весит в 2 раза меньше.
Что так?
Две работы, учеба
То что масштабируется плохо это да, а насчет времени вряд ли.
помню, что алгоритмы определения ориентации обсчитывались в прерывании SPI от MPU6500, от этого страдали прерывания по i2c, а когда понадобилось еще записывать буферы для логов, то пришлось разделять весь процесс на 2 части, плодить флаги, проверки. Может и стоило изобрести свой велосипед, но у этого решения больше минусов, чем использовать ОСРВ.
Кватернионы - линейная алгебра, всё должно быть линейно, кроме преобразования угловой скорости в ориентацию (там тригонометрия), но за период отчета в переделе макс угловой скорости ДУС синус линеен
Ну допустим есть вектор состояния {q0, q1, q2, q3, Vx, Vy, Vz}, где q0, q1, q2, q3 - кватернион ориентации, Vx, Vy, Vz - это проекции вектора скорости в глобальной СК. Допустим у нас есть датчик скорости, но он измеряет скорость в локальной СК vx, vy, vz. Вот с помощью каких матриц F(которая еще A) и B(при управлении) нам из кватерниона и вектора скорости локальной СК получить вектор скорости в глобальной СК? Нет таких матриц в данном контексте задачи, значит это уже нелинейная зависимость.
В принципе работа с кватернионами - не линейна, а скорее тригонометрическая, просто она красиво выражается без использования тригонометрических функций, но основание именно тригонометрия, что уже не линейно
Серёг, зачем барику бунтовать на шине?
а фиг его знает - дефект, отказался я от этой шины в мини совсем… скорей бы её запустить, а то уж больше года в “подвешенном” состоянии - нет времени домашние проблемы 😦 мини сейчас как винда 3.1.1 лежит на столе - ПО почти готово но не собираемо…
когда понадобилось еще записывать буферы для логов, то пришлось разделять весь процесс на 2 части, плодить флаги, проверки
Ну да, маневрирование задачами весьма удобно, но, повторюсь, время не экономит.
Ну допустим есть вектор состояния {q0, q1, q2, q3, Vx, Vy, Vz}, где q0, q1, q2, q3 - кватернион ориентации, Vx, Vy, Vz - это проекции вектора скорости в глобальной СК. Допустим у нас есть датчик скорости, но он измеряет скорость в локальной СК vx, vy, vz. Вот с помощью каких матриц F(которая еще A) и B(при управлении) нам из кватерниона и вектора скорости локальной СК получить вектор скорости в глобальной СК? Нет таких матриц в данном контексте задачи, значит это уже нелинейная зависимость.
Насколько я понял, речь шла о преобразовании скорости в одной СК в скорость в другой СК? А то написано из глобальной в глобальную?
Если преобразование из одной в другую, то это линейное преобразование - умножение поворачивающего кватерниона на кватернион от вектора и на обратный вращающий кватернион (V’ = qvq–1). Все это линейные матричные преобразования.
Код приложил.
Спасибо за код.
Насколько я понял, речь шла о преобразовании скорости в одной СК в скорость в другой СК? А то написано из глобальной в глобальную?
Поняли правильно, но у меня нет ошибки.
линейное преобразование - умножение поворачивающего кватерниона на кватернион от вектора и на обратный вращающий кватернион (V’ = qvq–1)
Я понимаю, но оно может и линейно в общем виде, в контексте задачи Xk = A*Xk-1 + B*U, это нелиненая зависимость и простыми матрицами A и B ее не решить. К тому же это не матричное умножение,а кватернионное.
Друзья, поздравляю всех с Наступающим! Всего самого наилучшего! Интересных проектов!
Интересных проектов!
Что там у Вас с проектами ?
От себя поздравляю всех с праздником, мира всем, здоровья, и исполнения желаний в Новом году…