Преобразование угловых скоростей в ориентацию Wii Motionplus - PullRequest
0 голосов
/ 02 декабря 2010

Я работаю над Wii Motionplus и извлек необработанные значения с помощью библиотеки WiimoteLib.Однако, когда я нормализую его, я получаю случайные значения, которые не соответствуют тому, что на самом деле происходит.

Вот как я нормализую:

  1. Откалибруйте Motionplus (т. Е. Найдите необработанное значение, соответствующее нулю; я делаю это, удерживая его неподвижно для точкивремени)

  2. Для каждого последующего чтения необработанного значения я вычитаю из него нулевое значение, чтобы получить «относительное» необработанное значение.

  3. Затем я масштабирую это значение, используя http://wiibrew.org/wiki/Wiimote/Extension_Controllers (проверяя yaw_fast, pitch_fast и т. Д.), Где числовые значения вычисляются с использованием меры (необработанное значение 8192 соответствует 595 град / с)

  4. Я суммирую все эти значения с течением времени (дискретное интегрирование), чтобы получить угол обзора относительно начальной ориентации.

Однако, когда я вычисляю это и строю его на графике, изменение шага по одной из осей НЕ отражается на графике.Я попытался использовать цифровой компас с ним для сравнения, но хотя компас правильно отображает значения, значения wii совершенно разные (даже шаблон не тот)

Может кто-нибудь сказать мне, куда я идуне так с нормализацией?

Спасибо!

1 Ответ

1 голос
/ 03 июня 2011

Числа, которые отправляются, представляют собой повороты вокруг оси xy и z, соответствующие самой себе.Чтобы связать это с координатами x, y, z, вам нужно будет использовать матрицу вращения, и поскольку показания вращения не являются фиксированной осью, а зависят от того, в какой ориентации вы находитесь, вам нужно использовать матрицу Эйлера, чтобы связать это сфиксированная координата x, y, z

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

ROLL - вращение вокруг оси y

PITCH - вращение вокруг оси x

YAW - вращение вокруг оси z

...