summaryrefslogtreecommitdiff
path: root/2004/i/nono/src/motor/tracker.h
diff options
context:
space:
mode:
authorschodet2004-04-16 16:46:46 +0000
committerschodet2004-04-16 16:46:46 +0000
commita3a3a4d6d183b22036a606cda8553192c98321cd (patch)
tree37d158408eabfbb8524d1214a985a44e376ee333 /2004/i/nono/src/motor/tracker.h
parente68b824329a537eddddd5b59b9bdf498698ee604 (diff)
Logger fonctionne.
MovementRotation aussi. Ajout de Serial::wait. Ajout de commentaires.
Diffstat (limited to '2004/i/nono/src/motor/tracker.h')
-rw-r--r--2004/i/nono/src/motor/tracker.h49
1 files changed, 34 insertions, 15 deletions
diff --git a/2004/i/nono/src/motor/tracker.h b/2004/i/nono/src/motor/tracker.h
index 2674782..63c58b2 100644
--- a/2004/i/nono/src/motor/tracker.h
+++ b/2004/i/nono/src/motor/tracker.h
@@ -24,46 +24,65 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
// }}}
+#include "logger/log.h"
#include <iostream>
+/// Classe de suivi des coordonnée et de calcul d'erreur.
class Tracker
{
- // Position et angle (mm et rad).
+ /// Position et angle (mm et rad).
double posX_, posY_, angle_;
- // Distance entre les deux roues (mm).
+ /// Distance entre les deux roues (mm).
double f_;
- // Nombre d'updates nuls consécutifs.
+ /// Nombre d'updates nuls consécutifs.
int zero_;
+ // Système de log.
+ mutable Log log_;
public:
- // Constructeur.
+ /// Constructeur.
Tracker (void);
- // Destructeur.
+ /// Destructeur.
~Tracker (void);
- // Set the position.
+ /// Set the position.
void setPos (double x, double y, double angle);
- // Get the position.
+ /// Get the position.
void getPos (double &x, double &y, double &angle) const;
+ /// Get X position.
double getX (void) const { return posX_; }
+ /// Get Y position.
double getY (void) const { return posY_; }
+ /// Get angle.
double getAngle (void) const { return angle_; }
+ /// Retourne vrai si arrété.
bool stopped (void) { return zero_ > 10; }
- // Calcule l'erreur linéaire et angulaire pour atteindre un point,
- // retourne faux si atteind.
+ /// Récupère l'angle entre l'angle courant et a normalisé entre -pi et pi.
+ double getAngleDiff (double a) const;
+ /// Calcule l'erreur linéaire et angulaire pour atteindre un point,
+ /// retourne faux si atteind.
+ /// (x, y) : point à atteindre (mm).
+ /// el, ea : erreur linéaire et angulaire (-1..+1).
+ /// eps : distance en dessous de laquelle on considère qu'on est arrivé
+ /// (mm).
+ /// dist : Distance maximale du point de référence (mm).
bool computeError (double x, double y, double &el, double &ea, double eps,
double dist) const;
- // Calcule l'erreur angulaire pour atteindre un angle, retourne faux si
- // atteind.
+ /// Calcule l'erreur angulaire pour atteindre un angle, retourne faux si
+ /// atteind.
+ /// a : angle à atteindre (rad).
+ /// ea : erreur angulaire (-1..+1).
+ /// eps : angle en dessous duquel on considère qu'on est arrivé (rad).
bool computeAngleError (double a, double &ea, double eps) const;
- // Calcule la longueur de l'arc gauche et droite pour atteindre un point.
- // EPS précise la distance minimale. Renvois faux si atteind.
+ /// Calcule la longueur de l'arc gauche et droite pour atteindre un point.
+ /// EPS précise la distance minimale. Renvois faux si atteind.
+ /// \deprecated Pas vraiment l'algo qui faut.
bool computeArcs (double x, double y, double &l, double &r, double eps)
const;
- // Met à jour la position.
+ /// Met à jour la position.
void update (double dL, double dR);
};
-// Affiche la position.
+/// Affiche la position.
std::ostream &operator<< (std::ostream &os, const Tracker &t);
#endif // tracker_h