47 lines
1.0 KiB
Rust
47 lines
1.0 KiB
Rust
|
|
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,
|
||
|
|
|
||
|
|
// 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]
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|