Работа с данными акселерометра 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 линиями (осями).
Я пытаюсь определить ориентации, подобные этим:
1 ответ
Проблема в том, что вы используете углы Эйлера (крен, тангаж и рыскание).
Углы Эйлера являются злом, и они портят стабильность вашего приложения, см. Например
Они также не полезны для интерполяции.
Решение состоит в том, чтобы использовать вместо этого матрицы вращения. Учебник по матрицам вращения приведен в
Направление Косинус Матрица ИДУ: Теория
рукопись.