summaryrefslogtreecommitdiff
path: root/2004/i/nono/src/motor/tracker.h
diff options
context:
space:
mode:
Diffstat (limited to '2004/i/nono/src/motor/tracker.h')
-rw-r--r--2004/i/nono/src/motor/tracker.h21
1 files changed, 14 insertions, 7 deletions
diff --git a/2004/i/nono/src/motor/tracker.h b/2004/i/nono/src/motor/tracker.h
index 63c58b2..9648e3e 100644
--- a/2004/i/nono/src/motor/tracker.h
+++ b/2004/i/nono/src/motor/tracker.h
@@ -27,6 +27,7 @@
#include "logger/log.h"
#include <iostream>
+#include <cmath>
/// Classe de suivi des coordonnée et de calcul d'erreur.
class Tracker
@@ -54,19 +55,16 @@ class Tracker
double getY (void) const { return posY_; }
/// Get angle.
double getAngle (void) const { return angle_; }
+ /// Get distance.
+ double getDistance (double x, double y) const;
/// Retourne vrai si arrété.
bool stopped (void) { return zero_ > 10; }
/// 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.
+ /// Calcule l'erreur linéaire et angulaire pour atteindre un point.
/// (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;
+ void computeError (double x, double y, double &el, double &ea) const;
/// Calcule l'erreur angulaire pour atteindre un angle, retourne faux si
/// atteind.
/// a : angle à atteindre (rad).
@@ -85,4 +83,13 @@ class Tracker
/// Affiche la position.
std::ostream &operator<< (std::ostream &os, const Tracker &t);
+/// Get distance.
+inline double
+Tracker::getDistance (double x, double y) const
+{
+ double dx = x - posX_;
+ double dy = y - posY_;
+ return sqrt (dx * dx + dy * dy);
+}
+
#endif // tracker_h