Создание собственной системы стабилизации
Если кто-нибудь скинет прошивку от MYNAME
Могу скинуть на почту. Какой адрес?
И так немного математики, если неправ поправте: Данные с гироскопов преобразую в углы для этого есть значения чувствительности (датащет), далее снимаю проекции ускорения на оси акселерометра и зная угол могу расчитать вектор ускорения? до меня никак не доходит пока как это организовать но буду пробовать…
простенькая статейка про датчики, проекции и всякие недокальманы habrahabr.ru/blogs/augmented_reality/118192/
можно еще проще. смотрим на акселерометры когда угловая скорость с гироскопа = 0. таких моментов немного, но они есть =) с помощью арктангенса вычисляем угол отклонения. а по гироскопам рулим через пародию на ПИД. одним из параметров для регулятора будет отклонение от вертикали. на самолете такой метод работает. на квадрике надо полетать, поснимать логи и посмотреть. у меня двухосевой инклинометр от AD показывал довольно достоверно даже при наличии угловой скорости на модели типа летающее крыло (плосколет F-22).
С днём победы 😃 !!!
Я вот как себе на данный момент представляю:
1 - опрашиваем гироскопы
2 - читаем аксель
3 - с “какой-то магией Калмана” высчитываем точные вектора
4 - с помощью ПИДов (регулируем PWM) даём обратные вектора для гашения отклонений
5 - Скрещиваем пальцы на ногах “руки то заняты” смотрим как аппарат рухнет и идём разрабатывать новую теорию
Эх бало бы так всё просто ан нет ручки то кривенькие так что это надолго:)
Чёт совсем запутался Aref=1650mV тобиш делим на 1023 получаем 0.62mV/дел. какого же болта ржавого мне гироскопы выдают 367, 364, 357 нулевые показания при примерно 1100mV на выходе? то что они разные фиг с ними -почему маленькие то такие?
Пардон кренка здохла:)
И так, пока проблемы две:
Таймеры заняты шимами - опрос гир и акселя придётся проводить поллингом;
Акселерометр - прыгает( 0-255) скорей всего попадаю на перезапись
Дошло наконец, 0 = 255 данные акселерометра представляются так положительное ускорение от 0 до 255 а отрицательное от 255 до 0, или наоборот ещё толком не понял щас проблема, как это представить да ещё без ошибок ибо одинаковые значения и в плюсе и в минусе могут быть, для примера Z= 55 в горизонтальном лежачем положении (ускорение свободного падения) переворачиваем плату получаем 200 - резко дёргаем вверх (низом к верху) получаем опять 55 - ну и в какую сторону летим блин…
У кого-нибудь мысли по данному поводу есть может тупо числовой ряд вписать и определять каждое значение или с какойто последовательностью работать
или пока сделать например 128 - 0 отрицательное 0 - 126 -положительное а как же, большие ускорения
смотреть в гироскоп какой угол? а если гира в 0 - смещение по оси без крена или неуспел гироскоп уже не показывает угловую скорость?
вроде понял в мультивийной прошивке - I2C Accelerometer ADXL345 также работает только адресация регистров другая буду пробовать…
С гироскопов снимаем угловую скорость, пересчитываем по формуле omega=U*gain+bias , интегрируем для получения угла. Трехосевой акселерометр позволяет определять положение с точностью до поворота вокруг вектора .Кладем на горизонтальную поверхность , по оси Z Датчик должен мерить g, по остальным нули.По степени вхождения g в оси x y можно определить крен и тангаж при отсутствии линейных ускорений.
С гироскопов снимаем угловую скорость, пересчитываем по формуле omega=U*gain+bias , интегрируем для получения угла. Трехосевой акселерометр позволяет определять положение с точностью до поворота вокруг вектора .Кладем на горизонтальную поверхность , по оси Z Датчик должен мерить g, по остальным нули.По степени вхождения g в оси x y можно определить крен и тангаж при отсутствии линейных ускорений
Как работает гироскоп и акселерометр я знаю, проблема в другом - программирование (я в этом не силён), акселерометр выдаёт byte - восмиразрядное беззнаковое число максимум 255 при этом он его выдаёт в дополнительном коде тобиш от 0 до +177 и от -1 до -178 я же вижу числа от 0 до +255 сейчас решаю проблему как это считать…
А переменная в которую пишется результат точно signed?
Просто в Вашем сообщение противоречие.
беззнаковое число максимум 255 при этом он его выдаёт в дополнительном коде тобиш от 0 до +177 и от -1 до -178 я же вижу числа от 0 до +255 сейчас решаю проблему как это считать…
То есть акселерометр должен отдавать знаковое, а Вы получаете беззнаковое?
То есть акселерометр должен отдавать знаковое, а Вы получаете беззнаковое?
а как правильно обозвать? sbyte оно не понимает.
в бинарном виде так и есть он выдаёт знаковое
Блин ещё вчера вечером перекопал все а туда даже не глянул, спасибо!!!
И цифирки правильные побежали:)😃😃
Ура)
Попытался запустить один из фильтров из нета (псевдокальман) показания хреновые пойду другим путём, ой чует моё сердце придётся всё считать, ладно хоть идеи появились😁
Зубрю страшную книженцию “Фильтр Калмана-Бьюси” books.tr200.ru/v.php?id=363192
А с гироскопами можно просто до одурения поступить, как впринципе сделано в куке по причине того что “Углова́я ско́рость — векторная величина, характеризующая скорость вращения тела. Вектор угловой скорости по величине равен углу поворота тела в единицу времени, а направлен по оси вращения согласно правилу буравчика, то есть, в ту сторону, в которую ввинчивался бы буравчик с правой резьбой, если бы вращался в ту же сторону.” - из учебника. Тоесть можно взять показания с гироскопа и сказать что это угол, а не угловая скорость и работать с этим углом, в куке ведь работает только какойнибудь коэффициент придумать?
Тоесть можно взять показания с гироскопа и сказать что это угол, а не угловая скорость и работать с этим углом, в куке ведь работает только какойнибудь коэффициент придумать?
Можно - но это будет стабилизация по угловой скорости ,режим Акро. Для стабилизации по углу необходимо численно интегрировать угловую скорость.
а если угловую скорость разделить на время, то узнаем на сколько градусов мы уже наклонились =)
Сергей, будут конкретные вопросы - пишите тут, не стесняйтесь.