public ArrayList<AltosTimeSeries> series = new ArrayList<AltosTimeSeries>();
+ public double speed_filter_width = 4.0;
+ public double accel_filter_width = 4.0;
+
public int[] indices() {
int[] indices = new int[series.size()];
for (int i = 0; i < indices.length; i++)
public static final String state_name = "State";
public void set_state(int state) {
+
+ if (state == AltosLib.ao_flight_pad)
+ return;
+
if (state_series == null)
state_series = add_series(state_name, AltosConvert.state_name);
else if (this.state == state)
public static final String accel_name = "Accel";
public void set_acceleration(double acceleration) {
- if (accel_series == null) {
+ if (acceleration == AltosLib.MISSING)
+ return;
+ if (accel_series == null)
accel_series = add_series(accel_name, AltosConvert.accel);
- }
+
accel_series.add(time(), acceleration);
}
if (speed_series != null) {
AltosTimeSeries temp_series = make_series(speed_name, AltosConvert.speed);
- speed_series.filter(temp_series, 2.0);
+ speed_series.filter(temp_series, accel_filter_width);
accel_series = add_series(accel_name, AltosConvert.accel);
temp_series.differentiate(accel_series);
}
public static final String height_name = "Height";
public void set_pressure(double pa) {
+ if (pa == AltosLib.MISSING)
+ return;
+
if (pressure_series == null)
pressure_series = add_series(pressure_name, AltosConvert.pressure);
pressure_series.add(time(), pa);
if (altitude_series == null)
altitude_series = add_series(altitude_name, AltosConvert.height);
+ if (cal_data.ground_pressure == AltosLib.MISSING)
+ cal_data.set_ground_pressure(pa);
+
double altitude = AltosConvert.pressure_to_altitude(pa);
altitude_series.add(time(), altitude);
}
for (AltosTimeValue alt : altitude_series)
height_series.add(alt.time, alt.value - ground_altitude);
}
+
+ if (gps_height == null && cal_data.gps_pad != null && gps_altitude != null) {
+ double gps_ground_altitude = cal_data.gps_pad.alt;
+ gps_height = add_series(gps_height_name, AltosConvert.height);
+ for (AltosTimeValue gps_alt : gps_altitude)
+ gps_height.add(gps_alt.time, gps_alt.value - gps_ground_altitude);
+ }
}
public AltosTimeSeries speed_series;
if (altitude_series != null) {
AltosTimeSeries temp_series = make_series(altitude_name, AltosConvert.height);
- altitude_series.filter(temp_series, 1.0);
+ altitude_series.filter(temp_series, speed_filter_width);
alt_speed_series = make_series(speed_name, AltosConvert.speed);
temp_series.differentiate(alt_speed_series);
}
sats_in_soln.add(time(), gps.nsat);
if (gps.pdop != AltosLib.MISSING) {
- if (gps_pdop == null) {
+ if (gps_pdop == null)
gps_pdop = add_series(gps_pdop_name, null);
- gps_hdop = add_series(gps_hdop_name, null);
- gps_vdop = add_series(gps_vdop_name, null);
- }
gps_pdop.add(time(), gps.pdop);
+ }
+ if (gps.hdop != AltosLib.MISSING) {
+ if (gps_hdop == null)
+ gps_hdop = add_series(gps_hdop_name, null);
gps_hdop.add(time(), gps.hdop);
+ }
+ if (gps.vdop != AltosLib.MISSING) {
+ if (gps_vdop == null)
+ gps_vdop = add_series(gps_vdop_name, null);
gps_vdop.add(time(), gps.vdop);
}
if (gps.locked) {
- if (gps_altitude == null) {
- gps_altitude = add_series(gps_altitude_name, AltosConvert.height);
- gps_height = add_series(gps_height_name, AltosConvert.height);
- gps_ground_speed = add_series(gps_ground_speed_name, AltosConvert.speed);
- gps_ascent_rate = add_series(gps_ascent_rate_name, AltosConvert.speed);
- gps_course = add_series(gps_course_name, null);
- gps_speed = add_series(gps_speed_name, null);
- }
if (gps.alt != AltosLib.MISSING) {
+ if (gps_altitude == null)
+ gps_altitude = add_series(gps_altitude_name, AltosConvert.height);
gps_altitude.add(time(), gps.alt);
- if (cal_data.gps_pad != null)
- gps_height.add(time(), gps.alt - cal_data.gps_pad.alt);
}
- if (gps.ground_speed != AltosLib.MISSING)
+ if (gps.ground_speed != AltosLib.MISSING) {
+ if (gps_ground_speed == null)
+ gps_ground_speed = add_series(gps_ground_speed_name, AltosConvert.speed);
gps_ground_speed.add(time(), gps.ground_speed);
- if (gps.climb_rate != AltosLib.MISSING)
+ }
+ if (gps.climb_rate != AltosLib.MISSING) {
+ if (gps_ascent_rate == null)
+ gps_ascent_rate = add_series(gps_ascent_rate_name, AltosConvert.speed);
gps_ascent_rate.add(time(), gps.climb_rate);
- if (gps.course != AltosLib.MISSING)
+ }
+ if (gps.course != AltosLib.MISSING) {
+ if (gps_course == null)
+ gps_course = add_series(gps_course_name, null);
gps_course.add(time(), gps.course);
- if (gps.ground_speed != AltosLib.MISSING && gps.climb_rate != AltosLib.MISSING)
+ }
+ if (gps.ground_speed != AltosLib.MISSING && gps.climb_rate != AltosLib.MISSING) {
+ if (gps_speed == null)
+ gps_speed = add_series(gps_speed_name, null);
gps_speed.add(time(), Math.sqrt(gps.ground_speed * gps.ground_speed +
gps.climb_rate * gps.climb_rate));
+ }
}
if (gps.cc_gps_sat != null) {
if (sats_in_view == null)