summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaadi Maalem <saadi.maalem@intel.com>2015-10-16 21:12:30 +0200
committerZhengyin Qian <qianzy@google.com>2015-10-16 16:37:42 -0700
commit7a7aa43b0166a2782fe3a4b5ce584e18d8057cbf (patch)
treebc86bf91805a69d16feb156892423dcfce0f98f1
parentf4cc1330d9a643d9624e2dfd9b4aa9eee31dc95c (diff)
downloadsensors-7a7aa43b0166a2782fe3a4b5ce584e18d8057cbf.tar.gz
sensor: scaling gyro data for better accuracy
As a workaround fixing the issue that lsm6ds3 sensor chip measured angle less than real rotated angle. Change-Id: I3625511628c7dc1359c7d14dcf619637c8b807b6 Tracked-On: https://jira.ndg.intel.com/browse/MARVIN-925 Signed-off-by: Fei Li <feix.f.li@intel.com>
-rw-r--r--libsensors_iio/src/Gyroscope.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/libsensors_iio/src/Gyroscope.cpp b/libsensors_iio/src/Gyroscope.cpp
index 20ab7b8..55011bc 100644
--- a/libsensors_iio/src/Gyroscope.cpp
+++ b/libsensors_iio/src/Gyroscope.cpp
@@ -88,6 +88,10 @@ int Gyroscope::SetDelay(int handle, int64_t period_ns, int64_t timeout)
void Gyroscope::ProcessData(SensorBaseData *data)
{
+#define X_SCALING_FACTOR 1
+#define Y_SCALING_FACTOR (360 / 350)
+#define Z_SCALING_FACTOR 1
+
float tmp_raw_data[num_data_axis];
#ifdef CONFIG_ST_HAL_GYRO_GBIAS_ESTIMATION_ENABLED
int64_t time_diff = 0;
@@ -131,9 +135,10 @@ void Gyroscope::ProcessData(SensorBaseData *data)
data->processed[1] = data->raw[1] - data->offset[1];
data->processed[2] = data->raw[2] - data->offset[2];
- sensor_event.gyro.x = data->processed[0];
- sensor_event.gyro.y = data->processed[1];
- sensor_event.gyro.z = data->processed[2];
+ /* FIXME: scaling gyro data for better accuracy */
+ sensor_event.gyro.x = data->processed[0] * X_SCALING_FACTOR;
+ sensor_event.gyro.y = data->processed[1] * Y_SCALING_FACTOR;
+ sensor_event.gyro.z = data->processed[2] * Z_SCALING_FACTOR;
sensor_event.timestamp = data->timestamp;
HWSensorBaseWithPollrate::WriteDataToPipe();