Module: logsysid¶
Analyze a PX4 log to perform sysid and control design.
-
px4tools.logsysid.
attitude_control_design
(name, y, u, rolling_mean_window=100, do_plot=False, verbose=False, d_tc=0.008)¶ Do sysid and control design for roll/pitch rate loops. :param name: :param y: output :param u: input :param rolling_mean_window: number of samples in rolling mean :param do_plot: controls plotting :param verbose: show debug output :param d_tc: derivative time constant :return: (gain, closed loop transfer function)
-
px4tools.logsysid.
attitude_sysid
(y_acc, u_mix, verbose=False)¶ roll/pitch system id assuming delay/gain model :param y_acc: (roll or pitch acceleration) :param u_mix: (roll or pitch acceleration command) :param verbose: show debug output :return: (G_ol, delay, k)
G_ol: open loop plant delay: time delay (sec) k: gain
-
px4tools.logsysid.
calculate_fitness
(k, delay, y, u, dt)¶ Find how well the function fits the data
-
px4tools.logsysid.
control_design
(raw_data, do_plot=False, rolling_mean_window=100, verbose=False)¶ Design a PID controller from log file. :param raw_data: data frame :param do_plot: controls plotting :param rolling_mean_window: number of rolling mean samples :param verbose: show debug output :return: (gain ordered dict, local variables)
-
px4tools.logsysid.
control_design_ulog
(raw_data, do_plot=False, rolling_mean_window=100, verbose=False)¶ Design a PID controller from log file. TODO, debug this :param raw_data: data frame :param do_plot: controls plotting :param rolling_mean_window: number of rolling mean samples :param verbose: show debug output :return: (gain ordered dict, local variables)
-
px4tools.logsysid.
delay_and_gain_fit_fun
(x, y, u, dt)¶ Fitness function for delay_and_gain_sysid :param x: state (k, delay) :param y: output :param u: input :param dt: period (sec) :return: the fitness cost
-
px4tools.logsysid.
delay_and_gain_sysid
(y, u, verbose=False)¶ Finds gain and time delay to best fit output y to input u :param y: output :param u: input :param verbose: show debug output :return: (k, delay)
-
px4tools.logsysid.
lqr_ofb_con
(K, R, Q, X, ss_o)¶ Constraint for LQR output feedback optimization. This asserts that all eigenvalues are negative so that the system is stable. @K gain matrix @Q process noise covariance matrix @X initial state covariance matrix @ss_o open loop state space system @return constraint
-
px4tools.logsysid.
lqr_ofb_cost
(K, R, Q, X, ss_o)¶ Cost for LQR output feedback optimization. @K gain matrix @Q process noise covariance matrix @X initial state covariance matrix @ss_o open loop state space system @return cost
-
px4tools.logsysid.
lqr_ofb_design
(K_guess, ss_o, verbose=False)¶ LQR output feedback controller design. @K_guess initial stabilizing gains @ss_o open loop state space system @return gain matrix
-
px4tools.logsysid.
lqr_ofb_jac
(K, R, Q, X, ss_o)¶ Jacobian for LQR Output feedback optimization. TODO: might be an error here, doesn’t not help optim
-
px4tools.logsysid.
pid_design
(G, K_guess, d_tc, verbose=False, use_P=True, use_I=True, use_D=True)¶ Parameters: - G – transfer function
- K_guess – gain matrix guess
- d_tc – time constant for derivative
- verbose – show debug output
- use_P – use p gain in design
- use_I – use i gain in design
- use_D – use d gain in design
Returns: (K, G_comp, Gc_comp) K: gain matrix G_comp: open loop compensated plant Gc_comp: closed loop compensated plant
-
px4tools.logsysid.
plot_delay_and_gain_fit
(k, delay, y, u, dt=0.001)¶ Plot the delay and gain fit vs the actual output.
-
px4tools.logsysid.
plot_loops
(name, G_ol, G_cl)¶ Plot loops :param name: Name of axis :param G_ol: open loop transfer function :param G_cl: closed loop transfer function
-
px4tools.logsysid.
setup_data
(df)¶ Resample a dataframe at 1 ms to prep for sysid. :param df: pandas DataFrame of px4log :return: (df_rs, dt) resample dataframe and period (1 ms)
Module: analysis¶
Analysis of px4 logs
-
px4tools.analysis.
all_new_sample
(df)¶
-
px4tools.analysis.
alt_analysis
(data, min_alt=None, max_alt=None)¶ Altitude analysis.
-
px4tools.analysis.
background_flight_modes
(data)¶ Overlays a background color for each flight mode. Can be called to style a graph.
-
px4tools.analysis.
filter_finite
(data)¶
-
px4tools.analysis.
find_lpe_gains
(df, printing=False)¶
-
px4tools.analysis.
find_meas_period
(series)¶
-
px4tools.analysis.
get_auto_data
(data)¶ Extract auto data.
-
px4tools.analysis.
get_float_data
(dataframe)¶ Get float data out of dataframe.
-
px4tools.analysis.
isfloatarray
(cell)¶ Convert cell to float if possible.
-
px4tools.analysis.
new_sample
(series)¶
-
px4tools.analysis.
octa_cox_data_to_ss
(data)¶ Extracts state space model data from octa cox log.
-
px4tools.analysis.
plot_attitude_loops
(data)¶ Plot attitude loops.
-
px4tools.analysis.
plot_attitude_rate_loops
(data)¶ Plot attitude rate control loops.
-
px4tools.analysis.
plot_control_loops
(data)¶ Plot all control loops.
-
px4tools.analysis.
plot_faults
(data)¶
-
px4tools.analysis.
plot_modes
(data)¶
-
px4tools.analysis.
plot_position_loops
(data)¶ Plot position loops.
-
px4tools.analysis.
plot_timeouts
(data)¶
-
px4tools.analysis.
plot_velocity_loops
(data)¶ Plot velocity loops.
-
px4tools.analysis.
pos_analysis
(data)¶ Analyze position.
-
px4tools.analysis.
process_all
(data_frame, project_lat_lon=True, lpe_health=True)¶
-
px4tools.analysis.
process_data
(data)¶
-
px4tools.analysis.
process_lpe_health
(data)¶
-
px4tools.analysis.
set_time_series
(data)¶ Set data to use time series
-
px4tools.analysis.
statistics
(df, keys=None, plot=False)¶