From 6ac469fb46e9fabfd473b9a3d8bcd92db00b98b2 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 12 Oct 2020 16:46:28 -0700 Subject: [PATCH] altoslib: Add 'motor_pressure' data value This value tracks the internal pressure of a motor in Pa. Signed-off-by: Keith Packard --- altoslib/AltosDataListener.java | 1 + altoslib/AltosEepromDownload.java | 1 + altoslib/AltosFlightSeries.java | 28 +++++++++++++++++++++++----- altoslib/AltosReplayReader.java | 1 + altoslib/AltosState.java | 6 ++++++ altoslib/AltosTelemetryFile.java | 1 + 6 files changed, 33 insertions(+), 5 deletions(-) diff --git a/altoslib/AltosDataListener.java b/altoslib/AltosDataListener.java index ad76f833..db2c14fa 100644 --- a/altoslib/AltosDataListener.java +++ b/altoslib/AltosDataListener.java @@ -140,6 +140,7 @@ public abstract class AltosDataListener { public abstract void set_igniter_voltage(double[] voltage); public abstract void set_pyro_fired(int pyro_mask); public abstract void set_companion(AltosCompanion companion); + public abstract void set_motor_pressure(double motor_pressure); public AltosDataListener() { } diff --git a/altoslib/AltosEepromDownload.java b/altoslib/AltosEepromDownload.java index 8d0738dc..a3c15112 100644 --- a/altoslib/AltosEepromDownload.java +++ b/altoslib/AltosEepromDownload.java @@ -71,6 +71,7 @@ class AltosEepromNameData extends AltosDataListener { public void set_companion(AltosCompanion companion) { } public void set_kalman(double height, double speed, double acceleration) { } public void set_orient(double new_orient) { } + public void set_motor_pressure(double motor_pressure) { } public AltosEepromNameData(AltosCalData cal_data) { super(cal_data); diff --git a/altoslib/AltosFlightSeries.java b/altoslib/AltosFlightSeries.java index ef4ef4df..38256f0e 100644 --- a/altoslib/AltosFlightSeries.java +++ b/altoslib/AltosFlightSeries.java @@ -286,11 +286,16 @@ public class AltosFlightSeries extends AltosDataListener { } private void compute_height() { - double ground_altitude = cal_data().ground_altitude; - if (height_series == null && ground_altitude != AltosLib.MISSING && altitude_series != null) { - height_series = add_series(height_name, AltosConvert.height); - for (AltosTimeValue alt : altitude_series) - height_series.add(alt.time, alt.value - ground_altitude); + if (height_series == null) { + double ground_altitude = cal_data().ground_altitude; + if (ground_altitude != AltosLib.MISSING && altitude_series != null) { + height_series = add_series(height_name, AltosConvert.height); + for (AltosTimeValue alt : altitude_series) + height_series.add(alt.time, alt.value - ground_altitude); + } else if (speed_series != null) { + height_series = add_series(height_name, AltosConvert.height); + speed_series.integrate(height_series); + } } if (gps_height == null && cal_data().gps_pad != null && cal_data().gps_pad.alt != AltosLib.MISSING && gps_altitude != null) { @@ -401,6 +406,9 @@ public class AltosFlightSeries extends AltosDataListener { if (cal_data.accel_zero_across == AltosLib.MISSING) return; + if (cal_data.gyro_zero_roll == AltosLib.MISSING) + return; + AltosRotation rotation = new AltosRotation(accel_ground_across, accel_ground_through, accel_ground_along, @@ -758,6 +766,16 @@ public class AltosFlightSeries extends AltosDataListener { public void set_companion(AltosCompanion companion) { } + public static final String motor_pressure_name = "Motor Pressure"; + + public AltosTimeSeries motor_pressure_series; + + public void set_motor_pressure(double motor_pressure) { + if (motor_pressure_series == null) + motor_pressure_series = add_series(motor_pressure_name, AltosConvert.pressure); + motor_pressure_series.add(time(), motor_pressure); + } + public void finish() { compute_orient(); if (speed_series == null) { diff --git a/altoslib/AltosReplayReader.java b/altoslib/AltosReplayReader.java index 07f62427..bcabf750 100644 --- a/altoslib/AltosReplayReader.java +++ b/altoslib/AltosReplayReader.java @@ -86,6 +86,7 @@ class AltosReplay extends AltosDataListener implements Runnable { public void set_igniter_voltage(double[] voltage) { state.set_igniter_voltage(voltage); } public void set_pyro_fired(int pyro_mask) { state.set_pyro_fired(pyro_mask); } public void set_companion(AltosCompanion companion) { state.set_companion(companion); } + public void set_motor_pressure(double motor_pressure) { state.set_motor_pressure(motor_pressure); } public void run () { /* Run the flight */ diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index fc972748..28fdbb24 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -703,6 +703,8 @@ public class AltosState extends AltosDataListener { public int pyro_fired; + public double motor_pressure; + public void set_npad(int npad) { this.npad = npad; gps_waiting = MIN_PAD_SAMPLES - npad; @@ -1047,6 +1049,10 @@ public class AltosState extends AltosDataListener { this.pyro_fired = fired; } + public void set_motor_pressure(double motor_pressure) { + this.motor_pressure = motor_pressure; + } + public AltosState() { init(); } diff --git a/altoslib/AltosTelemetryFile.java b/altoslib/AltosTelemetryFile.java index 052b0fba..6f01f51c 100644 --- a/altoslib/AltosTelemetryFile.java +++ b/altoslib/AltosTelemetryFile.java @@ -49,6 +49,7 @@ class AltosTelemetryNullListener extends AltosDataListener { public void set_igniter_voltage(double[] voltage) { } public void set_pyro_fired(int pyro_mask) { } public void set_companion(AltosCompanion companion) { } + public void set_motor_pressure(double motor_pressure) { } public boolean cal_data_complete() { /* All telemetry packets */ -- 2.30.2