реальной жизни дело (помогает понять вопрос)
Я строю устройство, которое может свободно вращаться вокруг всей своей оси (х, у, г) и оснащен:Как использовать матрицу для поворота системы отсчета вектора относительно другого?
- с акселерометром (а), что дает мне вектор, направленный к центру Земли (Va)
- 3D-магнитометр (М), что дает мне направление магнитного поля Земли (Vm)
Два вектора имеют одну и ту же систему отсчета (x, y, z), но мне интересно найти вектор, который указывает на север относительно поверхности Земли. [подумайте о ручном компасе: Я хочу найти, где должна указывать стрелка].
This video показывает «шаровой компас», который имеет почти такое же поведение, что и мое устройство, которое должно копироваться электронным способом.
вопрос кодирования
Я сделал несколько исследований, и мне кажется, что я должен использовать это 3D rotation matrices делает следующие два шага:
- вращающих эталонную систему Vm от R до R ', таким образом, что y' будет параллельна Va,
- «сгладить» вектор Vm, установив его компонент y 'на 0
К несчастью, я до сих пор смущен тем, как я должен идти конкретными терминами (у меня нет опыта работы с векторами и матрицами). Одна из вещей, которая меня смущает, заключается в том, что большая часть материала, который я мог бы использовать в Google, говорит в терминах углов, но данные, которые я получаю от обоих датчиков, находятся в форме V (Vx, Vy, Vz), где Vz, Vy и Vz являются компонентами V вдоль системы отсчета.
Итак, мой вопрос действительно сводится к следующему: Что такое матрица, которую я должен использовать для выполнения преобразования, которое на шаге 1?
Благодарим вас за ваше время и знания.
Опять же: первый таймер в мире векторов, здесь, так исправьте меня, если я ошибаюсь ... но не будет ли этот метод давать противоположные результаты (с точки зрения вектора) в соответствии с углом между Va и Vm, являющимся по часовой стрелке или против часовой стрелки? Если я представляю себе в виду два разных Va, которые симметричны относительно Vm, я придумываю два противоположных результата для того, что должен быть Ve .... или я ошибаюсь в этом? – mac
@mac вы получите противоположное Ve, но вы также просто изменили, какое направление вверх (-Va), и поэтому они не должны указывать в том же направлении. Я думаю, что это получается непротиворечивым. – cobbal
Трудно объяснить без изображений, но я не думал об изменении знака Va: я представил себе, что мои три вектора Va, Vm и Va 'лежат на одной плоскости, и что три из них находятся в той части пространства, где x, y и z все положительные. [Аскейское искусство векторов будет выглядеть так:/| \\]. Не приведет ли это к несогласованным результатам? Если у меня будет время, я сделаю попытку позже сегодня ради этого ... – mac