[][src]Struct librobot::navigation::RealWorldPid

pub struct RealWorldPid<L, R> where
    L: Qei<Count = u16>,
    R: Qei<Count = u16>, 
{ /* fields omitted */ }

Le module central de la navigation, qui permet de controller le robot avec les unités du monde physique, et d'avoir un retour sur la position du robot. Il contient:

Methods

impl<L, R> RealWorldPid<L, R> where
    L: Qei<Count = u16>,
    R: Qei<Count = u16>, 
[src]

pub fn new(
    qei_left: QeiManager<L>,
    qei_right: QeiManager<R>,
    params: &PIDParameters
) -> Self
[src]

Crée un nouveau PID à partir de :

  • 2 struct de embedded_hal wrappés dans des QeiManagerreprésentant les encodeurs quadratiques gauche et droite
  • les coefficients de l'asservissement,
  • la valeur maximale de la consigne en sortie,
  • les valeurs physiques du robot :
    • distance interaxe en mm
    • rayon d'une roue codeuse en mm

pub fn get_params(&self) -> &PIDParameters[src]

Renvoie les paramètres actuels du déplacement.

pub fn set_params(&mut self, params: &PIDParameters)[src]

Met à jour les paramètres du déplacement.

pub fn update(&mut self)[src]

Mets à jour le PID et la position du robot

pub fn enable_asserv(&mut self, lin_ctrl: bool, ang_ctrl: bool)[src]

Active ou désactive l'asservissement longitudinal et / ou l'asservissement angulaire.

pub fn get_command(&self) -> (Command, Command)[src]

Renvoie la commande courante

pub fn get_position(&self) -> Coord[src]

Renvoie la position

pub fn get_angle(&self) -> i64[src]

Renvoie l'angle en milliradians

pub fn get_qei_ticks(&self) -> (i64, i64)[src]

Renvoie les ticks comptés par les roues codeuses

pub fn get_wheel_dist(&self) -> (f32, f32)[src]

Renvoie la distance parcourue par les roues codeuses à gauche et à droite, en millimètres.

pub fn set_position_and_angle(&mut self, position: Coord, angle: i64)[src]

Définit la position actuelle de l'odométrie

pub fn forward(&mut self, distance: f32)[src]

Ordonne au robot d'avancer de distance (en mm)

pub fn backward(&mut self, distance: f32)[src]

Ordonne au robot de reculer de distance (en mm)

pub fn rotate(&mut self, angle: f32)[src]

Ordonne au robot de tourner de angle (en milliradians)

pub fn rotate_absolute(&mut self, angle: f32)[src]

Ordonne au robot de tourner de façon à s'orienter vers l'angle angle (en milliradians). Le robot détermine sa position initiale grâce à l'odométrie.

pub fn stop(&mut self)[src]

Ordonne au robot de rester là où il est actuellement

pub fn is_robot_blocked(&self) -> bool[src]

Retourne true si le robot est bloqué, c'est à dire s'il reçoit une commande mais ne change pas de position.

pub fn update_blocking(&mut self)[src]

Met à jour la detection du bloquage du robot.

pub fn is_goal_reached(&self, lin_accuracy: f32, ang_accuracy: f32) -> bool[src]

Retourne true si le pid a atteind sa consigne en position et angle

lin_accuracy: L'erreur autorisée sur la position du robot en millimètres.

ang_accuracy: L'erreur autorisée sur l'angle du robot en milliradians.

Trait Implementations

impl<L, R> Debug for RealWorldPid<L, R> where
    L: Qei<Count = u16>,
    R: Qei<Count = u16>, 
[src]

Auto Trait Implementations

impl<L, R> Send for RealWorldPid<L, R> where
    L: Send,
    R: Send

impl<L, R> Sync for RealWorldPid<L, R> where
    L: Sync,
    R: Sync

Blanket Implementations

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Same<T> for T[src]

type Output = T

Should always be Self