Реальный случай (помогает понять вопрос)
Я создаю устройство, которое может свободно вращаться вокруг своей оси (x, y, z) и оснащено:
- акселерометр (A), который дает мне вектор, указывающий на центр Земли (Va)
- 3D магнитометр (М), который дает мне направление магнитного поля Земли (Вм)
Два вектора используют одну и ту же систему отсчета (x, y, z), но мне интересно найти вектор, указывающий на север относительно поверхности Земли [представьте себе руку компас: я хочу найти, куда должна указывать стрелка].
В этом видео показан «шариковый компас», который работает почти так же, как и мое устройство, которое должно воспроизводиться электронным способом.
Кодовый вопрос
Я провел небольшое исследование, и мне кажется, что я должен использовать 3D матрицы вращения , выполнив следующие два шага:
- поверните систему отсчета Vm от R до R ' таким образом, чтобы y' была параллельна Va,
- "сгладить" вектор Vm , установив для его компонента y значение 0
К сожалению, я все еще не понимаю, как мне действовать в конкретных терминах (у меня нет предыдущего опыта работы с векторами и матрицами). Одна из вещей, которая меня смущает, это то, что большая часть материала, который я мог найти в Google, говорит с точки зрения углов, но данные, которые я получаю от обоих датчиков, имеют форму V (Vx, Vy, Vz) где Vz, Vy и Vz являются компонентами V вдоль системы отсчета.
Так что мой вопрос действительно сводится к: Какую матрицу я должен использовать для преобразования которой на шаге 1?
Заранее благодарим вас за ваше время и знания.