From c507e143aac0bc251b02bbe3c812bf81b7026ff7 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 17 Oct 2020 15:29:11 -0700 Subject: [PATCH] altoslib: Clip accelerometer-based speed to >= 0 Negative vertical speeds computed by axial acceleration aren't sensible, so just clip them to zero so that plots are more useful. Signed-off-by: Keith Packard --- altoslib/AltosFlightSeries.java | 6 +++++- altoslib/AltosTimeSeries.java | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/altoslib/AltosFlightSeries.java b/altoslib/AltosFlightSeries.java index 38256f0e..d9d59f1b 100644 --- a/altoslib/AltosFlightSeries.java +++ b/altoslib/AltosFlightSeries.java @@ -348,8 +348,12 @@ public class AltosFlightSeries extends AltosDataListener { else accel_series.integrate(temp_series); + AltosTimeSeries clip_series = make_series(speed_name, AltosConvert.speed); + + temp_series.clip(clip_series, 0, Double.POSITIVE_INFINITY); + accel_speed_series = make_series(speed_name, AltosConvert.speed); - temp_series.filter(accel_speed_series, 0.1); + clip_series.filter(accel_speed_series, 0.1); } if (alt_speed_series != null && accel_speed_series != null) { diff --git a/altoslib/AltosTimeSeries.java b/altoslib/AltosTimeSeries.java index 80720f15..d12fbe70 100644 --- a/altoslib/AltosTimeSeries.java +++ b/altoslib/AltosTimeSeries.java @@ -342,6 +342,16 @@ public class AltosTimeSeries implements Iterable, Comparable max) value = max; + clip.add(v.time, value); + } + return clip; + } + public AltosTimeSeries(String label, AltosUnits units) { this.label = label; this.units = units; -- 2.30.2