summaryrefslogtreecommitdiff
path: root/2004/i/nono/src/ovision/map.h
diff options
context:
space:
mode:
authorgaillaro2004-05-01 11:52:08 +0000
committergaillaro2004-05-01 11:52:08 +0000
commit109db2b0cce1b89c75e32f3705a1c5975391b3c5 (patch)
tree28da709aee1cbab296b99378e42a1e737403addf /2004/i/nono/src/ovision/map.h
parentf95f1fb2bc439178a9e7ca6102b57c02c791f3f0 (diff)
Ajout de ovision.
Diffstat (limited to '2004/i/nono/src/ovision/map.h')
-rw-r--r--2004/i/nono/src/ovision/map.h107
1 files changed, 107 insertions, 0 deletions
diff --git a/2004/i/nono/src/ovision/map.h b/2004/i/nono/src/ovision/map.h
new file mode 100644
index 0000000..7e507f1
--- /dev/null
+++ b/2004/i/nono/src/ovision/map.h
@@ -0,0 +1,107 @@
+#ifndef map_h
+#define map_h
+// map.h - classe Map
+// nono - Programme du robot Efrei Robotique I1-I2 2004
+// Copyright (C) 2004 Olivier Gaillard
+
+#include <list>
+#include "group.h"
+#include "config.h"
+
+#define LOCKED 1
+#define UNLOCKED 0
+
+
+
+/// TODO calcul de plusieurs scores si on veut rapidite ou efficacite
+
+
+/// Structure stockant les balles
+struct BALL {
+ /// position de la balle
+ int position[2];
+
+ /// score balle pour le choix de la prochaine balle a aller chercher
+ int score;
+
+ /// score precalcule sans distance pour eviter les calculs redondants
+ int preScore;
+
+ // zone balle, facilite le calcul de la distance robot-balle
+ int zone;
+
+ /// probabilite que la balle sot a la zone indique par la map
+ int skepticism;
+
+ /// balle vu seulement partiellement par la camera
+ int partial;
+};
+
+
+/// Classe Map
+class Map
+{
+ /// Variables configurables
+ Config *config;
+
+ /// position des goals
+ int posGoal[2];
+
+ /// Liste de balles trouvees
+ std::list<BALL> ball;
+
+ /// Balle ayant le plus haut score
+ std::list<BALL>::iterator curBall;
+
+ /// Stocke le numero de la balle locke
+ int lock;
+
+ /// Ajoute une balle a la map
+ void AddBall(int *pos, ZONE *pZone);
+
+ /// Supprime une balle de la map
+ void DelBall(std::list<BALL>::iterator &iter);
+
+ /// Test si une balle trouvĂ correspond a une balle de la map
+ int TestSimilarBall(ZONE *pBall , std::list<BALL>::iterator &iter);
+
+ /// Distance robot-balle
+ int Dist(int *pos1, int *pos2);
+
+
+
+ public:
+
+ /// Balle ayant la plus grand score
+ int goodBall;
+
+ /// Zone ou est situe le robot
+ int zoneRobot;
+
+ /// Constructeurs.
+ Map (Config *config);
+
+ /// Destructeur.
+ ~Map (void);
+
+ /// Retourne si une balle est locke
+ int IsLock();
+
+ /// Lock une balle pour savoir quel balle le robot suit
+ void SetLock(int value);
+
+ /// Ajoute des balles a la liste
+ void AddBallsToMap(Group *group);
+
+ /// Met a jour les scores des balles
+ void UpdateMap();
+
+ //Affiche les balles de la map
+ void ShowBalls();
+
+
+ protected:
+};
+
+
+#endif // map_h