pub struct ExpoDrive { /* private fields */ }Expand description
Exponential drive scaling for smoother joystick control.
ExpoDrive applies an exponential curve to joystick inputs, providing
fine control at low speeds while maintaining full power at high inputs.
This makes the robot easier to drive precisely.
§Formula
The scaling uses the formula:
m = (|x|^(n+2) + |y|^(n+2))^(1/(n+2))
f = m^k / sqrt(x^2 + y^2)
output = (f*x, f*y)§Parameters
n: Controls the curve shape (higher = more aggressive near center)k: Controls the overall scaling factor
§Example
let expo = ExpoDrive::new(2.0, 1.0);
let (x, y) = expo.calculate(0.5, 0.5).as_tuple();Implementations§
Auto Trait Implementations§
impl Freeze for ExpoDrive
impl RefUnwindSafe for ExpoDrive
impl Send for ExpoDrive
impl Sync for ExpoDrive
impl Unpin for ExpoDrive
impl UnsafeUnpin for ExpoDrive
impl UnwindSafe for ExpoDrive
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.