2010-09-24 2 views
2

реальной жизни дело (помогает понять вопрос)

Я строю устройство, которое может свободно вращаться вокруг всей своей оси (х, у, г) и оснащен:Как использовать матрицу для поворота системы отсчета вектора относительно другого?

  • с акселерометром (а), что дает мне вектор, направленный к центру Земли (Va)
  • 3D-магнитометр (М), что дает мне направление магнитного поля Земли (Vm)

Два вектора имеют одну и ту же систему отсчета (x, y, z), но мне интересно найти вектор, который указывает на север относительно поверхности Земли. [подумайте о ручном компасе: Я хочу найти, где должна указывать стрелка].

This video показывает «шаровой компас», который имеет почти такое же поведение, что и мое устройство, которое должно копироваться электронным способом.

вопрос кодирования

Я сделал несколько исследований, и мне кажется, что я должен использовать это 3D rotation matrices делает следующие два шага:

  1. вращающих эталонную систему Vm от R до R ', таким образом, что y' будет параллельна Va,
  2. «сгладить» вектор Vm, установив его компонент y 'на 0

К несчастью, я до сих пор смущен тем, как я должен идти конкретными терминами (у меня нет опыта работы с векторами и матрицами). Одна из вещей, которая меня смущает, заключается в том, что большая часть материала, который я мог бы использовать в Google, говорит в терминах углов, но данные, которые я получаю от обоих датчиков, находятся в форме V (Vx, Vy, Vz), где Vz, Vy и Vz являются компонентами V вдоль системы отсчета.

Итак, мой вопрос действительно сводится к следующему: Что такое матрица, которую я должен использовать для выполнения преобразования, которое на шаге 1?

Благодарим вас за ваше время и знания.

ответ

1

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

вы можете найти на восток с V е = V ⨉ V м , а затем на север с V п = V ⨉ V е

(это может на самом деле быть южнее, не продумал свою готовность)

+0

Опять же: первый таймер в мире векторов, здесь, так исправьте меня, если я ошибаюсь ... но не будет ли этот метод давать противоположные результаты (с точки зрения вектора) в соответствии с углом между Va и Vm, являющимся по часовой стрелке или против часовой стрелки? Если я представляю себе в виду два разных Va, которые симметричны относительно Vm, я придумываю два противоположных результата для того, что должен быть Ve .... или я ошибаюсь в этом? – mac

+0

@mac вы получите противоположное Ve, но вы также просто изменили, какое направление вверх (-Va), и поэтому они не должны указывать в том же направлении. Я думаю, что это получается непротиворечивым. – cobbal

+0

Трудно объяснить без изображений, но я не думал об изменении знака Va: я представил себе, что мои три вектора Va, Vm и Va 'лежат на одной плоскости, и что три из них находятся в той части пространства, где x, y и z все положительные. [Аскейское искусство векторов будет выглядеть так:/| \\]. Не приведет ли это к несогласованным результатам? Если у меня будет время, я сделаю попытку позже сегодня ради этого ... – mac

0

Я не совсем уверен, что вы хотите сделать, но я буду считать:

вы начинаете в некоторой точке отсчета, с единичными векторами я = (1,0,0) у = (0,1,0) к = (0,0,1)

Я думаю, вы только заинтересованный в том, чтобы сделать y 'параллельным «a», вы получаете

, так что a будет иметь некоторое значение (x, y, z), и вы захотите найти углы тета и phi, где theta дает угол a смещается от плоскости xz, а phi - смещение от плоскости xy, затем используют вращательные матрицы R_x (theta) и R_z (phi)

Прошу прощения, если это не слишком ясно, но я бы сделать гораздо лучше, объясняя с изображением или двумя

Смежные вопросы