diff --git a/simulation/qtcreator-files/paprikaSimulateur/paprikaSimulateur.pro b/simulation/qtcreator-files/paprikaSimulateur/paprikaSimulateur.pro index 2c4e01e9aa375f6ed36eb696586e921d08856462..4e8f07aed9c6d41b9e223bb8129f4331bc9d8e00 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 0000000000000000000000000000000000000000..23f3df27d348b29521f811fe5ccd7d8f9d9a4496 --- /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 009b4d5f8669aa984d5c4c4107a6dd7861030a60..9871cb510b195efa0056a6b09d6be217098e80ef 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 0c7425f1e0408826f1e61158a17508156a004043..665d207a55138422a0be2b1a4f2cf4a153f00914 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 bade3a33f1920e7aaa08fd1fa2824c9c9b0a1719..39dfee0b9122365dad9e41a2939ca2233e6a6527 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 0000000000000000000000000000000000000000..7a3e4b65ca221e9207adebc3947ba311d082c258 --- /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 86a6ed4ce9053d3181afc71ea814f830f3cb0620..d9f2e170fd4f69c067c10442ade4eaa2384bee78 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 b8bdaed9e309da614118363cc276f35ebfc2c67e..9342c680c4f8ab0a08630837f599d62c38c5bb3a 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 a6636a86ead6cad457310106bd0030f3d215d654..573a91ea19497f478691c8b9dea533ccc8ec244b 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++; }