Skip to main content

veloxity_core/
controller.rs

1pub 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}