Example #1
0
downsampling = 1
horizon = 50 // downsampling
start_at = 20+320
autoregres_at_after_start = 50

tested_predictor_1 = predictor_autoregressive_tf(horizon=horizon, dt=DT)
tested_predictor_2 = predictor_ODE(horizon=horizon, dt=DT)

# datafile = glob.glob('./data/validate/' + '*.csv')[0]
datafile = glob.glob('./Experiment_Recordings/Test/' + '*.csv')[0]
features = ['angle_cos', 'angle_sin', 'angle', 'angleD', 'position', 'positionD']
feature_to_plot = features[0]

df = pd.read_csv(datafile, comment='#', dtype=np.float32)
df = df.iloc[::downsampling].reset_index(drop=True)
df = df.iloc[start_at:].reset_index(drop=True)
df = df.iloc[0:autoregres_at_after_start + horizon + 1, df.columns.get_indexer(
    ['time', 'Q', 'angle_cos', 'angle_sin', 'angle', 'angleD', 'position', 'positionD'])]

pd_plotter_simple(df, 'time', feature_to_plot, idx_range=[0, autoregres_at_after_start + horizon],
                  vline=df.loc[df.index[autoregres_at_after_start], 'time'], marker='o',
                  title = 'Ground truth (warm-up + prediction region)')


predictions_1 = get_predictions(tested_predictor_1, df, autoregres_at_after_start, N_predictions=1, horizon=horizon)
predictions_2 = get_predictions(tested_predictor_2, df, autoregres_at_after_start, N_predictions=1, horizon=horizon)

fig3 = pd_plotter_compare_2(df.iloc[autoregres_at_after_start:autoregres_at_after_start + horizon + 1],
                            dfs=[predictions_1[0], predictions_2[0]], names=['rnn', 'equations'], y_name=feature_to_plot,
                            colors=['blue', 'darkgreen'],
                            idx_range=[0, horizon + 1], dt=DT, title= '', marker='o')
]
feature_to_plot = features[4]

df = pd.read_csv(datafile, comment='#', dtype=np.float32)
df = df.iloc[::downsampling].reset_index(drop=True)
df = df.iloc[start_at:].reset_index(drop=True)
df = df.iloc[0:autoregres_at_after_start + horizon + 1,
             df.columns.get_indexer([
                 'time', 'Q', 'angle', 'angle_cos', 'angle_sin', 'angleD',
                 'position', 'positionD'
             ])]

pd_plotter_simple(df,
                  'time',
                  feature_to_plot,
                  idx_range=[0, autoregres_at_after_start + horizon],
                  vline=df.loc[df.index[autoregres_at_after_start], 'time'],
                  marker='o',
                  title='Ground truth (warm-up + prediction region)')

predictor = tested_predictor(horizon=horizon, dt=DT)
# predictor = tested_predictor(horizon=horizon*5, dt=0.02) # To get ground truth

# In fact the block of code for this controller does nothing
# It has to be ensured however that it does nothing, to ensure this predictor is compatible
# with the main program
t0 = timeit.default_timer()
for row_number in range(autoregres_at_after_start):
    initial_state = df.iloc[[row_number], :]
    Q = np.atleast_1d(df.loc[df.index[row_number], 'Q'])
    predictor.update_internal_state(Q, initial_state)