deviceorientation calibration

I've been investigating the calibration of deviceorientation events [1] 
in a number of different mobile user agents. To accomplish this, I 
devised a simple test, split in to three well-defined reference planes, 
that can be used to benchmark the orientation data returned by any user 
agent implementing this specification. The details of this test are 
included below.

Currently each user agent I've tested (though the list of UAs tested is 
by no means complete) is returning differing and conflicting 
deviceorientation values for alpha, beta and gamma as they travel 
through the points defined in each of the reference planes defined 
herein. I believe this is making it impossible for developers to build 
mobile web apps that require consistent and well-known 3-axis device 
orientation data irrespective to which user agent is being used.

The starting question here is: what is the correct, normative device 
orientation calibration to use in the three reference planes provided 
below? IIUC the specification does not yet provide enough information to 
answer this question and so I'd like to propose the following changes.

The specification should be updated to include the three reference 
planes provided herein along with the reference photographs provided of 
the expected device orientation in Euclidean space (i.e. my desk :). The 
spec should then also include three radar charts [2] describing the 
normative orientation values expected as a device moves around the 
points in each of the defined reference planes (along the lines of the 
test result diagrams shown below).

It may also be of interest to incorporate these tests in to a manual 
calibration test suite for this specification to avoid this issue 
recurring in future implementations. Alternatively, I've implemented a 
3-dimensional compass [3] utilising all 3-axis of deviceorientation that 
could be used to visually evaluate the calibration of the alpha, beta 
and gamma values provided by deviceorientation events. Currently [3] is 
implemented according to the deviceorientation calibration provided in 
Opera Mobile 12. The compass will be updated to use any normative 
calibration that comes out of this discussion (+ have fallback to 2d 
canvas for browsers that do not yet render WebGL content).

Does anyone have any preference/evidence for any of the calibrations 
tested below to adopt a normative calibration?

Many thanks,

Rich

[1] http://dev.w3.org/geo/api/spec-source-orientation.html

[2] http://en.wikipedia.org/wiki/Radar_chart

[3] https://github.com/richtr/Marine-Compass

******
******

If text-spacing is incorrect below you can read this message with the 
original fixed-width formatting intact @

http://lists.w3.org/Archives/Public/public-geolocation/2012Jun/0000.html

******
******

A simple test page has been created to simply display the raw alpha, 
beta and gamma values provided by the current user agent. This page is 
available at:

http://people.opera.com/richt/release/tests/orientation/compare.html

This page is used to manually obtain the orientation values as the 
device travels around each reference plane documented below.

Note: All Android-based test results shown below were obtained from a 
HTC One X running Android 4.0. All iOS-based test results were obtained 
from an Apple iPad running iOS 5.1.


deviceorientation calibration: alpha
------------------------------------
------------------------------------

Reference Plane
----------------

Alpha:

            North [A1]
            (deg)
              |
              |
West [A4] ---|--- East [A2]
(deg)        |    (deg)
              |
            South [A3]
            (deg)

Reference photos:

[A1] 
http://people.opera.com/richt/release/tests/orientation/calibration/alpha_A1.jpg 
(pointing due north)

[A2] 
http://people.opera.com/richt/release/tests/orientation/calibration/alpha_A2.jpg 
(pointing due east)

[A3] 
http://people.opera.com/richt/release/tests/orientation/calibration/alpha_A3.jpg 
(pointing due south)

[A4] 
http://people.opera.com/richt/release/tests/orientation/calibration/alpha_A4.jpg 
(pointing due west)


Q: What are the normative expected values for each of the points defined 
in the reference plane above?


Browser for Android,
Chrome Beta for Android
-----------------------

Alpha:

        270
         |
360   / | \
     ----|---- 180
   0   \ | /
         |
        90

Firefox Mobile for Android
--------------------------

Alpha:

     360   0
         |
       / | \
270 ----|---- 90
       \ | /
         |
        180

Opera Mobile 12 for Android
---------------------------

Alpha:

       0   360
         |
       / | \
  90 ----|---- 270
       \ | /
         |
        180

Safari for iOS
--------------

Alpha:

        90
         |
       / | \   0
180 ----|----
       \ | /   360
         |
        270


deviceorientation calibration: beta
------------------------------------
------------------------------------

Reference Plane
----------------

Beta:

               Horizontal [B1]
               (Face Up)
                   |
                   |
Vertical [B4]  ---|--- Vertical [B2]
(Face             |    (Face
Backward          |     Forward)
+ Upside      Horizontal [B3]
Down)         (Face Down)

[B1] 
http://people.opera.com/richt/release/tests/orientation/calibration/beta_B1.jpg

[B2] 
http://people.opera.com/richt/release/tests/orientation/calibration/beta_B2.jpg

[B3] 
http://people.opera.com/richt/release/tests/orientation/calibration/beta_B3.jpg

[B4] 
http://people.opera.com/richt/release/tests/orientation/calibration/beta_B4.jpg


Q: What are the normative expected values for each of the points defined 
in the reference plane above?


Browser for Android,
Chrome Beta for Android
-----------------------

Beta:

         0
         |
         |
-90 ----|---- 90
         |
         |
         0

Firefox Mobile for Android
--------------------------

Beta:

         0
         |
       / | \
-90 ----|---- 90
       \ | /
         |
    -180   180

Opera Mobile 12 for Android
---------------------------

Beta:

         0
         |
       / | \
-90 ----|---- 90
       \ | /
         |
    -180   180

Safari for iOS
--------------

Beta:

         0
         |
       / | \
-90 ----|---- 90
       \ | /
         |
         0


deviceorientation calibration: gamma
------------------------------------
------------------------------------

Reference Plane
----------------

Gamma:

To start, we must rotate the device 90 degrees clockwise as it sits on a 
table.

                Horizontal [G1]
                (Face Up)
                   |
                   |
Vertical [G4]  ---|--- Vertical [G2]
(Face             |    (Face
Backward          |     Forward)
+ Upside       Horizontal [G3]
Down)          (Face Down)


[G1] 
http://people.opera.com/richt/release/tests/orientation/calibration/gamma_G1.jpg

[G2] 
http://people.opera.com/richt/release/tests/orientation/calibration/gamma_G2.jpg

[G3] 
http://people.opera.com/richt/release/tests/orientation/calibration/gamma_G3.jpg

[G4] 
http://people.opera.com/richt/release/tests/orientation/calibration/gamma_G4.jpg


Q: What are the normative expected values for each of the points defined 
in the reference plane above?


Browser for Android,
Chrome Beta for Android
-----------------------

Gamma:

         0
         |
-90   / | \
     ----|---- 90
270   \ | /
         |
        180

Firefox Mobile for Android
--------------------------

Gamma:

         0
         |
       / | \
-90 ----|---- 90
       \ | /
         |
         0


Opera Mobile 12 for Android
---------------------------

Gamma:

         0
         |
       / | \
-90 ----|---- 90
       \ | /
         |
         0

Safari for iOS
--------------

Gamma:

         0
         |
       / | \
-90 ----|---- 90
       \ | /
         |
    -180   180

Received on Monday, 25 June 2012 10:09:00 UTC