Создание собственной системы стабилизации

oleg70
alexeykozin:

тяга моторов = сумма векторов акселерометров

Это как ? И вообще, поделитесь секретом - как вычисляется линейное ускорение коптера по осям ? (никогда не копался в готовых кодах), есть подозрение что вещь эта довольно “шумная” и для расчетов непригодная…

alexeykozin

проекция акселей на плоскость горизонта?
github.com/diydrones/ardupilot/…/AP_AHRS_DCM.cpp#L…

_accel_ef[i] = _dcm_matrix * _ins.get_accel(i);
_accel_ef[i] - это 3д вектор где
_accel_ef[i].x - ускорение на север
_accel_ef[i].y - ускорение на восток
_accel_ef[i].z - ускорение вверх

_dcm_matrix - матрица поворотов (горизонт коптера)
_ins.get_accel(i) - конкретный акселерометр с номером i

или как читают регистры мпу чтобы получить значения гир и акселей?

oleg70:

есть подозрение что вещь эта довольно “шумная” и для расчетов непригодная…

в мпу6000 есть функционал встроенного фильтра, фильтрует неплохо. точность конечно желает лучшего но на нашем уровне пока в эту цену ничего лучшего нет

oleg70
alexeykozin:

или как читают регистры мпу чтобы получить значения гир и акселей?

Нет, это всё ясно, (у меня рабочая, в плане стабилизации, собственная прошивка)), и в плане линейного ускорения понятно - что надо просто вычесть из “сырого” показания акселя текущую проекцию силы тяжести, вопрос в том что:
1.оси акселя офигенно шумят, просто сами, и от внешних вибраций…
2.всегда присутствует разброс у конкретного акселя по осям, т.е. надо кропотливо откалибровать каждую ось (возможно ли это вообще ? на практике)
3.показания уплывают при нагреве/остывании, (с этим ещё сложнее, в “назе” например аж внешний подогрев сделали)
4.(самое неприятное) вычитаемое значение проекции G (у меня кватернионы) имеет естественное запаздывание от реалтайма, в связи с этим происходят “выбросы” ускорения, которые непонятно как убирать…
Как можно вообще такие показания интегрировать, для получения скажем скорости, и уж того больше, расстояния ?? как эти трудности решаются в известных проектах ?

SergDoc
oleg70:

1.оси акселя офигенно шумят, просто сами, и от внешних вибраций…

фильтр датчика + программный фильтр

oleg70:

2.всегда присутствует разброс у конкретного акселя по осям, т.е. надо кропотливо откалибровать каждую ось (возможно ли это вообще ? на практике)

калибровка всех осей причём в обе стороны

oleg70:

показания уплывают при нагреве/остывании, (с этим ещё сложнее, в “назе” например аж внешний подогрев сделали)

в МПУ практически не плывут, ну если перепад не слишком большой ±15 градусов за пару секунд, где-то тут в ветке я когда-то экспериментировал с лсм - подсовывал под кулер ноута - как пьяный был, с мпу такого не наблюдается, в крайнем случае в датчике есть температурный датчик - можно пользовать его, конечно зависимость не совсем линейна - но похожа на правду

oleg70:

4.(самое неприятное) вычитаемое значение проекции G (у меня кватернионы) имеет естественное запаздывание от реалтайма, в связи с этим происходят “выбросы” ускорения, которые непонятно как убирать…

инерциалка не работает как иму, а раза в 4 медленней… можно и нужно фильтронуть дополнительно значения…

oleg70
SergDoc:

можно и нужно фильтронуть дополнительно значения…

Вопрос как ?
Тут делема: увеличиваешь “вес” акселя - реакция ускоряется (хорошо вроде), но как следствие на горизонт больше влияет центробежные ускорения (совсем не хорошо)… и как “фильтронуть” то ?

alexeykozin
oleg70:

Тут делема: увеличиваешь “вес” акселя - реакция ускоряется (хорошо вроде), но как следствие на горизонт больше влияет центробежные ускорения (совсем не хорошо)… и как “фильтронуть” то ?

Динамически менять подтяг в зависимости от условий полета
или… попробовать вычитать горизонтальную проекцию ускорений - но тут тоже есть риск получить барона мюнхаузена который пытается себя вытащить за волосы из болота.

  • 3д вектор компаса. он почти всегда может по двум точкам определить плоскость горизонта. т.е. не даст ось лишь при соосности питча или рола четко на магнитный север, нужно учитывать манитное на клонение и перекосы в установке

  • крен питч у коптера постоянно меняется и можно сравнивать ожидаемое от изменения крена ускорение с реальным (но тут немного будет мешать сила воздействия ветра) т.е зная что при крене 5град имеем ускорение тяга * cos(угол) - при этом дельта этого выражения с реальным ускорением либо внешний толчок либо ветер либо ошибка горизонта

