Avoid gyroscope reorientation when moving
Hi all, I am building a VR app that displays a 360° movie over reality in a place. The alignment with reality has to be very accurate.
The app is in free use in a public place, with about 300 uses a day. I have noticed that after a day, the video in the Rift gets desoriented and does not match the reality any more (3~50° variable).
After a bunch of tests, I have noticed in the Rift logs that a large head movement implies an alignment update, thus the desorientation.
Here is a sample of the log where we can see the alignment update :
24/04 12:04:53.022 {INFO} [HW:Health] Visibility: H +... R .... L ....
24/04 12:04:53.175 {INFO} [HW:Health] Visibility: H -... R .... L ....
24/04 12:04:53.252 {INFO} [Tracking:CamCal] Waiting for initial calibration
24/04 12:04:53.327 {INFO} [HW:Health] Visibility: H +... R .... L ....
24/04 12:04:53.348 {INFO} [HW:Health] Visibility: H -... R .... L ....
24/04 12:04:53.367 {INFO} [HW:Health] Visibility: H +... R .... L ....
24/04 12:04:53.579 {INFO} [Tracking:CamCal] EstimatedUpInCamera camera 0, object 0, count 10: tilt 13.66 0.39 (13.67)
24/04 12:04:53.676 {INFO} [Tracking:CamCal] Computed gravity alignment: camera 0:WMTD30335001AZ, tilt: calculated 14.49 1.16 (14.53), filtered 14.49 1.16 (14.53), delta -14.49 -1.16 (14.53), tilt err 0.0287 deg, elapsed 0.177, wasAligned 0
24/04 12:04:53.676 {INFO} [Tracking:CamCal] Unreliable samples: 5 out of 15
24/04 12:04:53.676 {INFO} [Tracking:CamCal] Resetting gravity filter: reliable 1/0, large 0, wasAligned 0, forced 1
24/04 12:04:53.676 {INFO} [Tracking:CamCal] Gravity alignment updated
24/04 12:04:53.676 {INFO} [Tracking:CamCal] DoGravityAlignment cam 0, aligned 0 0
24/04 12:04:53.676 {INFO} [Tracking:CamCal] First camera alignment 0, default 0, 0, 0 (0) / 0.00 (0.00, 0.00, 0.00)
24/04 12:04:53.676 {INFO} [Tracking:CamCal] Gravity Alignment Update, wasAligned 0, wasEstimated 0
24/04 12:04:53.676 {INFO} [Tracking:CamCal] *0: status c1,e0,a1, was c1,e0,a0, pose t 0.0 0.0 0.0 r 14.49 -0.00 1.16 dt 0.0 0.0 0.0 ( 0.0) dr 14.49 -0.00 1.16 (14.53)
24/04 12:04:53.676 {INFO} [Tracking:CamCal] Updating Calibration
24/04 12:04:53.676 {INFO} [Tracking:Stats] OnWorldFromCameraChange: orientation 0.00 0.00 0.00 (0.00), translation 0.0 0.0 0.0 (0.0)
24/04 12:04:53.676 {WARNING} [Tracking:Manager] Sensor moved :WMTD30335001AZ
24/04 12:04:53.676 {INFO} [Tracking:Manager] Sensor Pose : WMTD30335001AZ RelCur [t (0.0, 0.0, 0.0) r (0.00, 0.00, 0.00)] Cur [t (0.0, 0.0, -1000.0) r (-14.49, -0.00, -1.16)] Aligned : 1 Settled : 0
24/04 12:04:53.770 {DEBUG} [Tracking:Filter] HMD: Large change, resetting position filter: 0.015676, 0.10341, -0.16435 (0.19481) / 171.21 (-0.11, 0.99, 0.13), 873.7, 63.5, 0
24/04 12:04:53.770 {INFO} [Tracking:Filter] HMD: tilt -2.3, 0.0, -2.1 (3.1), confidence 0.508, count 1000
24/04 12:04:55.092 {INFO} [HW:Health] Visibility: H -... R .... L ....
24/04 12:05:01.969 {WARNING} [NetworkRequest] Download failed: 6: Could not resolve host: graph.oculus.com
24/04 12:05:01.969 {!ERROR!} [OAF ERROR] ..\..\..\Network\SimpleHttpRequest.cpp(119) : Request Heartbeat Tick FAILED: 6: Could not resolve host: graph.oculus.com (1971012)
24/04 12:05:01.969 {!ERROR!} [Heartbeater] Heartbeat tick network request failed with error: OVR53225466
24/04 12:05:02.541 {INFO} [Tracking:Stats] Average number of cameras used for poses: 1.0 0.0 0.0
Do you know how I can avoid this reorientation ? Using Unity, can we set the local rotation of the sensor to a given value ? Is there another way to proceed ?
Thanks !
