diff options
author | Keith Packard <keithp@keithp.com> | 2013-12-20 19:37:08 -0800 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2013-12-20 19:37:08 -0800 |
commit | 91bcfae2e64ecb2e7de1292b264910382b635aea (patch) | |
tree | ec54fbfec63ffa3f5744b4530c8d23f2d9724048 /altoslib/AltosIMU.java | |
parent | 2ad31bad20b20615e9d8b29088e2488fddc81ac9 (diff) |
altoslib: Convert IMU and Mag sensor values to useful units
Convert from raw sensor values to metric units
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib/AltosIMU.java')
-rw-r--r-- | altoslib/AltosIMU.java | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/altoslib/AltosIMU.java b/altoslib/AltosIMU.java index 6d88ccae..e6e70401 100644 --- a/altoslib/AltosIMU.java +++ b/altoslib/AltosIMU.java @@ -20,13 +20,25 @@ package org.altusmetrum.altoslib_2; import java.util.concurrent.*; public class AltosIMU implements Cloneable { - public int accel_x; - public int accel_y; - public int accel_z; + public double accel_x; + public double accel_y; + public double accel_z; - public int gyro_x; - public int gyro_y; - public int gyro_z; + public double gyro_x; + public double gyro_y; + public double gyro_z; + + public static int counts_per_g = 2048; + + public static double convert_accel(int counts) { + return (double) counts / (double) counts_per_g * (-AltosConvert.GRAVITATIONAL_ACCELERATION); + } + + public static double counts_per_degsec = 16.4; + + public static double convert_gyro(int counts) { + return (double) counts / counts_per_degsec; + } public boolean parse_string(String line) { if (!line.startsWith("Accel:")) @@ -35,12 +47,12 @@ public class AltosIMU implements Cloneable { String[] items = line.split("\\s+"); if (items.length >= 8) { - accel_x = Integer.parseInt(items[1]); - accel_y = Integer.parseInt(items[2]); - accel_z = Integer.parseInt(items[3]); - gyro_x = Integer.parseInt(items[5]); - gyro_y = Integer.parseInt(items[6]); - gyro_z = Integer.parseInt(items[7]); + accel_x = convert_accel(Integer.parseInt(items[1])); + accel_y = convert_accel(Integer.parseInt(items[2])); + accel_z = convert_accel(Integer.parseInt(items[3])); + gyro_x = convert_gyro(Integer.parseInt(items[5])); + gyro_y = convert_gyro(Integer.parseInt(items[6])); + gyro_z = convert_gyro(Integer.parseInt(items[7])); } return true; } |