diff --git a/stm32/include/odometrie.h b/stm32/include/odometrie.h index ad5597bd4209e00fe00bdfdb591bb358fd2b5db9..5d52e5823c24960a36d4a401043e4cd16321df92 100755 --- a/stm32/include/odometrie.h +++ b/stm32/include/odometrie.h @@ -7,12 +7,15 @@ #ifndef ROBOTHW class Odometrie { +private: + class Robot* robot; public: - virtual PositionPlusAngle getPos()=0; - virtual void setPos(PositionPlusAngle p)=0; - virtual Angle getVitesseAngulaire()=0; - virtual Distance getVitesseLineaire()=0; - virtual void update() { }; + Odometrie(Robot* robot); + PositionPlusAngle getPos(); + void setPos(PositionPlusAngle p); + Angle getVitesseAngulaire(); + Distance getVitesseLineaire(); + void update() { }; }; #else diff --git a/stm32/include/simul/robot.h b/stm32/include/simul/robot.h index d02e09f2ec1008f8de07eb256c2ce21de362cf80..5855d1fb3cb15453c006859c719a12322922132d 100644 --- a/stm32/include/simul/robot.h +++ b/stm32/include/simul/robot.h @@ -18,7 +18,7 @@ public: PositionPlusAngle deriv; boost::circular_buffer<PositionPlusAngle> olds; class Asservissement* asservissement; - class OdoRobot* odometrie; + class Odometrie* odometrie; class Strategie* strategie; b2Body* body; diff --git a/stm32/src/simul/robot.cpp b/stm32/src/simul/robot.cpp index 25a3a5e419127bcc1e3eaa2ce6395715aad4c0b7..97262af5c2d1dbb006d5a9f397e01d4a8ed3ca0e 100644 --- a/stm32/src/simul/robot.cpp +++ b/stm32/src/simul/robot.cpp @@ -8,37 +8,33 @@ #include "strategie.h" #include <iostream> -class OdoRobot : public Odometrie +//Odometrie class implementation for the simulation +//Yes, it's ugly ! it should not be in this file. +//But in a separate file +Odometrie::Odometrie(Robot* robot) { -private: - Robot* robot; - -public: - OdoRobot(Robot* robot) - { - this->robot = robot; - } + this->robot = robot; +} - PositionPlusAngle getPos() - { - return robot->pos; - } +PositionPlusAngle Odometrie::getPos() +{ + return robot->pos; +} - Distance getVitesseLineaire() - { - return robot->deriv.position.getNorme(); - } +Distance Odometrie::getVitesseLineaire() +{ + return robot->deriv.position.getNorme(); +} - Angle getVitesseAngulaire() - { - return robot->deriv.angle; - } +Angle Odometrie::getVitesseAngulaire() +{ + return robot->deriv.angle; +} - void setPos(PositionPlusAngle p) - { - robot->pos = p; - } -}; +void Odometrie::setPos(PositionPlusAngle p) +{ + robot->pos = p; +} Robot::Robot(b2World & world) : world(world), olds(10000) @@ -50,7 +46,7 @@ Robot::Robot(b2World & world) : world(world), olds(10000) joint = NULL; level = 0; - odometrie = new OdoRobot(this); + odometrie = new Odometrie(this); asservissement = new Asservissement(odometrie); strategie = new Strategie(true, odometrie); asservissement->strategie = strategie;