diff options
author | Constantin Musca <constantin.musca@intel.com> | 2015-11-27 17:00:08 +0200 |
---|---|---|
committer | Constantin Musca <constantin.musca@intel.com> | 2015-12-07 16:33:51 +0200 |
commit | d6572c0c36e5e96c4a40bb6d8728d0fef0adc351 (patch) | |
tree | 079ddc5dafec46df3205dc189346553f93437f3d /peripheral/sensors | |
parent | 748d6cd3dec472369f0de2eab0fff7a1e80d77ab (diff) | |
download | intel-d6572c0c36e5e96c4a40bb6d8728d0fef0adc351.tar.gz |
sensors: correctly scale the accelerometer values
The UPM accelerometers' values are in counts/g. However, the sensors.h
mandates that the values should be in SI units (m/s^2).
Scale the values by multiplying with the gravitational acceleration
constant.
BUG=26009894
Tracked-On: https://jira01.devtools.intel.com/browse/BP-145
Change-Id: If9d4733fd2f70c4c4faebdcd39804f7463fc3eef
Signed-off-by: Constantin Musca <constantin.musca@intel.com>
Diffstat (limited to 'peripheral/sensors')
4 files changed, 13 insertions, 0 deletions
diff --git a/peripheral/sensors/edison_arduino/Sensor.cpp b/peripheral/sensors/edison_arduino/Sensor.cpp index e44ff60..8a93b81 100644 --- a/peripheral/sensors/edison_arduino/Sensor.cpp +++ b/peripheral/sensors/edison_arduino/Sensor.cpp @@ -21,6 +21,8 @@ /* maximum delay: 1000ms */ const int64_t kMaxDelay = 1000000000; +/* Gravitational acceleration constant in m/s^2 */ +const float Sensor::kGravitationalAcceleration = 9.81f; Sensor::Sensor() : acquisitionThread(nullptr), handle(-1), type(-1), delay(kMaxDelay) {} diff --git a/peripheral/sensors/edison_arduino/Sensor.hpp b/peripheral/sensors/edison_arduino/Sensor.hpp index a1c2663..d28a398 100644 --- a/peripheral/sensors/edison_arduino/Sensor.hpp +++ b/peripheral/sensors/edison_arduino/Sensor.hpp @@ -118,6 +118,11 @@ class Sensor { */ int64_t getDelay() { return delay; } + /** + * Gravitational acceleration constant in m/s^2 + */ + static const float kGravitationalAcceleration; + protected: /** diff --git a/peripheral/sensors/edison_arduino/sensors/MMA7660Accelerometer.cpp b/peripheral/sensors/edison_arduino/sensors/MMA7660Accelerometer.cpp index c63ffaa..0947b25 100644 --- a/peripheral/sensors/edison_arduino/sensors/MMA7660Accelerometer.cpp +++ b/peripheral/sensors/edison_arduino/sensors/MMA7660Accelerometer.cpp @@ -45,6 +45,9 @@ MMA7660Accelerometer::~MMA7660Accelerometer() {} int MMA7660Accelerometer::pollEvents(sensors_event_t* data, int count) { getAcceleration(&data->acceleration.x, &data->acceleration.y, &data->acceleration.z); + data->acceleration.x *= Sensor::kGravitationalAcceleration; + data->acceleration.y *= Sensor::kGravitationalAcceleration; + data->acceleration.z *= Sensor::kGravitationalAcceleration; return 1; } diff --git a/peripheral/sensors/edison_arduino/sensors/MPU9150Accelerometer.cpp b/peripheral/sensors/edison_arduino/sensors/MPU9150Accelerometer.cpp index 446de3c..f8ba355 100644 --- a/peripheral/sensors/edison_arduino/sensors/MPU9150Accelerometer.cpp +++ b/peripheral/sensors/edison_arduino/sensors/MPU9150Accelerometer.cpp @@ -47,6 +47,9 @@ MPU9150Accelerometer::~MPU9150Accelerometer() {} int MPU9150Accelerometer::pollEvents(sensors_event_t* data, int count) { update(); getAccelerometer(&data->acceleration.x, &data->acceleration.y, &data->acceleration.z); + data->acceleration.x *= Sensor::kGravitationalAcceleration; + data->acceleration.y *= Sensor::kGravitationalAcceleration; + data->acceleration.z *= Sensor::kGravitationalAcceleration; return 1; } |