From 49e97cf3adf7589f0bdf0a17fda0b86f380afb5a Mon Sep 17 00:00:00 2001 From: Guillaume Buret Date: Mon, 21 Mar 2016 16:01:47 +0100 Subject: [PATCH] =?UTF-8?q?ajout=20de=20la=20classe=20CubeDebut,=20qui=20s?= =?UTF-8?q?'occupe=20des=20cubes=20devant=20la=20ligne=20d'arriv=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../paprikaSimulateur/paprikaSimulateur.pro | 2 + stm32/include/strategie/cubeDebut.h | 25 +++++++ stm32/include/strategie/etape.h | 1 + stm32/include/strategie/krabi2016.h | 1 + stm32/src/initkrabi.cpp | 4 +- stm32/src/strategie/cubeDebut.cpp | 67 +++++++++++++++++++ stm32/src/strategie/etape.cpp | 4 ++ stm32/src/strategie/krabi2016.cpp | 23 ++++--- stm32/src/strategie/zoneConstruction.cpp | 2 +- 9 files changed, 118 insertions(+), 11 deletions(-) create mode 100644 stm32/include/strategie/cubeDebut.h create mode 100644 stm32/src/strategie/cubeDebut.cpp diff --git a/simulation/qtcreator-files/paprikaSimulateur/paprikaSimulateur.pro b/simulation/qtcreator-files/paprikaSimulateur/paprikaSimulateur.pro index 2c4e01e9..4e8f07ae 100644 --- a/simulation/qtcreator-files/paprikaSimulateur/paprikaSimulateur.pro +++ b/simulation/qtcreator-files/paprikaSimulateur/paprikaSimulateur.pro @@ -109,6 +109,7 @@ HEADERS += \ ../../include/actionneurs/fishingNet.h \ ../../include/actionneurs/parasol.h \ ../../include/strategie/benne.h \ + ../../include/strategie/cubeDebut.h \ ../../include/clock.h @@ -189,6 +190,7 @@ SOURCES += \ ../../src/strategie/cabine.cpp \ ../../src/strategie/benne.cpp \ ../../src/strategie/zoneConstruction.cpp \ + ../../src/strategie/cubeDebut.cpp \ ../../src/actionneurs/fishingNet.cpp \ ../../src/actionneurs/parasol.cpp \ ../../src/clock.cpp diff --git a/stm32/include/strategie/cubeDebut.h b/stm32/include/strategie/cubeDebut.h new file mode 100644 index 00000000..23f3df27 --- /dev/null +++ b/stm32/include/strategie/cubeDebut.h @@ -0,0 +1,25 @@ +#ifndef CUBEDEBUT_H +#define CUBEDEBUT_H + +#include "position.h" +#include "mediumLevelAction.h" +#include "command.h" + +class CubeDebut : public MediumLevelAction +{ +public: + CubeDebut(); + + CubeDebut(Position position); + + ~CubeDebut(); + + int update(); + + Etape::EtapeType getType(); + +protected: + Position position; +}; + +#endif // CUBEDEBUT_H diff --git a/stm32/include/strategie/etape.h b/stm32/include/strategie/etape.h index 009b4d5f..9871cb51 100644 --- a/stm32/include/strategie/etape.h +++ b/stm32/include/strategie/etape.h @@ -22,6 +22,7 @@ public: CABINE = 8, ZONE_CONSTRUCTION = 9, + CUBE_DEBUT = 10, POINT_PASSAGE = 0, COLLECT = 1, diff --git a/stm32/include/strategie/krabi2016.h b/stm32/include/strategie/krabi2016.h index 0c7425f1..665d207a 100644 --- a/stm32/include/strategie/krabi2016.h +++ b/stm32/include/strategie/krabi2016.h @@ -18,6 +18,7 @@ #include "manipulationCoinGaucheHaut.h" #include "manipulationCoinGaucheHautPiedSolitaire.h" #include "benne.h" +#include "cubeDebut.h" class Krabi2016 : public StrategieV3 { diff --git a/stm32/src/initkrabi.cpp b/stm32/src/initkrabi.cpp index bade3a33..39dfee0b 100644 --- a/stm32/src/initkrabi.cpp +++ b/stm32/src/initkrabi.cpp @@ -1,12 +1,12 @@ #include "initkrabi.h" #ifdef ROBOTHW -InitKrabi::InitKrabi() : Initialisation(PositionPlusAngle(Position(194, 1000), 0)) +InitKrabi::InitKrabi() : Initialisation(PositionPlusAngle(Position(194, 900), 0)) { } #else #include -InitKrabi::InitKrabi(bool yellow, Robot* robot) : Initialisation(PositionPlusAngle(Position(194, 1000), 0), yellow, robot) +InitKrabi::InitKrabi(bool yellow, Robot* robot) : Initialisation(PositionPlusAngle(Position(194, 900), 0), yellow, robot) { qDebug() << "InitKrabi " << robot; } diff --git a/stm32/src/strategie/cubeDebut.cpp b/stm32/src/strategie/cubeDebut.cpp new file mode 100644 index 00000000..7a3e4b65 --- /dev/null +++ b/stm32/src/strategie/cubeDebut.cpp @@ -0,0 +1,67 @@ +#include "cubeDebut.h" +#include "strategieV2.h" +#include "mediumLevelAction.h" +#include "command.h" +#include "position.h" + +#ifndef ROBOTHW +#include +#endif + +CubeDebut::CubeDebut(){} + +CubeDebut::CubeDebut(Position goalPosition):MediumLevelAction(goalPosition) +{ + goalPosition = this->goalPosition; +} + +CubeDebut::~CubeDebut(){} + +Etape::EtapeType CubeDebut::getType() +{ + return Etape::CUBE_DEBUT; +} + +int CubeDebut::update() +{ + + if (status == 0) //Début + { + StrategieV2::setCurrentGoal(this->getGoalPosition(), false, VITESSE_LINEAIRE_MAX, -100.0, 100.f); +#ifndef ROBOTHW + qDebug() << "Poussage des cubes devant la zone de depart"; +#endif + status++; + } + + else if (status == 1) { + if (Command::isNear(this->getGoalPosition(), 100.0f)) // le second paramètre est la distance a l'objectif + { + // après avoir poussé les cubes on revient en marche arrière + StrategieV2::setCurrentGoal(Position(600, 900), true, VITESSE_LINEAIRE_MAX, -100.0, 10.f); +#ifndef ROBOTHW + qDebug() << "On revient au bercail"; +#endif + status++; + } + } + + else if (status == 2) { + if (Command::isNear(Position(600, 900), 10.0f)) // le second paramètre est la distance a l'objectif + { +#ifndef ROBOTHW + qDebug() << "On est revenu au bercail"; +#endif + status++; + } + } + + else if (status == 3) { +#ifndef ROBOTHW + qDebug() << "Etape poussage des cubes finie"; +#endif + status = -1; + } + + return status; +} diff --git a/stm32/src/strategie/etape.cpp b/stm32/src/strategie/etape.cpp index 86a6ed4c..d9f2e170 100644 --- a/stm32/src/strategie/etape.cpp +++ b/stm32/src/strategie/etape.cpp @@ -375,6 +375,8 @@ QString Etape::getNameType(EtapeType type) return "Tapis"; case DEPOSER_GOBELET: return "Déposer Gobelet"; + case CUBE_DEBUT: + return "Pousser les cubes a l'init"; default: return QString::number(type); } @@ -404,6 +406,8 @@ QString Etape::getShortNameType(EtapeType type) return "Tapis"; case DEPOSER_GOBELET: return "D.G"; + case CUBE_DEBUT: + return "Cube debut"; default: return ""; } diff --git a/stm32/src/strategie/krabi2016.cpp b/stm32/src/strategie/krabi2016.cpp index b8bdaed9..9342c680 100644 --- a/stm32/src/strategie/krabi2016.cpp +++ b/stm32/src/strategie/krabi2016.cpp @@ -19,11 +19,14 @@ Krabi2016::Krabi2016(bool isYellow) : StrategieV3(isYellow) // Création des étapes // Les étapes correspondant à des actions sont créées automatiquement lors de l'ajout d'actions - int start = Etape::makeEtape(Position(250, 1000, true), Etape::DEPART); // départ au fond de la zone de départ + int start = Etape::makeEtape(Position(250, 900, true), Etape::DEPART); // départ au fond de la zone de départ /** Points de passage **/ - int wa = Etape::makeEtape(Position(600, 1000, true)); - int wb = Etape::makeEtape(Position(880, 1140, true)); + int wa = Etape::makeEtape(Position(600, 900, true)); + int wb = Etape::makeEtape(Position(680, 740, true)); + + // On crée l'étape "pousse les cubes du début" + int c1 = Etape::makeEtape(new CubeDebut(Position(900, 900, true))); /** Actions **/ @@ -33,8 +36,8 @@ Krabi2016::Krabi2016(bool isYellow) : StrategieV3(isYellow) // Pieds - int pa = Etape::makeEtape(new RamasserPied(Position(870, 1655, true))); - int pb = Etape::makeEtape(new RamasserPied(Position(1100, 1670, true))); + int pa = Etape::makeEtape(new RamasserPied(Position(970, 260, true))); + int pb = Etape::makeEtape(new RamasserPied(Position(1200, 260, true))); // Etc. @@ -44,6 +47,7 @@ Krabi2016::Krabi2016(bool isYellow) : StrategieV3(isYellow) Etape::get(start) ->addVoisin(wa); Etape::get(wa) ->addVoisin(wb, zc2); Etape::get(wa) ->addVoisin(zc1); + Etape::get(c1) ->addVoisin(wa); Etape::get(wb) ->addVoisin(zc2); Etape::get(pa) ->addVoisin(wb, zc2); Etape::get(pb) ->addVoisin(pa, zc2); @@ -81,20 +85,23 @@ int Krabi2016::getScoreEtape(int i) return 1; } else { - return 10000; + return 1000; } } + case Etape::CUBE_DEBUT : + return 10000; + case Etape::RAMASSER_PIED : { // On fait comme si on avait rammasé un cube, du coup la benne est pleine, en vrai on fera // tout ça dans la future classe cube benne->setBenneFull(); - return 900; + return 100; } default : - return 10; /* DEBUG (0 sinon) */ + return 1; /* DEBUG (0 sinon) */ } } diff --git a/stm32/src/strategie/zoneConstruction.cpp b/stm32/src/strategie/zoneConstruction.cpp index a6636a86..573a91ea 100644 --- a/stm32/src/strategie/zoneConstruction.cpp +++ b/stm32/src/strategie/zoneConstruction.cpp @@ -32,7 +32,7 @@ int ZoneConstruction::update() #ifndef ROBOTHW qDebug() << "Zone Construction"; #endif - StrategieV2::setCurrentGoal(this->getGoalPosition(), false, VITESSE_LINEAIRE_MAX, -100.0, 200.f); + //StrategieV2::setCurrentGoal(this->getGoalPosition(), false, VITESSE_LINEAIRE_MAX, -100.0, 200.f); status++; } -- GitLab