RustPhysicsMQ/src/config.rs

50 lines
1.1 KiB
Rust
Raw Normal View History

use rapier3d::prelude::*;
#[derive(Debug, serde::Deserialize)]
pub struct SimulationConfig {
pub tickrate: f32,
pub drone_tick_rate: u64,
// PID
pub target_rate: f32,
pub proportional_multiplier: [f32; 3],
pub integral_multiplier: [f32; 3],
pub diferential_multiplier: [f32; 3],
// Motors
pub max_thrust: f32,
pub max_torque: f32,
2026-02-04 17:54:41 +00:00
#[serde(default)]
pub time_constant: f32,
// Drone
pub mass: f32,
}
impl SimulationConfig {
pub fn proportional(&self) -> Vector<f32> {
vector![
self.proportional_multiplier[0],
self.proportional_multiplier[1],
self.proportional_multiplier[2]
]
}
pub fn integral(&self) -> Vector<f32> {
vector![
self.integral_multiplier[0],
self.integral_multiplier[1],
self.integral_multiplier[2]
]
}
pub fn diferential(&self) -> Vector<f32> {
vector![
self.diferential_multiplier[0],
self.diferential_multiplier[1],
self.diferential_multiplier[2]
]
}
}