pub struct RamseteController { /* private fields */ }Expand description
RAMSETE controller configuration and calculation.
The RAMSETE controller is a nonlinear trajectory tracker that computes velocity commands to follow a reference trajectory while correcting for position and heading errors.
§Parameters
b: Convergence gain that determines how aggressively the controller corrects lateral and heading errors. Higher values = faster convergence but potentially more oscillation. Typical value: 2.0zeta: Damping ratio similar to a second-order system. Higher values reduce oscillation. Typical value: 0.7epsilon: Small-angle threshold for sinc function to avoid division by zero. Default: 1e-6
Implementations§
Source§impl RamseteController
impl RamseteController
Sourcepub fn with_epsilon(self, epsilon: f64) -> Self
pub fn with_epsilon(self, epsilon: f64) -> Self
Sets the small-angle epsilon for the sinc function.
When the heading error is smaller than epsilon, sinc(theta) returns 1.0 to avoid numerical instability from dividing by near-zero values.
§Arguments
epsilon- Small-angle threshold (default: 1e-6)
Sourcepub fn calculate(
&self,
current: Pose,
reference: RamseteReference,
) -> (f64, f64)
pub fn calculate( &self, current: Pose, reference: RamseteReference, ) -> (f64, f64)
Computes the linear and angular velocity commands.
§Arguments
current- The robot’s current posereference- The desired trajectory reference point
§Returns
A tuple (v, w) where:
vis the commanded linear velocity in m/swis the commanded angular velocity in rad/s
§Algorithm
- Computes errors in the robot frame (e_x, e_y, e_theta)
- Calculates adaptive gain k based on reference velocities
- Applies RAMSETE equations to compute corrected velocities
Trait Implementations§
Source§impl Clone for RamseteController
impl Clone for RamseteController
Source§fn clone(&self) -> RamseteController
fn clone(&self) -> RamseteController
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for RamseteController
impl Debug for RamseteController
impl Copy for RamseteController
Auto Trait Implementations§
impl Freeze for RamseteController
impl RefUnwindSafe for RamseteController
impl Send for RamseteController
impl Sync for RamseteController
impl Unpin for RamseteController
impl UnsafeUnpin for RamseteController
impl UnwindSafe for RamseteController
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<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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.