#ifndef space_h #define space_h // space.h - Space class // nono - Programme du robot Efrei Robotique I1-I2 2004 // Copyright (C) 2004 Olivier Gaillard #include #include #include "group.h" #include "oconfig.h" #define NB_NODES_X 5 #define NB_NODES_Y 3 #define START_WEIGHT_MIN 0.1 #define START_WEIGHT_MAX 0.9 struct SETUP_POINT { int x, y; int distx, disty; }; /// Etalonnage des distances et localisation de la balle class Space { /// Classe config OConfig *oconfig; /// tableau d'index des distances double *tabX; double *tabY; /// liste des distances etalonnees std::vector setupTab; /// hautdddeur de l'image int imgHeight; /// largeur de l'image int imgWidth; double aY, bY, cY; public: // Constructeur Space (int width, int height); // Destructeur ~Space (); /// Position d'un objet dans le referentiel du robot void GetLoc(int locImgX, int locImgY, int &locX, int &locY); void GetLoc(int locImgX, int locImgY, double &locX, double &locY); /// Donne la position reelle sur la table de la balle void GetPos(double locX, double locY, double posRobotX, double posRobotY, double angleRobot, double &posX, double &posY); /// Ajoute un point pour l'etalonnage void AddSetupPoint(int x, int y, int distx, int disty); /// Chargement des points a partir d'un fichier void LoadFromFile(); /// Etalonnage des distances int Setup(double aY, double bY, double cY); 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); }; #endif // space_h