From dcb901c549f81eb8124458448ce40e305a98fd4d Mon Sep 17 00:00:00 2001 From: haller Date: Sun, 17 Apr 2005 02:32:07 +0000 Subject: Corrections de quelques erreurs de syntaxe classe à tester avec un port série --- 2005/i/robert/src/asserv/asserv.hh | 197 +++++++++++++++++++------------------ 1 file changed, 100 insertions(+), 97 deletions(-) (limited to '2005/i/robert/src/asserv/asserv.hh') diff --git a/2005/i/robert/src/asserv/asserv.hh b/2005/i/robert/src/asserv/asserv.hh index ef6a715..34e6f06 100644 --- a/2005/i/robert/src/asserv/asserv.hh +++ b/2005/i/robert/src/asserv/asserv.hh @@ -33,106 +33,109 @@ /// Classe de dialogue avec la carte d'asservissement. class Asserv : public NonCopyable, public Proto::Receiver { - /// Les clients de Asserv doivent dériver de Receiver. - class Receiver - { - public: - /// Recoit un packet. - virtual void receiveCounter (double lMotor, double rMotor) = 0; - virtual void receivePosition (double command) = 0; - virtual void receivePosX (double xPos) = 0; - virtual void receivePosY (double yPos) = 0; - virtual void receivePosA (double aPos) = 0; - virtual void receiveMotor (int oldLSpeed_e, int LSpeed_int, int oldRSpeed_e, int RSpeed_int) = 0; - virtual void receivePwm (double leftPwm, double rightPwm) = 0; - virtual void receiveTiming (double motorTimer5, double motorTimer4, - double motorTimer3, double motorTimer2, - double motorTimer1, - double motorTimer0 ) = 0; - virtual void receiveInPort (double command) = 0; - virtual void jaifini (void) = 0; - }; - - // Communication avec l'AVR - Proto proto_; - std::string ttyName_; - Receiver & receiver_; - // Paramètre de l'avr - int16_t footing_; - double epsilon_; - double accel_; - double kp_; - double ki_; - double kd_; - double maxSpeed_; - double maxPwn_; - // Stat - double pCounter_; - double pPosition_; - double pMotor_; - double pPwm_; - double pTiming_; - double pStatInPort_; + public: + /// Les clients de Asserv doivent dériver de Receiver. + class Receiver + { + public: + /// Recoit un packet. + virtual void receiveCounter (double lMotor, double rMotor) = 0; + virtual void receivePosX (double xPos) = 0; + virtual void receivePosY (double yPos) = 0; + virtual void receivePosA (double aPos) = 0; + virtual void receiveMotor (int oldLSpeed_e, int LSpeed_int, int oldRSpeed_e, int RSpeed_int) = 0; + virtual void receivePwm (double leftPwm, double rightPwm) = 0; + virtual void receiveTiming (double motorTimer5, double motorTimer4, + double motorTimer3, double motorTimer2, + double motorTimer1, + double motorTimer0 ) = 0; + virtual void receiveInPort (double command) = 0; + virtual void jaifini (void) = 0; + }; - // Unités - double mmPpas_; - double sPperiod_; - double pwmMax_; - - // Système de log. - Log log_; - public: - /// Constructeur. - Asserv (const Config & config, Asserv::Receiver & receiver); - /// Reset la carte et envois les paramètres. - void reset (void); - /// Essaie de purger la liste d'émission et indique si elle est vide. - bool sync (void); - /// Attend que toute les émissions soit terminées. - bool wait (int timeout = -1); - /// Commandes asservissement - void linearMove(double distance); - void angularMove(double angle); - void goToPosition(double xPos, double yPos); - void fuckTheWall(double speed); - void setSpeed(double xSpeed = 0, double ySpeed = 0); - void setPwm(double leftPwm = 0, double rightPwm = 0); - void finishAck(void); //met le paramètre F à 0 - /// Statistiques - void statCounter(double period = 0); - void statPosition(double period = 0); - void statMotor(double period = 0); - void statPwm(double period = 0); - void statTiming(double period = 0); - void statInPort(double period = 0); - //@{ - /// Change les paramètres de la carte. - void setXPos(double pos); - void setYPos(double pos); - void setAngle(double angle); - void setFooting(int16_t dist); - void setEpsilon(double e); - void setKp (double kp); - void setKi (double ki); - void setKd (double kd); - void setSpeedIntMax (int16_t maxInt); - void setAccel (double accel); - void setMaxSpeed(double maxSpeed); - //@} + private: - /// implémentation du proto::Receiver - void receive (char command, const Proto::Frame &frame); + // Communication avec l'AVR + Proto proto_; + std::string ttyName_; + Receiver & receiver_; + // Paramètre de l'avr + int16_t footing_; + double epsilon_; + double accel_; + double kp_; + double ki_; + double kd_; + int16_t speedIntMax_; + double maxSpeed_; + double maxPwn_; + // Stat + double pCounter_; + double pPosition_; + double pMotor_; + double pPwm_; + double pTiming_; + double pStatInPort_; - private: - /// Charge les données de la classe config - void loadConfig(const Config & config); - /// Fonctions de conversion - int mm2pasD(double dist); //Format 24/8 - int radTo256(double angle, bool format24eme = false); //Format 8 ou 8/24 - int mms2ppp(double vitesse); // Format 8 - int rCycl2Pwm(double rCycl); // Format 16 - int s2period(double period); // Format 8 - int mmps2ppperiod(double accel); //Format 8 (1 vitesse par x period) + // Unités + double mmPpas_; + double sPperiod_; + double pwmMax_; + + // Système de log. + Log log_; + public: + /// Constructeur. + Asserv (const Config & config, Asserv::Receiver & receiver); + /// Reset la carte et envois les paramètres. + void reset (void); + /// Essaie de purger la liste d'émission et indique si elle est vide. + bool sync (void); + /// Attend que toute les émissions soit terminées. + bool wait (int timeout = -1); + /// Commandes asservissement + void linearMove(double distance); + void angularMove(double angle); + void goToPosition(double xPos, double yPos); + void fuckTheWall(double speed); + void setSpeed(double xSpeed = 0, double ySpeed = 0); + void setPwm(double leftPwm = 0, double rightPwm = 0); + void finishAck(void); //met le paramètre F à 0 + /// Statistiques + void statCounter(double period = 0); + void statPosition(double period = 0); + void statMotor(double period = 0); + void statPwm(double period = 0); + void statTiming(double period = 0); + void statInPort(double period = 0); + //@{ + /// Change les paramètres de la carte. + void setXPos(double pos); + void setYPos(double pos); + void setAngle(double angle); + void setFooting(int16_t dist); + void setEpsilon(double e); + void setKp (double kp); + void setKi (double ki); + void setKd (double kd); + void setSpeedIntMax (int16_t maxInt); + void setAccel (double accel); + void setMaxSpeed(double maxSpeed); + //@} + + /// implémentation du proto::Receiver + void receive (char command, const Proto::Frame &frame); + + private: + /// Charge les données de la classe config + void loadConfig(const Config & config); + /// Fonctions de conversion + int mm2pasD(double dist); //Format 24/8 + int radTo256(double angle, bool format24eme = false); //Format 8 ou 8/24 + int mms2ppp(double vitesse); // Format 8 + int rCycl2Pwm(double rCycl); // Format 16 + int s2period(double period); // Format 8 + int mmps2ppperiod(double accel); //Format 8 (1 vitesse par x period) }; #endif // asserv_h -- cgit v1.2.3