created acceleration controller. not implemented yet. forgot files

This commit is contained in:
franchioping 2026-03-02 16:09:30 +00:00
parent 6225173006
commit 55fbc7830a
5 changed files with 20 additions and 7 deletions

View File

@ -28,6 +28,8 @@ pub struct ControllerStackConfig {
/// PID for the rotation (angle → angular rate) layer
pub rotation_pid: PidConfig,
pub acceleration_pid: PidConfig,
/// PID for the angular rate (angular rate → torque) layer
pub rate_pid: PidConfig,
/// Maximum angular rate (rad/s) that joystick input maps to

View File

@ -19,6 +19,13 @@ pub struct PositionInput {
pub alt: f32,
}
#[derive(Default, Clone, Copy, PartialEq, serde::Serialize, serde::Deserialize)]
pub struct AccelerationInput {
pub x: f32,
pub y: f32,
pub z: f32,
}
#[derive(Default, Clone, Copy, PartialEq, serde::Serialize, serde::Deserialize)]
pub struct RotationInput {
pub roll: f32,
@ -31,14 +38,16 @@ pub enum ModeInput {
#[default]
Acro,
Rotation,
Acceleration,
Navigation,
}
#[derive(Default, Clone, Copy, PartialEq, serde::Serialize, serde::Deserialize)]
pub struct Input {
pub joystick: JoystickInput,
pub position: PositionInput,
pub acceleration: AccelerationInput,
pub rotation: RotationInput,
pub position: PositionInput,
pub mode: ModeInput,
}
@ -112,9 +121,8 @@ impl InputRecording {
pub fn add_input_from_keyboard(&mut self, current_time: f32) -> Input {
let input = Input {
joystick: JoystickInput::from_keyboard(),
position: Default::default(),
rotation: Default::default(),
mode: ModeInput::Acro,
..Default::default()
};
let last_input = self.records.last();
match last_input {

View File

@ -2,11 +2,11 @@ use crate::config::PidConfig;
use crate::drone::stacked::DroneState;
use nalgebra as na;
pub mod rate;
pub mod rot;
pub mod angular_rate;
pub mod rotation;
pub use rate::AngularRateController;
pub use rot::RotationController;
pub use angular_rate::AngularRateController;
pub use rotation::RotationController;
pub trait ControllerModule {
type Input: Clone + Default;
@ -61,6 +61,9 @@ pub struct Position(pub na::Vector3<f32>); // meters
#[derive(Clone, Copy, Debug, Default)]
pub struct Velocity(pub na::Vector3<f32>); // m/s
#[derive(Clone, Copy, Debug, Default)]
pub struct Acceleration(pub na::Vector3<f32>); // m/s
#[derive(Clone, Copy, Debug, Default)]
pub struct Rotation(pub na::Vector3<f32>); // radians