Convert between sensor framework and head tracking frames

We use different frame conventions in the head tracking library and we
forgot to do the conversion.

Test: Manual inspection of logs while running head tracking.
Bug: 188502620
Change-Id: Icc750d581bbe269c81a2972b4fe2e11cde040ddf
diff --git a/media/libheadtracking/SensorPoseProvider.cpp b/media/libheadtracking/SensorPoseProvider.cpp
index da1d8cb..cfa23d0 100644
--- a/media/libheadtracking/SensorPoseProvider.cpp
+++ b/media/libheadtracking/SensorPoseProvider.cpp
@@ -21,13 +21,14 @@
 #include <inttypes.h>
 
 #include <future>
-#include <iostream>
 #include <map>
 #include <thread>
 
 #include <android/looper.h>
 #include <log/log_main.h>
 
+#include "QuaternionUtil.h"
+
 namespace android {
 namespace media {
 namespace {
@@ -217,6 +218,8 @@
             case ASENSOR_TYPE_ROTATION_VECTOR:
             case ASENSOR_TYPE_GAME_ROTATION_VECTOR: {
                 Eigen::Quaternionf quat(event.data[3], event.data[0], event.data[1], event.data[2]);
+                // Adapt to different frame convention.
+                quat *= rotateX(-M_PI_2);
                 return std::make_tuple(Pose3f(quat), std::optional<Twist3f>());
             }