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;  	} | 
