From ecedb2e9f7e3dd8070d0436eb042bdf113470a21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Payen=20de=20La=20Garanderie?= <gregoire.payendelagaranderie@telecom-bretagne.eu> Date: Fri, 15 Apr 2011 02:40:16 +0200 Subject: [PATCH] Simplification du design de la classe Odometrie pour la simulation. --- stm32/include/odometrie.h | 13 ++++++---- stm32/include/simul/robot.h | 2 +- stm32/src/simul/robot.cpp | 50 +++++++++++++++++-------------------- 3 files changed, 32 insertions(+), 33 deletions(-) diff --git a/stm32/include/odometrie.h b/stm32/include/odometrie.h index ad5597bd..5d52e582 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 d02e09f2..5855d1fb 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 25a3a5e4..97262af5 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; -- GitLab