Создание собственной системы стабилизации
Скажите пожалуйста, измерял ли кто-нибудь как сильно вибрация влияет на работу ahrs? Интересно именно после всяких фильтров.
Смотрю все ролики на ютубе и там вроде контроллер прикручен намертво к раме квадрика.
При этом все летает, все стабилизируется.
У меня же какая-то хрень происходит: на столе – стучу, кручу – показывает достаточно аккуратно.
А на раме с запущенными двигателями – вертикаль «волчком ходит».
Вибрирует ощутимо, и пока не придумал как её сильно погасить (жду балансир для пропеллеров из китая).
Может это я что-то накодил не то?
Может это я что-то накодил не то?
Может… rual где-то тут кино кидал жестко контроллер прикручен… у меня тоже контроллер жестко на раме работает как с DSM так и с EKF нормально… ДУС не боятся вибраций, вибраций боится акселерометр - вывод: больше доверия ДУС… т.е. в краткосрочной перспективе работают ДУС, в долгосрочной - аксель (грубо коррекция уплывания ДУС)
больше доверия ДУС…
Вроде так и есть… Проверю еще раз все параметры…
Спасибо.
и пока не придумал как её сильно погасить
Пусть “ходит”…, так и должно быть…, для стабилизации она не используется, там крен и тангаж нужен…
Может это я что-то накодил не то?
В AHRS надо только Kp и Ki немного подобрать, если углы уже показывает правильно , ошибиться в принципе негде…
Добрый день.
Не могу найти формулу компенсации магнитометра по акселерометру.
Не подкинете методику?
Спасибо
Не могу найти формулу компенсации магнитометра по акселерометру.
Странная какая то постановка ) Что можно компенсировать в компасе акселем?
В магнитометре смещение осей компенсируется по мин/макс значениям.
Не могу найти формулу компенсации магнитометра по акселерометру.
xh=MX * cos(Pitch) - MZ * sin(Pitch);
yh=MX *sin(Pitch)*sin(-Roll) + MY * cos(-Roll)-MZ*sin(-Roll)*cos(Pitch);
Azimut=atan2(yh,xh)*TooGRD;
if(Azimut<0){Azimut=360+Azimut;}
где
TooGRD - константа перевода из радиан в градусы
Надо только знаки Pitch и Roll правильно подобрать, в зависимости от физического расположения сенсоров, и будет азимут с компенсацией наклонов. (если об этом речь была(?))…
(если об этом речь была(?))…
это главный вопрос! )) … и тема акселя не раскрыта.
Да ещё… формула вроде из одного известного алгоритма. Олег, как она в перевернутом состоянии себя чувствует?
… и тема акселя не раскрыта
Откуда и как получать углы крена и тангажа - это по желанию, я например, себе взял “честные” углы по расчетам IMU (гира+аксель), а потом их использовал для коррекции магнитометра и получения угла направления…
как она в перевернутом состоянии себя чувствует?
вроде “как положено”…, типа: перевернул - “полетел обратно”, правда при углах близких к 90 гр. наблюдается приличный дрейф (видимо свойство cos/sin)…, а так, свои 3-5 градусов точности вполне достижимы…
добрый день. а есть код для ардуины, который на выходе выдает все углы? (компас, наклон) соотвественно с компесацией
мультивий 😁
нашел проект DIY_Headtracker
исходники както более понятны.
за, против?
Немного не по теме, но тут эксперты собрались. Вопрос простой, можно ли использовать CC3D (или ардупилот) с коптером на щеточных моторах? Вместо регулей - мосфеты, но главное - прошивка. Я так подозреваю, что можно, раз уж это открытые проекты. Вроде как сигналы на ESC идут немного другие, чем ипользуются для щеточных моторов. Вопрос простоты внесения требуемых изменений в код прошивки, если таковые потребуются.
легко. так как ppm сигнал изначально делается шимом
на таких моторах PWM, а не PPM. не нужно трогать CC (или ардупилот), нужны просто регули для коллекторников (если речь идет про двупроводные моторы).
на таких моторах PWM, а не PPM. не нужно трогать CC (или ардупилот), нужны просто регули для коллекторников (если речь идет про двупроводные моторы).
Странно, я думал сигнал там отличается только частотой. И на ESC-ах всегда указывают почему-то PWM, а не PPM. На коптере 2-х проводные моторы. Померил частоту сигнала, идущего на них - в районе 3,75кГц.
Контроллеров подходящих не встречал, да и это уж слишком, по-моему.
моторы управляются не частотой, а скважностью.
что именно “слишком” — не понял.
что именно “слишком”
Ну у обычного ESC вроде бы задача обрабатывать входящий сигнал и на его основе управлять тремя фазами. Что из себя может представлять контроллер щеточным 2х проводном движком я как-то смутно представляю (в плане стыковки с полетным контроллером). Если только конвертор PPM to PWM, но врядли такие существуют, а если и существуют, то это большая редкость.
да, почитал про PPM, вроде стало понятно, в чем различие. Но как его преобразовать не программным путем в PWM, я не представляю
ну, с “просто регулями” я, конечно, погорячился. мелких и доступных, действительно, в широкой продаже не наблюдается.
но если вопрос только в программной части, т. е. сам драйвер уже есть и он ждет не дождется готового PWM на входе, то все проще. в GSC нужно сделать что-то вроде:
- ActuatorSettings —> ChannelUpdateFreq для выбранных каналов выставить в 4 кГц, к примеру
- на закладке Outputs для этих же каналов задать минимум и максимум как 0 и 250 мкс
вроде бы CC и его потомки работают минимум с микросекундами, поэтому для увеличения разрешения нужно снижать частоту, 2 кГц позволит задать 500 промежуточных значений, а 8 кГц — всего 125.
то все проще. в GSC нужно сделать что-то вроде:
Отлично. Это мне и нужно было узнать.
2 кГц позволит задать 500 промежуточных значений, а 8 кГц — всего 125.
Это и есть ActuatorSetting —> ChannelUpdateFreq?
Что касается драйверов, то на штатном контроллере используются сдвоенные n-канальные мосфеты, по 1му на канал, насколько мне удалось разобраться. Точно такие же нашел в продаже.
Вопрос простоты внесения требуемых изменений в код прошивки, если таковые потребуются.
Не уверен, что ардупилот позволит “из коробки” управлять щеточными двигателями (особенно если вы сами хотите делать “контроллер”)
Но внесение изменений там в любом случае достаточно простое - благо система поделена очень хорошо на модули.
Самый влоб - это переписать HAL для RC out - именно через него идут управляющие команды на есц.
github.com/diydrones/…/RCOutput_APM1.cpp