From e192dad315141d3435010e7db3567140e0db9b27 Mon Sep 17 00:00:00 2001 From: gaillaro Date: Wed, 19 May 2004 22:31:34 +0000 Subject: version testée --- 2004/i/nono/runtime/rc/dist | 42 +++++++++++++++++++++++++-- 2004/i/nono/runtime/rc/poids | 16 +++++------ 2004/i/nono/runtime/rc/vision.conf | 18 ++++++++++-- 2004/i/nono/src/ovision/group.cc | 15 ++++++++++ 2004/i/nono/src/ovision/map.cc | 58 ++++++++++++++++++++++---------------- 2004/i/nono/src/ovision/map.h | 8 ++---- 2004/i/nono/src/ovision/space.cc | 6 +++- 2004/i/nono/src/ovision/space.h | 4 +++ 8 files changed, 123 insertions(+), 44 deletions(-) (limited to '2004') diff --git a/2004/i/nono/runtime/rc/dist b/2004/i/nono/runtime/rc/dist index 6726d36..5f095ad 100644 --- a/2004/i/nono/runtime/rc/dist +++ b/2004/i/nono/runtime/rc/dist @@ -1,4 +1,40 @@ #imgX imgY distX distY -109 436 150 900 -84 402 150 600 -50 459 150 300 +65 9 -100 295 +198 10 0 295 +334 11 100 295 +319 54 100 345 +197 55 0 345 +79 53 -100 345 +90 88 -100 395 +196 90 0 395 +305 89 100 395 +292 118 100 445 +283 143 100 495 +275 163 100 545 +269 182 100 595 +192 180 0 595 +192 162 0 545 +193 143 0 495 +195 120 0 445 +196 90 0 395 +197 55 0 345 +98 119 -100 445 +107 142 -100 495 +113 161 -100 545 +118 180 -100 595 +122 194 -100 645 +191 194 0 645 +264 195 100 645 +258 209 100 695 +250 236 100 795 +72 241 -200 795 +132 241 -100 795 +191 241 0 795 +312 244 200 795 +244 250 100 895 +290 267 200 995 +341 267 300 995 +239 265 100 995 +189 264 0 995 +141 264 -100 995 +92 263 -200 995 diff --git a/2004/i/nono/runtime/rc/poids b/2004/i/nono/runtime/rc/poids index 598a99d..289da29 100644 --- a/2004/i/nono/runtime/rc/poids +++ b/2004/i/nono/runtime/rc/poids @@ -1,10 +1,10 @@ YUV -3 // Index de la couleur des balles -2 // Index de la couleur des poteaux +2 // Index de la couleur des balles +1 // Index de la couleur des poteaux #index #x1 x2 x3 -0 41 91 169 -1 93 59 182 -2 42 117 48 -3 111 56 24 -4 241 244 138 -5 112 96 70 +0 94 110 220 +1 22 96 37 +2 157 46 48 +3 30 163 61 +4 65 152 213 +5 189 182 118 diff --git a/2004/i/nono/runtime/rc/vision.conf b/2004/i/nono/runtime/rc/vision.conf index a3f7555..6fed957 100644 --- a/2004/i/nono/runtime/rc/vision.conf +++ b/2004/i/nono/runtime/rc/vision.conf @@ -3,7 +3,6 @@ ############################################# Hauteur_Image = 352 Largeur_Image = 288 -Source = usbcam ############################################# # Segm # @@ -14,13 +13,24 @@ NN_Number_Iteration_Learning = 5000 NN_Nombre_Couleurs = 6 NN_Influence_Luminosite = 0.5 NN_Lazy_Threshold = 3 +NN_Threshold_Output = 10000 +############################################# +# Group # +############################################# +Minimum_Length_Zone = 20 + +############################################# +# Space # +############################################# +One_NN_Learning_Rate = 0.00000001 +One_NN_Learning_Iteration = 100000 ############################################# # Map # ############################################# -Map_Error = 5 -Map_Error_Part = 20 +Map_Error = 40 +Map_Error_Part = 70 Angle_Ball = 1 Distante_Ball_Robot = 1 @@ -29,6 +39,8 @@ Ball_Density = 1 Ennemy_Presence = 1 Ball_Precision = 1 Skepticism = 2 +Ball_Lost = 3 +Ball_Bottom_Time_Out = 10 Skepticism_Max = 200 diff --git a/2004/i/nono/src/ovision/group.cc b/2004/i/nono/src/ovision/group.cc index d09445c..9c9c158 100644 --- a/2004/i/nono/src/ovision/group.cc +++ b/2004/i/nono/src/ovision/group.cc @@ -256,6 +256,21 @@ void Group::JumpPoints(unsigned char numColorBall, unsigned char numColorGoal) { } } + ZONE *pCur; + for (int k=0; k<2; k++) + { + if (k == 0) pCur = zoneListBall; + else if (k == 1) pCur = zoneListGoal; + + while (pCur) + { + pCur->ymax = img->height - pCur->ymax; + pCur = pCur->next; + } + } + + + } diff --git a/2004/i/nono/src/ovision/map.cc b/2004/i/nono/src/ovision/map.cc index d166755..d90b2bd 100644 --- a/2004/i/nono/src/ovision/map.cc +++ b/2004/i/nono/src/ovision/map.cc @@ -38,6 +38,7 @@ Map::~Map (void) } +/// Donne la position dans le référentiel de la table void Map::GetPosFromLoc (int locImgX, int locImgY, double &posX, double &posY) { @@ -138,7 +139,7 @@ Map::SetLock(bool value) /// Donne la position de la balle la plus proche ou locke bool -Map::getCurBallPos (double &x, double &y) +Map::GetCurBallPos (double &x, double &y) { if (checkCurBall == true) { @@ -177,6 +178,7 @@ Map::AddBallsToMap(Group *group) { ZONE *pCur = group->zoneListBall; double pos[2]; + double centYMax = 900; // bool ballLost = 1; @@ -189,6 +191,7 @@ Map::AddBallsToMap(Group *group) // On choppe la position par rapport au robot space->GetLoc (pCur->centerx, pCur->centery, pos[0], pos[1]); + // Cherche si la balle est deja dans la liste list::iterator iCur; @@ -196,32 +199,39 @@ Map::AddBallsToMap(Group *group) if (1) //TODO (pos[0] < TABLE_WIDTH) && (pos[1] < TABLE_HEIGHT)) { // Si la balle n'est pas dans la liste on l'ajoute -// if (!TestSimilarBall(pCur, iCur)) -// { - AddBall(pos, pCur); -/* } + // if (!TestSimilarBall(pCur, iCur)) + // { + AddBall(pos, pCur); + /* } // Si elle l'est else + { + // on regarde si c'est la balle qui a ete locké + if (IsLock ()) + if (iCur == curBall) + ballLost = 0; + + // on incremente son marqueur de viabilite + if (iCur->skepticism < oconfig->skepticism_max) + iCur->skepticism++; + + if (pCur->centery <= iCur->precision) + { + ///TODO mis a jour de la position + iCur->position[0] = pCur->centerx; + iCur->position[1] = pCur->centery; + + iCur->bottom = pCur->bottom * oconfig->ball_bottom_time_out; + } + } + */ + checkCurBall = 1; + if (pCur->centery < centYMax) { - // on regarde si c'est la balle qui a ete locké - if (IsLock ()) - if (iCur == curBall) - ballLost = 0; - - // on incremente son marqueur de viabilite - if (iCur->skepticism < oconfig->skepticism_max) - iCur->skepticism++; - - if (pCur->centery <= iCur->precision) - { - ///TODO mis a jour de la position - iCur->position[0] = pCur->centerx; - iCur->position[1] = pCur->centery; - - iCur->bottom = pCur->bottom * oconfig->ball_bottom_time_out; - } + curBall = ball.end (); + centYMax = pCur->centery; } -*/ } + } pCur = pCur->next; } @@ -242,7 +252,7 @@ Map::AddBallsToMap(Group *group) if (pCur) { treeFound = 1; - space->GetLoc (pCur->centerx, pCur->ymin, posTree[0], posTree[1]); + space->GetLoc (pCur->centerx, pCur->ymax, posTree[0], posTree[1]); } else treeFound = 0; diff --git a/2004/i/nono/src/ovision/map.h b/2004/i/nono/src/ovision/map.h index ab958a5..d753526 100644 --- a/2004/i/nono/src/ovision/map.h +++ b/2004/i/nono/src/ovision/map.h @@ -15,10 +15,6 @@ #define UNLOCKED 0 - -/// TODO calcul de plusieurs scores si on veut rapidite ou efficacite - - /// Structure stockant les balles struct tBALL { /// position de la balle @@ -125,6 +121,7 @@ class Map //Affiche les balles de la map void ShowBalls (); + /// Donne la position du 1er arbre trouvé sur la map bool GetTreePos (double &x, double &y); /// Accessors @@ -133,8 +130,9 @@ class Map /// Donne la position de la balle la plus proche ou locke /// Retourne NULL si la balle locke est perdu - bool getCurBallPos (double &x, double &y); + bool GetCurBallPos (double &x, double &y); + /// Donne la position dans le référentiel de la table void GetPosFromLoc (int locImgX, int locImgY, double &posX, double &posY); protected: diff --git a/2004/i/nono/src/ovision/space.cc b/2004/i/nono/src/ovision/space.cc index 4b0ad30..8f04ebd 100644 --- a/2004/i/nono/src/ovision/space.cc +++ b/2004/i/nono/src/ovision/space.cc @@ -31,7 +31,8 @@ Space::~Space () { } - + +/// Cree un fichier gnuplot avec la courbe des points donnés par la courbe x et y void Space::CreateGnuPlotFile (int y) { FILE *file; @@ -82,6 +83,7 @@ Space::LoadFromFile() } +/// Donne les coefficients d'une ligne void Space::FindCoeffLine (double x1, double y1, double x2, double y2, double &a, double &b) { @@ -142,6 +144,8 @@ Space::GetLoc(int locImgX, int locImgY, double &locX, double &locY) } + +/// Position d'un objet dans le referentiel du robot void Space::GetLoc(int locImgX, int locImgY, int &locX, int &locY) { diff --git a/2004/i/nono/src/ovision/space.h b/2004/i/nono/src/ovision/space.h index 2668e76..a30472d 100644 --- a/2004/i/nono/src/ovision/space.h +++ b/2004/i/nono/src/ovision/space.h @@ -71,9 +71,13 @@ class Space protected: + /// Donne les coefficients d'une ligne void FindCoeffLine (double x1, double y1, double x2, double y2, double &a, double &b); + /// Cree un fichier gnuplot avec la courbe des points donnés par la courbe x et y void CreateGnuPlotFile (int y = 100); + + /// Cree un fichier avec l'erreur en fonction des itérations void LogErrorPoint (FILE *f, int iter); }; -- cgit v1.2.3