krux 9 April 26, 2018 Posted April 26, 2018 · Report post энкодеры на оси приделайте Quote Share this post Link to post Share on other sites More sharing options...
alexPec 6 April 26, 2018 Posted April 26, 2018 · Report post Вы возьмете вектор [cos(a-va),sin(a-va),0], где а - референсный курс, а va - курс по результатам интегрирования, то это будет вектор ошибки по курсу в звездной системе координат. Преобразовав этот вектор в систему координат IMU как раз и получатся ошибки по каждой из осей. Дальше PI-регулятор и добавка к данным с гироскопа. Все. Хорошо, рефренсный курс равен 0, va - курс по результатам интегрирования. Но повторюсь, если бы механика лежала на столе, это бы сработало, но сама механика на корабле тоже вращается, поэтому курс по результатам интегрирования - это сумма: поворот корабля + уплывание гироскопа. Как отсюда выделить уплывание чтобы вычислить собственно разницу между курсом механики и курсом по результатам интегрирования? энкодеры на оси приделайте Так они есть, что это дает? Quote Share this post Link to post Share on other sites More sharing options...
Rst7 5 April 26, 2018 Posted April 26, 2018 · Report post Как отсюда выделить уплывание чтобы вычислить собственно разницу между курсом механики и курсом по результатам интегрирования? Да не надо ничего выделять. Оно просто будет всегда в нулевой курс утягивать. Это тоже самое, что просто с занулением данных гироскопа, но более культурно (меньше ошибка, если одновременно с креном происходит поворот по курсу). А рамка никуда у Вас не повернется. Углы Эйлера по крену и дифференту не зависят от курса, так что просто поворачиваете рамку на обратные углы и все. Quote Share this post Link to post Share on other sites More sharing options...
alexPec 6 April 27, 2018 Posted April 27, 2018 · Report post Да не надо ничего выделять. Оно просто будет всегда в нулевой курс утягивать. Это тоже самое, что просто с занулением данных гироскопа, но более культурно (меньше ошибка, если одновременно с креном происходит поворот по курсу). А рамка никуда у Вас не повернется. Углы Эйлера по крену и дифференту не зависят от курса, так что просто поворачиваете рамку на обратные углы и все. Да, спасибо! Действительно если утягивать в нулевой курс проблема с рассинхронизацией вроде должна решиться. Все оказывается просто... Проверю на реальной железке. Quote Share this post Link to post Share on other sites More sharing options...
Prizrak_Kommunizma 0 October 21, 2021 Posted October 21, 2021 · Report post Чтобы не плодить новые темы, напишу тут. Я работаю уже продолжительное время с датчиком BNO055, реализую получение информации об абсолютной ориентации изделия на карте. У него есть возможность выдавать на выход кватернионы и углы Эйлера. Все пишут везде, что с углами Эйлера могут быть проблемы из-за эффекта "складывания рамок" и от того, что углы Эйлера зависят от выбора очерёдности поворота по углам. Мне с этим не всё ясно, не могу понять следующее: 1. Актуальна ли проблема Gimbal Lock (Складывание рамок) для MEMS гироскопов? Там же другая конструкция и рамок по сути нет. 2. Если ответ на 1 вопрос - да, то могу ли я надеяться, что Bosh уже решили эту проблему за меня внутри своего датчика с помощью данных магнетометра и акселерометра? Находил патенты, что такие алгоритмы есть, но разбираться в формулах нет времени, нужно делать изделие. Сам Bosh почему-то об этом в ДШ молчит. 3. Почему углы Эйлера это такая проблема, если можно узнать заранее в какой последовательности датчик и записывает и воспроизводить так же? Мы же не рандомно каждый раз их применяем, а по алгоритму. Почему обязателен переход на кватернионы? Quote Share this post Link to post Share on other sites More sharing options...
alexPec 6 October 22, 2021 Posted October 22, 2021 · Report post 21.10.2021 в 16:17, Prizrak_Kommunizma сказал: 1. Актуальна ли проблема Gimbal Lock (Складывание рамок) для MEMS гироскопов? Там же другая конструкция и рамок по сути нет. 2. Если ответ на 1 вопрос - да, то могу ли я надеяться, что Bosh уже решили эту проблему за меня внутри своего датчика с помощью данных магнетометра и акселерометра? Находил патенты, что такие алгоритмы есть, но разбираться в формулах нет времени, нужно делать изделие. Сам Bosh почему-то об этом в ДШ молчит. 3. Почему углы Эйлера это такая проблема, если можно узнать заранее в какой последовательности датчик и записывает и воспроизводить так же? Мы же не рандомно каждый раз их применяем, а по алгоритму. Почему обязателен переход на кватернионы? 1. Актуальна. Это не проблема конкретных датчиков, а математическая проблема при использовании математики углов Эйлера. Если вы свое устройство повернете на неправильные углы, то и возникнет проблема складывания рамок - у вас 2 угла эйлера будут принимать одинаковые значения (это конечно так, в общем и целом). 2. Будет видно из того как их вычисляют (сам не смотрел, лень). А с математикой все равно придется разобраться, если хотите точно знать как будет вести себя ваше устройство. 3. Тот же ответ что и п.1. Quote Share this post Link to post Share on other sites More sharing options...
Prizrak_Kommunizma 0 November 1, 2021 Posted November 1, 2021 (edited) · Report post 1, А если моя цель просто показывать юзеру текущие углы крена, рысканья и тангажа без необходимости воспроизводить по ним положение датчика на компе или где-то ещё, то проблема сохраняется? Или она только при воспроизведении и пересчёте координат будет возникать? Edited November 1, 2021 by Prizrak_Kommunizma Quote Share this post Link to post Share on other sites More sharing options...
amaora 40 December 27, 2021 Posted December 27, 2021 · Report post On 11/1/2021 at 2:48 PM, Prizrak_Kommunizma said: 1, А если моя цель просто показывать юзеру текущие углы крена, рысканья и тангажа без необходимости воспроизводить по ним положение датчика на компе или где-то ещё, то проблема сохраняется? Или она только при воспроизведении и пересчёте координат будет возникать? Проблема складывания рамок только тогда когда эти рамки физически существуют. Значения углов могут меняться сколько угодно быстро в окрестности сингулярной точки (тангаж ±90°) и по отдельности не отражать угловой скорости датчика. То есть если медленно провернуть ось X вокруг оси Y, то в нижней/верхней точке два других угла "мгновенно" сменят значения на 180°. Конкретные оси и углы могут меняться, в зависимости от принятых систем координат и последовательности поворотов. Quote Share this post Link to post Share on other sites More sharing options...
trojninalex 0 December 25, 2024 Posted December 25, 2024 · Report post Добрый день. Продолжу тему. Столкнулся с проблемой складывания рамок на IMU датчике BNO055. Считываю квантерионы с датчика и перевожу в углы Эйлера, на что получаю следующий результат: 1. На рисунке 1 датчик в изначальном положении. 2. На рисунке 2 датчик поворачиваю на 90 градусов относительно оси roll, проблем не возникает. 3. На рисунке 3 датчик поворачиваю на 90 градусов относительно оси pitch, после 60 градусов roll начинает увеличиваться. При этом pitch не увеличивается больше 89 градусов, а уменьшается, место него увеличивается roll. Не вполне понимаю от куда начинать искать решение проблемы. Квантерионы вроде должны решать проблему складывания рамок. Quote Share this post Link to post Share on other sites More sharing options...
Палыч 21 December 25, 2024 Posted December 25, 2024 · Report post 5 часов назад, trojninalex сказал: Не вполне понимаю от куда начинать искать решение проблемы. Квантерионы вроде должны решать проблему складывания рамок. Они (кватернионы) успешно эту проблему решают: при любом положении рамок будет существовать соответствующий кватернион, а, вот, с углами Эйлера такое не прокатит. Quote Share this post Link to post Share on other sites More sharing options...
trojninalex 0 December 25, 2024 Posted December 25, 2024 · Report post 30 минут назад, Палыч сказал: Они (кватернионы) успешно эту проблему решают: при любом положении рамок будет существовать соответствующий кватернион, а, вот, с углами Эйлера такое не прокатит. Да, но углы у меня расчитываются как раз по кватерионам. Не вполне понимаю почему, но кватерионы из датчика идут с этой проблемой Quote Share this post Link to post Share on other sites More sharing options...
amaora 40 December 25, 2024 Posted December 25, 2024 · Report post Если найдете точное определение углов Эйлера, от чего до чего измеряется угол и в каком диапазоне, то полагаю сможете проверить, что никакой проблемы нет и углы рассчитаны правильно. Quote Share this post Link to post Share on other sites More sharing options...
Aner 15 December 25, 2024 Posted December 25, 2024 · Report post .. кватерионы из датчика? Это как? Их посчитать процем нужно, беря данные из датчика. Вы хоть почитали даташит на этот BNO055? Где там написано что он выдаёт кватернионы? Читаем тогда про Меджевика. Quote Share this post Link to post Share on other sites More sharing options...
dOb 10 December 26, 2024 Posted December 26, 2024 · Report post В кватернионе X^2+Y^2+Z^2+W^2 должно быть =1. У вас не сходится. Наверное что то с ценой деления напутали. Перечитайте внимательно документацию. Quote Share this post Link to post Share on other sites More sharing options...
trojninalex 0 December 26, 2024 Posted December 26, 2024 · Report post 10 часов назад, Aner сказал: .. кватерионы из датчика? Это как? Их посчитать процем нужно, беря данные из датчика. Вы хоть почитали даташит на этот BNO055? Где там написано что он выдаёт кватернионы? Читаем тогда про Меджевика. Пункт 3.6.5.5 Orientation (Quaternion) так-же 4.3.33-4.3.40 12 часов назад, amaora сказал: Если найдете точное определение углов Эйлера, от чего до чего измеряется угол и в каком диапазоне, то полагаю сможете проверить, что никакой проблемы нет и углы рассчитаны правильно. Кстати да не обратил внимание, в пункте 3.6.2 Data output format указано что pitch -180..180 roll -90..90 и yaw 0..360. 23 минуты назад, dOb сказал: В кватернионе X^2+Y^2+Z^2+W^2 должно быть =1. У вас не сходится. Наверное что то с ценой деления напутали. Перечитайте внимательно документацию. Перепроверю Quote Share this post Link to post Share on other sites More sharing options...