veloxity_core/
controller.rs1pub mod quad;
2use crate::command::CombinedControl;
3use crate::math::FlightFloat;
4use crate::params::Params;
5use crate::state_machine::StateManager;
6
7pub struct ControllerCtx<'a, R: FlightFloat> {
8 pub state_manager: &'a mut StateManager,
9 pub command: &'a CombinedControl,
10 pub params: &'a Params,
11 pub air_density: R,
12 pub dt: R,
13}
14
15pub trait Controller<R: FlightFloat> {
16 type State;
17 type ControlOutput;
18 fn control(&mut self, state: &Self::State, ctx: ControllerCtx<'_, R>) -> Self::ControlOutput;
19 fn update_gains(&mut self, params: &Params);
20}
21
22pub trait RcTrimCalibrator {
23 fn calculate_equilibrium_torques_from_rc(
24 &mut self,
25 rc_control: &CombinedControl,
26 params: &Params,
27 ) -> [f32; 3];
28}