Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-67428

QRotationSenor Pitch Readings are wrong

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P2: Important
    • Resolution: Duplicate
    • Affects Version/s: 5.10.1
    • Fix Version/s: None
    • Component/s: Sensors
    • Labels:
      None

      Description

      I filed another bug about this at: https://bugreports.qt.io/browse/QTBUG-66168 which takes the view that it could be better, but that's not correct, Qt has it wrong, at least on android.

      Originally described in commercial support ticket inc-1140300

      I am opening this as new because I can no longer work around this issue. I have urgent need to get this working on Android, where the other issue I mentioned is about providing uniform axis ranges across platforms.

      http://doc.qt.io/qt-5/qrotationreading.html

      [https://developer.android.com/reference/android/hardware/SensorManager.html#getOrientation(float[],%20float[])]

       
      Converting from real terms to the Qt axis:

      Measurement Axis Android Range Qt Range Qt-And Disposition IOS Qt-IOS Disposition
      Pitch -pi - pi -90 - 90 Differ -pi/2 - pi/2 Agree*
      Roll Y -pi/2 - pi/2 -180 - 180 Differ -pi - pi Agree
      Azimuth Z -pi - pi -180 - 180 Agree -pi - pi Agree
      • the iOS method does not accurately indicate angle, as I am complaining about, and this is recognized as a short coming of the API. The advice is to "look at Z" and it's sign will indicate if it's pointing up or down.

      As I've described in several places, the pitch sensor is wrong because it reads -theta as theta, that is, as shown in the attached ADV images, Qt reports pitch as the same value, when they are actually different. As a result I cannot tell if the phone is pointed at the ground or the sky.
      The range reported for pitch needs to be -180 to 180, not -90 to 90.

      The successful test case is when the Qt reading match the AVD readings.

      Given anything at all, that's the wrong thing to do. If Qt wants to provide platform- independent readings, then Qt needs to use -180 to 180 for all axis, or only provide what is coming from the device, but not map Android axis ranges to iOS's.

        Attachments

          Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            Activity

              People

              • Assignee:
                lpotter Lorn Potter
                Reporter:
                scorp1us Jason Hihn
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Gerrit Reviews

                  There are no open Gerrit changes