I'm looking to implement a robot that is navigating indoor, using a software running on an android device. One mandatory feature is to know the robot orientation in "real time".
I have one major constraint : the android device should be placed with a screen on the gravity axe (that means : vertical, like for taking pictures with the camera on the device)
This prevents me from using azimut which is the most common measure to get a reference angle. It makes no sense to use :
SensorManager.getRotationMatrixFromVector(mRotationMatrixFromVector, event.values);
then
SensorManager.getOrientation(mRotationMatrix, orientation);
since orientation[0] supposed to provide azimut is inconsistent.
I was searching for longtime now, but I didn't find any acceptable solution over here.
An "acceptable solution" is to have a system response within 100ms and with a precision close to 5°. The reference is not necessarily the magnetic North, but it must be stable over the time. It can be a starting position (but there are some drift issues...)
Are there any sensors of other type than TYPE_ROTATION_VECTOR more situable for this use ? I was trying with TYPE_GYROSCOPE but with poor results...
My android device is the Google Tango tablet.
Thanks for any help