summaryrefslogtreecommitdiff
path: root/altoslib/AltosIMU.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-12-20 19:37:08 -0800
committerKeith Packard <keithp@keithp.com>2013-12-20 19:37:08 -0800
commit91bcfae2e64ecb2e7de1292b264910382b635aea (patch)
treeec54fbfec63ffa3f5744b4530c8d23f2d9724048 /altoslib/AltosIMU.java
parent2ad31bad20b20615e9d8b29088e2488fddc81ac9 (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.java36
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;
}