Skip to content

Commit

Permalink
final working code-generates state log
Browse files Browse the repository at this point in the history
  • Loading branch information
bytecod3 committed Jan 26, 2025
1 parent 1c02eef commit bdea90a
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 23 deletions.
4 changes: 2 additions & 2 deletions app/NaFCSE/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -707,8 +707,8 @@ void MainWindow::plotAltitude(QVector<double>* altitudeVector, int altitude_vec_
ui->plotWidget->graph(0)->setData(x, y);

// label the axes
ui->plotWidget->xAxis->setLabel("X value");
ui->plotWidget->yAxis->setLabel("Y label");
ui->plotWidget->xAxis->setLabel("time");
ui->plotWidget->yAxis->setLabel("altitude");

// set the axes range, so we see all data
ui->plotWidget->xAxis->setRange(-1, 1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
m = [x' y'];
dlmwrite('wrong_altitude_data.csv', m);

plot(x' ,y');
plot(x_joined ,y_joined);
xlabel( 'Time(sec)' );
ylabel('Altitude (m)');
title("Altitude test data");
Expand Down
67 changes: 50 additions & 17 deletions python-test-scripts/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,12 @@

max_alt = 0 # the maximum altitude value recognized from the file
apogee_flag = 0 # show that apogee has been detected
main_eject_flag = 0
apogee = 0 # determine the altitude at which apogee was detected
state_log_file = "state_log_file.txt"

LAUNCH_DETECTION_THRESHOLD = 10 # below 5 meters we have not launched

states = {
1:"PREFLIGHT",
2:"POWERED_FLIGHT",
Expand All @@ -42,9 +44,13 @@ def check_flight_states(altitude_values, has_header=0):
Check flight states based on the test data
"""
# state machine

global max_alt
global apogee_flag
global main_eject_flag
altitude_values_float = []

state_log = open(state_log_file, 'w').close()

if has_header:
altitude_values = altitude_values[1:]
l = len(altitude_values[1:])
Expand All @@ -58,32 +64,59 @@ def check_flight_states(altitude_values, has_header=0):
for j in range(0, l):
altitude_values_float.append(float(altitude_values[j]))

for alt_index in range(0, l):
for alt_index in range(0, len(altitude_values_float)):
state_log = open(state_log_file, 'a')

# detect PREFLIGHT
if altitude_values_float[alt_index] < LAUNCH_DETECTION_THRESHOLD:
state_log.write(states[1]) # append flight state to file
state_log.write("\n")
if apogee_flag == 0:
# detect PREFLIGHT
if altitude_values_float[alt_index] < LAUNCH_DETECTION_THRESHOLD:
state_log.write(states[1]) # append flight state to file
state_log.write("\n")

# detect apogee
if altitude_values_float[alt_index] > max_alt:
max_alt = altitude_values[alt_index]
# detect POWERED FLIGHT
elif LAUNCH_DETECTION_THRESHOLD < altitude_values_float[alt_index] < LAUNCH_DETECTION_THRESHOLD + 20:
state_log.write(states[2]) # append flight state to file
state_log.write("\n")

if apogee_flag == 0:
if (max_alt - altitude_values[alt_index]) > 3:
# detect APOGEE
if altitude_values_float[alt_index] > max_alt:
max_alt = altitude_values_float[alt_index]

if (max_alt - float(altitude_values_float[alt_index])) > 3:
apogee = max_alt
apogee_flag = 1
print("Apogee detected at " + str(apogee))
state_log.write(states[1]) # append flight state to file
state_log.write("\n")


state_log.write(states[3]) # append flight state to file
state_log.write("\n")


# DROGUE EJECT
state_log.write(states[4]) # append flight state to file
state_log.write("\n")

state_log.close()
# DROGUE DESCENT
state_log.write(states[5]) # append flight state to file
state_log.write("\n")


# STATES AFTER APOGEE
elif apogee_flag == 1:
# detect MAIN CHUTE EJECT
if LAUNCH_DETECTION_THRESHOLD <= altitude_values_float[alt_index] <= max_alt:
if main_eject_flag == 0:
state_log.write(states[6]) # append flight state to file
state_log.write("\n")
main_eject_flag = 1
elif main_eject_flag == 1:
# MAIN CHUTE DESCENT
state_log.write(states[7]) # append flight state to file
state_log.write("\n")

if altitude_values_float[alt_index] < LAUNCH_DETECTION_THRESHOLD:
# POST FLIGHT
state_log.write(states[8]) # append flight state to file
state_log.write("\n")

state_log.close()


def generate_altitude_plot(has_header = 1):
Expand Down
2 changes: 1 addition & 1 deletion python-test-scripts/maxt.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
mn = 0

apg_flag = 0
apg_val = 0;
apg_val = 0

for i in range(0, len(k)):
if k[i] > mx:
Expand Down
22 changes: 20 additions & 2 deletions python-test-scripts/state_log_file.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,23 @@ PREFLIGHT
PREFLIGHT
PREFLIGHT
PREFLIGHT
PREFLIGHT
PREFLIGHT
POWERED_FLIGHT
POWERED_FLIGHT
POWERED_FLIGHT
APOGEE
DROGUE EJECT
DROGUE_DESCENT
MAIN_EJECT
MAIN_DESCENT
MAIN_DESCENT
MAIN_DESCENT
MAIN_DESCENT
MAIN_DESCENT
MAIN_DESCENT
MAIN_DESCENT
MAIN_DESCENT
MAIN_DESCENT
MAIN_DESCENT
MAIN_DESCENT
MAIN_DESCENT
POST_FLIGHT

0 comments on commit bdea90a

Please sign in to comment.