-
Notifications
You must be signed in to change notification settings - Fork 0
/
downforce_analysis.py
51 lines (38 loc) · 2.35 KB
/
downforce_analysis.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
###############################################################
# DAQ TA
#
# DAQ TA is a tool to automate the process of converting AiM
# files from Race Studio to generate statistics and graphs for
# certain tests.
#
# Copyright (c) 2023 Louis Cundari III. All rights reserved.
# Louis Cundari III
# louiscundari3@outlook.com
###############################################################
import pandas as pd
import constants as c
import functions as f
# test for coast down (future, make it for coast up as well)
def coast_down_data_validation(df):
# Check between time interval if there is any throttle or brake input
df_valid_coast = df[(df[c.THROTTLE_COL] < c.THROTTLE_CONSTANT) & (df[c.FBRAKE_COL] < c.FBRAKE_CONSTANT)
& (df[c.RBRAKE_COL] < c.RBRAKE_CONSTANT) & (df[c.YAW_COL] < c.YAW_CONSTANT)
& (df[c.SPEED_COL] > c.MIN_COAST_SPEED)]
df_FL = df_valid_coast[[c.TIME_COL, c.FL_FORCE_COL, c.SPEED_COL]].rename(columns={c.FL_FORCE_COL: c.DOWNFORCE_COL})
df_FR = df_valid_coast[[c.TIME_COL, c.FR_FORCE_COL, c.SPEED_COL]].rename(columns={c.FR_FORCE_COL: c.DOWNFORCE_COL})
df_RL = df_valid_coast[[c.TIME_COL, c.RL_FORCE_COL, c.SPEED_COL]].rename(columns={c.RL_FORCE_COL: c.DOWNFORCE_COL})
df_RR = df_valid_coast[[c.TIME_COL, c.RR_FORCE_COL, c.SPEED_COL]].rename(columns={c.RR_FORCE_COL: c.DOWNFORCE_COL})
df_downforce = pd.concat([df_FL, df_FR, df_RL, df_RR]).reset_index(drop=True) # on=merge_cols).reset_index(drop=True)#.merge(df_RL, on=merge_cols).merge(df_RR, on=merge_cols).reset_index(drop=True)
df_downforce[c.DOWNFORCE_COL] = df_downforce[c.DOWNFORCE_COL] / c.N_LBF_CONVERSION
df_downforce[c.SPEED_COL] = df_downforce[c.SPEED_COL].apply(lambda x: f.custom_round(x, 1))
return df_downforce
def init_downforce_analysis(df):
f.clear_plots()
df_data = f.stationary_normalization(df, c.FL_FORCE_COL, True)
df_data = f.stationary_normalization(df, c.FR_FORCE_COL, True)
df_data = f.stationary_normalization(df, c.RL_FORCE_COL, True)
df_data = f.stationary_normalization(df, c.RR_FORCE_COL, True)
df_downforce = coast_down_data_validation(df_data)
fig = f.var1_vs_var2_graph(df_downforce, c.SPEED_COL, c.DOWNFORCE_COL, plot_type='scatter', marker='o', single_plot_t_f=True)
fig.canvas.manager.set_window_title('Downforce Analysis')
return fig