Работа с данными акселерометра Kinect (libfreenect)

Я получаю доступ к Kinect Accelerometer в C++ через http://openframeworks.cc/ и ofxKinect, и у меня возникают некоторые проблемы с определенными углами. Если я наклоню kinect на 90 градусов вниз, я получу nan ценности. Я посмотрел на метод getAccelPitch(), и этот вид имеет смысл, так как asin вернет 0, когда будут значения больше 9.80665, деленные на 10.1/9.80665.

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

Любые советы, советы о том, как я могу это сделать? Есть ли простой способ получить данные для рисования ориентации kinect с 3 линиями (осями).

Я пытаюсь определить ориентации, подобные этим: k1

k2

k3

k4

1 ответ

Проблема в том, что вы используете углы Эйлера (крен, тангаж и рыскание).

Углы Эйлера являются злом, и они портят стабильность вашего приложения, см. Например

Они также не полезны для интерполяции.

Решение состоит в том, чтобы использовать вместо этого матрицы вращения. Учебник по матрицам вращения приведен в

Направление Косинус Матрица ИДУ: Теория

рукопись.

Другие вопросы по тегам