In the Android 4.3, there are new sensors that are type_gyroscope_uncalibrated, magnetic_field_uncalibrated, game_rotation_vector, significant_motion.
I wonder what is different between type_gyroscope and type_gyroscope_uncalibrated. (I can understand type_magnetic_field_uncalibrated and hardiron error.)
First, Type_gyroscope can return angular speed with rad/sec. It is raw data! If I use these values for angle, I must integrate a values[0], [1], [2]. Then, Integrated values(angle) has some drift error.
Second, Type_gyroscope_uncalibrated can return angular speed with rad/sec and drift bias values. In the API(developers.android.com), google said that values of the type_gyroscope_uncalibrated means that uncalibrated values*(they said it is also raw data..)*.
Question 1. Then, values of the type_gyroscope are calibrated angular speed? And what is the reference for calibration? There is no integration(because it just angular speed)!
So, I think that drift bias(in the type_gyroscope_uncalibrated) means not integration drift error. And if it is true, there is the reference for calibration that is magnetic(or acceleration) values. Type_gyroscope can refer to the reference data, and can calibrate. Values of Type_gyroscope_uncalibrated have no reference data(It is just raw data).
Question 2. Is it right? If right, the word 'drift compensation' of API Guide must be correct.
Gyroscope calibration offers an option for bridging this gap, enabling the use of an approach that may be more favorable due to price, pack- age style, power dissipation, or other attributes. The purpose of calibration is to translate transducer behaviors into valuable bits at the system level.
Gyro sensors, also known as angular rate sensors or angular velocity sensors, are devices that sense angular velocity. In simple terms, angular velocity is the change in rotational angle per unit of time. Angular velocity is generally expressed in deg/s (degrees per second).
The main functions of the Gyroscope Sensor for all the applications are Angular velocity sensing, angle sensing, and control mechanisms.
The normal gyroscope sensors can be dynamically calibrated to get rid of the constant bias in the reading. Most developers can use the normal gyroscope directly, but advanced users who want to fuse the data (using kalman filters for example) might want to perform the dynamic calibration themselves. In this case, they can use the uncalibrated sensor, which reports values[0,1,2] = uncal_x|y|z and values[3,4,5] = biased_estimate_x|y|z Similarly for the uncalibrated magnetometer. You're most likely interested in the normal magnetometer.
You can find more info about those sensors here: http://source.android.com/devices/sensors/composite_sensors.html#Uncalibrated http://developer.android.com/reference/android/hardware/SensorEvent.html#values
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With