35 #ifndef OPTICAL_FLOW_LANDING_H_
36 #define OPTICAL_FLOW_LANDING_H_
39 #define COV_WINDOW_SIZE 60
76 #define GUIDANCE_H_MODE_MODULE_SETTING GUIDANCE_H_MODE_HOVER
79 #define GUIDANCE_V_MODE_MODULE_SETTING GUIDANCE_V_MODE_MODULE
82 float get_cov(
float *a,
float *b,
int n_elements);
void guidance_v_module_init(void)
float igain
I-gain for constant divergence control.
float thrust_history[COV_WINDOW_SIZE]
float dgain
D-gain for constant divergence control.
struct OpticalFlowLanding of_landing_ctrl
float lp_factor
low-pass factor in [0,1], with 0 purely using the current measurement
float agl
agl = height from sonar (only used when using "fake" divergence)
float igain_adaptive
I-gain for adaptive gain control.
float pgain_adaptive
P-gain for adaptive gain control.
float vel
vertical velocity as determined with sonar (only used when using "fake" divergence) ...
float divergence_history[COV_WINDOW_SIZE]
float divergence_setpoint
setpoint for constant divergence approach
void guidance_v_module_enter(void)
Entering the module (user switched to module)
float get_mean_array(float *a, int n_elements)
Get the mean value of an array.
int delay_steps
number of delay steps for div past
int COV_METHOD
method to calculate the covariance: between thrust and div (0) or div and div past (1) ...
void guidance_v_module_run(bool in_flight)
int CONTROL_METHOD
type of divergence control: 0 = fixed gain, 1 = adaptive gain
float past_divergence_history[COV_WINDOW_SIZE]
int VISION_METHOD
whether to use vision (1) or Optitrack / sonar (0)
float agl_lp
low-pass version of agl
float get_cov(float *a, float *b, int n_elements)
Get the covariance of two arrays.
float cov_limit
for fixed gain control, what is the cov limit triggering the landing
float cov_set_point
for adaptive gain control, setpoint of the covariance (oscillations)
float pgain
P-gain for constant divergence control (from divergence error to thrust)
float sum_err
integration of the error for I-gain
float dgain_adaptive
D-gain for adaptive gain control.
void reset_all_vars(void)
Reset all variables:
float nominal_thrust
nominal thrust around which the PID-control operates