oleg70
alexeykozin:

Динамически менять подтяг в зависимости от условий полета

Опять “мюнхаузен”… - в “условиях полета” опять засел аксель… А ведь это самый каверзный вопрос вообще в системах стабилизации на основе акселерометра (😃) - как отделить чистое ускорение от направления силы тяжести если физически для датчика это одно и то-же… если б не это, то вопрос удержания позиции в точке вообще бы не стоял… (нужели Калману звонить?)))

rual
oleg70:

как отделить чистое ускорение от направления силы тяжести если физически для датчика это одно и то-же…

очень просто, посчитать по ГНСС и барику линейное ускорение, добавить +9.8м/с2 по вертикали и сравнить с акселем, результатом сравнения крутить своё представление о ориентации в пространстве.

oleg70
rual:

очень просто,

Есть реальные результаты ?

rual:

посчитать по ГНСС и барику линейное ускорение

Даже если и можно с них “выдернуть” ускорение, то только в длительном промежутке времени… (о точности я вообще молчу, только вот обсуждали…), а для интегрирования ускорения в пройденный путь пошустрей надо работать…
Я как то скептически смотрю на всю эту “математическую алхимию”… (могу сильно ошибаться, готов к критике…)

rual
oleg70:

Есть реальные результаты ?

Олег, можешь сам проверить - установить мою “виртуалку”, если нет ф4дисковери, могу под твою плату с Ф4 выводы переделать. Собственно там нужны только два с половиной усарта. В реале продемонстрировать пока не могу, если времени сегодня-завтра хватит залить в F4BY, покажу тест на “карусельке”.

oleg70:

Даже если и можно с них “выдернуть” ускорение, то только в длительном промежутке времени… (о точности я вообще молчу, только вот обсуждали…), а для интегрирования ускорения в пройденный путь пошустрей надо работать…

Так я ж схему рассказывал на этой ветке - нужно сравнивать проинтегрированное до пути ускорение с ГНСС. Методичку тоже давал и ещё

rual
rual:

В реале продемонстрировать пока не могу

Уже могу, но нужно “партнера” для сравнения. Граждане одноветочники, поделитесь дфу-файлом самолетной прошивки Арду для F4BY, зашивка через планер зело напрягает (дефицит бубнофф у мну))). Надеюсь, что планер через блюпуп тоже без бубнов зацепится.

oleg70
rual:

Олег, можешь сам проверить

Буду поверять всё однозначно… (только вот раму закончу переделывать после очередной проверки, уже четвертую, наверно… 😃)

rual:

установить мою “виртуалку”

Виртуалка твоя - “тема”…, задумка у меня приблизительно такая же есть - для смелых идей с математикой сделать одновременный реалтайм-вывод на экран (под управлением питона) графиков показаний датчиков /результатов расчета, короче чем больше тем лучше, пока только прикидываю как всё это обустроить… мешает что с питоном пока “на вы”…

rual
oleg70:

задумка у меня приблизительно такая же есть - для смелых идей с математикой сделать одновременный реалтайм-вывод на экран (под управлением питона) графиков показаний датчиков /результатов расчета, короче чем больше тем лучше, пока только прикидываю как всё это обустроить… мешает что с питоном пока “на вы”…

Ну да, его “особость” много доставляет ) Зато когда вникнешь, получишь добротный и гибкий инструмент. Пиши, спрашивай, что смогу отвечу. Кста если сам захочешь к “виртуалке” подключиться, дам код без проблем

SergDoc
rual:

Арду для F4BY, зашивка через планер зело напрягает (дефицит бубнофф у мну))).

в папке планнера есть px4uploader.exe, всё остальное возьми у Алексея )))

rual
SergDoc:

в папке планнера есть px4uploader.exe, всё остальное возьми у Алексея )))

А через кнопки планера не работает?

rual

Зашил трикоптер. Как записать логи на F4BY? Вдруг что интересное будет?

SergDoc

откалибровать и заармить - пойдут логи…

rual:

А через кнопки планера не работает?

я давно не прошивал))) Алексей прислал мне 2.1.5 - версию платы, я решил побыстрому залить - планнер свежий глюканул - залил уплоадером…

SergDoc
rual:

Откуда логи взять? С сд ?

видишь - синий двойным мыргает - преармчек, а пока не заармишь логи не запустятся…

rual
SergDoc:

видишь - синий двойным мыргает - преармчек, а пока не заармишь логи не запустятся…

значится нет логов… Ну собственно и так видно, причём увод тангажа вниз в начале - это видимо результат воздействия тангенциального ускорения раскрутки.

oleg70
rual:

Ну собственно и так видно, причём увод тангажа вниз в начале

Александр, связь стенда с визуализатором через блюпуп ?