Угол голени от кватерниона на плоскости, углы Эйлера - PullRequest
0 голосов
/ 11 января 2019

Я пришел к тому, что получил углы голени от ИДУ. Датчик дает мне кватернионы, а также углы Эйлера (заказ XYZ). Мне нужно знать на основе плоскости отсчета угол Z на плоскости XZ (Направление z вверх)

Мой протокол состоит в том, чтобы заставить человека стоять и получить калиброванный кватернион из этого положения, а затем, когда человек ходит, мне все еще нужно знать этот угол, как если бы датчик все еще располагал эту плоскость.

Я пришел к интересной статье , которая точно объясняет мою проблему и применение к уравнению 6.

Для моего понимания мне нужно получить матрицу DCM из каждого кватерниона измерения, а затем применить вектор направленной единицы из углов Эйлера во время калибровки и применить к этой матрице, а затем применить atan деления компонента X и Z результата этого умножения.

Исходя из этого, мои шаги:

1 - Получить калиброванный кватернион Q1 и вычислить вектор направления моих углов Эйлера. 2 - В качестве меры датчика я беру матрицу направленного косинуса Q1 и применяю к калиброванному вектору направления мое преобразование координат 3 - вычислить Atan компонентов X и Z этого вектора направления в системе координат датчика.

Однако я получаю разные результаты, и я не понимаю, что на самом деле делает это уравнение.

1 Ответ

0 голосов
/ 18 января 2019

Вы ищете не угол закручивания, а единичные векторы в системе координат кватерниона.

  1. Возьмите откалиброванный крен, шаг и рыскание и сохраните его как единичный вектор (учтите, что существует 12 способов сделать это преобразование, и вы можете посмотреть на эту ссылку ). Если вы говорите, что это XYZ, то получите:

    • Mx [0,0] = Уютно * Cosz;
    • Mx [0,1] = -Cosy * Sinz;
    • Mx [0,2] = синус;
    • Mx [1,0] = Cosz * Sinx * Siny + Cosx * Sinz;
    • Mx [1,1] = Cosx * Cosz - Sinx * Siny * Sinz;
    • Mx [1,2] = -Cosy * Sinx;
    • Mx [2,0] = -Cosx * Cosz * Siny + Sinx * Sinz;
    • Mx [2,1] = Cosz * Sinx + Cosx * Siny * Sinz;
    • Mx [2,2] = Cosx * Cosy;
  2. Преобразовать каждый кватернион того же датчика в матрицу DCM

  3. Умножить вектор направления на каждую матрицу DCM
  4. Теперь у вас есть единичный вектор во всех направлениях. Чтобы получить углы, вы можете получить Acos для точечного произведения этих векторов или рассчитать Atan (Dcmx / Dcmx) как бумагу, которую вы разделили
...