Generic Linear-quadratic regultar (LQR) controller in Rust heavily optimized with nalgebra. This can be used as a feedback controller/ trajectory tracker for all kinds of dynamical systems and has been real-world tested with cars and quadcopters.
Controls a car with a simple kinematic bicycle model
```rust // Define state let x = 2.0; let y = 2.0; let theta = 0.34; let v = 3.0;
// Define controls let delta = 0.0; let acc = 0.0;
// Model parameters let l = 2.0; // wheelbase
// compute matrices for the LQR controller
let a = na::Matrix4::
let b = na::Matrix4x2::
let q = na::Matrix4::identity(); let r = na::Matrix2::identity();
let mut controller = LQRController::new()?; controller.compute_gain(&a, &b, &q, &r, 1e-6)?;
// Set states for the optimal control computation
let currentstate = na::Vector4::
let ufeedforward = na::Vector2::