Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Timer by
Revision 64:24e1057a97f7, committed 2016-05-05
- Comitter:
- IceTeam
- Date:
- Thu May 05 01:30:14 2016 +0200
- Parent:
- 63:176d04975f06
- Child:
- 65:7bf11abfefc3
- Commit message:
- Test du code d'execution des objectifs et des nouvelles fonctionnalites du path finding
Changed in this revision
--- a/Map/Objectif/objectif.cpp Wed May 04 21:51:00 2016 +0000
+++ b/Map/Objectif/objectif.cpp Thu May 05 01:30:14 2016 +0200
@@ -1,14 +1,16 @@
#include "objectif.h"
-/* Dernier Changement : Romain 20h20 */
+/* Dernier Changement : Romain 0h20 */
-objectif::objectif (int ntype, float nx_obj, float ny_obj, float nthet_obj, AX12 * np, ControlleurPince * npince) {
+objectif::objectif (int ntype, float nx_obj, float ny_obj, float nthet_obj, Odometry * nCodo, AX12 * np, ControlleurPince * npince) {
Parasol = np;
pince = npince;
type = ntype;
x_objectif = nx_obj;
y_objectif = ny_obj;
thet_objectif = nthet_obj;
+ Codo = nCode;
+ marche_arrière = arr;
}
bool objectif::Action () {
@@ -22,10 +24,16 @@
default:
break;
}
+
+ if (marche_arrière != 0) {
+ odo->GotoDist(-marche_arrière);
+ }
}
bool objectif::obj_bloc_action () {
- return true;
+ /* Range : 0 -> 10 (cm). pince.home remet à 0 */
+ pince.home();
+ pince.setPos(3);
}
bool objectif::obj_para_action() {
--- a/Map/Objectif/objectif.h Wed May 04 21:51:00 2016 +0000
+++ b/Map/Objectif/objectif.h Thu May 05 01:30:14 2016 +0200
@@ -1,16 +1,17 @@
#ifndef OBJECTIF_H
#define OBJECTIF_H
-/* Dernier Changement : Romain 20h20
+/* Dernier Changement : Romain 0h20
Inclu dans : map.h */
#include "objectif_type.h"
#include "../../AX12/AX12.h"
+#include "../../Odometry/Odometry.h"
#include "../../ControlleurPince/ControlleurPince.h"
class objectif {
public:
- objectif (int ntype, float nx_obj, float ny_obj, float nthet_obj, AX12 * np, ControlleurPince * npince);
+ objectif (int ntype, float nx_obj, float ny_obj, float nthet_obj, Odometry * nCodo, AX12 * np, ControlleurPince * npince, float arr = 0);
bool Action ();
float getX() { return x_objectif; }
float getY() { return y_objectif; }
@@ -22,8 +23,10 @@
int type;
float x_objectif, y_objectif, thet_objectif;
+ float marche_arriere;
AX12 * Parasol;
ControlleurPince * pince;
+ Odometry * Codo;
};
#endif
\ No newline at end of file
--- a/Map/map.cpp Wed May 04 21:51:00 2016 +0000
+++ b/Map/map.cpp Thu May 05 01:30:14 2016 +0200
@@ -2,7 +2,27 @@
/* Dernier Changement : Romain 20h30 */
-map::map (Odometry* nodo, AX12 * np, ControlleurPince * npince) : Codo(nodo) {
+void map::Build_Objectives() {
+ if (couleur == VERT) {
+ addObj (objectif (OBJ_BLOC, 120, 1000, 0, Parasol, pince));
+ addObj (objectif (OBJ_BLOC, 120, 1000, 0, Parasol, pince, 10));
+ }
+ else {
+ addObj (objectif (OBJ_BLOC, 3000-120, 1000, 0, Parasol, pince));
+ addObj (objectif (OBJ_BLOC, 3000-120, 1000, 0, Parasol, pince));
+ }
+}
+
+map::map (Odometry* nodo, AX12 * np, ControlleurPince * npince, int ncouleur, int nformation) : Codo(nodo), Parasol(np), ControlleurPince(npince) {
+ couleur = ncouleur;
+ formation = nformation;
+
+ if (couleur == VERT) {
+ Codo->setPos(X_START_VERT, Y_START, 0);
+ }
+ else {
+ Codo->setPos(Y_START, Y_START, -PI);
+ }
}
void map::addObs (obsCarr nobs) {
@@ -195,39 +215,54 @@
endedParc = false;
}
+void map::Execute() {
+ for (int i = 0; i < objectifs.size();++i) {
+ Execute(i);
+ }
+}
+
void map::Build (int couleur, int formation) {
if (couleur == VERT) {
max_x_table = 1400;
- max_y_table = 1800;
- min_x_table = 0;
- min_y_table = 0;
+ max_y_table = 1900;
+ min_x_table = 100;
+ min_y_table = 100;
}
else {
max_x_table = 2900;
- max_y_table = 1800;
+ max_y_table = 1900;
min_x_table = 1600;
- min_y_table = 0;
+ min_y_table = 100;
}
if (couleur == VERT) {
+ // Attention les commentaires sont inversées par rapport aux valeur en x et y des obstacles.
+ // Il faut lire les commentaires de la façon dont la carte est présentée dans le règlement
+ // Un / signifie un point de départ. Milieu/Haut/Haut signifie que l'on part du milieu, que l'on va en haut puis encore en haut
+
addObs(obsCarr (0, 2000, 250, 150)); // Coté haut droite
addObs(obsCarr (200, 2000, 200, 50));
- addObs(obsCarr (800, 100, 100, 15));
+
+ addObs(obsCarr (800, 100, 100, 15)); // Petit obstacle en haut à gauche
}
else {
addObs(obsCarr (3000, 2000, 250, 150)); // Coté bas droite
addObs(obsCarr (2800, 2000, 200, 50));
- addObs(obsCarr (2200, 100, 100, 15));
+
+ addObs(obsCarr (2200, 100, 100, 15)); // Petit Obstacle en haut à gauche
}
- addObs(obsCarr (1500, 750, 1100, 15));
- addObs(obsCarr (1500, 1050, 20, 300));
+ addObs(obsCarr (1500, 750, 1100, 15)); // Obstacle du milieu à la verticale
+ addObs(obsCarr (1500, 1050, 20, 300)); // Vitre du milieu (horizontale)
if (formation == 1) {
Build_formation_1 (couleur);
}
+ if (formation == 2) {
+ Build_formation_2 (couleur);
+ }
else {
- addObs(obsCarr (1250, 1000, 220, 220));
+ addObs(obsCarr (1250, 1000, 220, 220)); // Obstacles du test standard hors-coupe. A ignorer
addObs(obsCarr (1500, 750, 220, 220));
addObs(obsCarr (1500, 1250, 220, 220));
}
@@ -235,17 +270,17 @@
void map::Build_formation_1 (int couleur) {
if (couleur == VERT) {
- addObs(obsCarr (200, 2000-450, 40, 40)); // Coquillages du haut droit
- addObs(obsCarr (200, 2000-750, 40, 40));
+ addObs(obsCarr (200, 2000-450, 40, 40)); // Coquillage du haut - droite
+ addObs(obsCarr (200, 2000-750, 40, 40)); // Coquillage sur le même axe horizontal
- addObs(obsCarr (900, 2000-550, 40, 40));
- addObs(obsCarr (1200, 2000-350, 40, 40)); // Coquillages du milieu/haut
+ addObs(obsCarr (900, 2000-550, 40, 40)); // Coqullage du milieu/haut/haut
+ addObs(obsCarr (1200, 2000-350, 40, 40)); // Coquillage du milieu/haut
- addObs(obsCarr (1500, 2000-550, 40, 40));
- addObs(obsCarr (1500, 2000-350, 40, 40));
+ addObs(obsCarr (1500, 2000-550, 40, 40)); // Coquillage du milieu gauche
+ addObs(obsCarr (1500, 2000-350, 40, 40)); // Coquillage du milieu droit
//addObs(obsCarr (3000-900, 2000-550, 40, 40));
- addObs(obsCarr (3000-1200, 2000-350, 40, 40));
+ addObs(obsCarr (3000-1200, 2000-350, 40, 40)); // Coquillage du milieu bas
//addObs(obsCarr (3000-200, 2000-450, 40, 40)); // Coquillages du bas droite
//addObs(obsCarr (3000-200, 2000-750, 40, 40));
@@ -257,51 +292,49 @@
//addObs(obsCarr (900, 2000-550, 40, 40));
addObs(obsCarr (1200, 2000-350, 40, 40)); // Coquillages du milieu/haut
- addObs(obsCarr (1500, 2000-550, 40, 40));
- addObs(obsCarr (1500, 2000-350, 40, 40));
+ addObs(obsCarr (1500, 2000-550, 40, 40)); // Coquillage du milieu gauche
+ addObs(obsCarr (1500, 2000-350, 40, 40)); // Coquillage du milieu droite
- addObs(obsCarr (3000-900, 2000-550, 40, 40));
- addObs(obsCarr (3000-1200, 2000-350, 40, 40));
+ addObs(obsCarr (3000-900, 2000-550, 40, 40)); // Coquillage du milieu/bas
+ addObs(obsCarr (3000-1200, 2000-350, 40, 40)); // Coquillage du milieu/bas/bas
addObs(obsCarr (3000-200, 2000-450, 40, 40)); // Coquillages du bas droite
- addObs(obsCarr (3000-200, 2000-750, 40, 40));
+ addObs(obsCarr (3000-200, 2000-750, 40, 40)); // Coquillage sur le même axe horizontal
}
}
void map::Build_formation_2 (int couleur) {
if (couleur == VERT) {
- addObs(obsCarr (200, 2000-450, 40, 40)); // Coquillages du haut droit
- addObs(obsCarr (200, 2000-750, 40, 40));
-
- addObs(obsCarr (600, 2000-450, 40, 40)); // Coquillages du milieu haut
- addObs(obsCarr (600, 2000-750, 40, 40));
+ addObs(obsCarr (200, 2000-450, 40, 40)); // Coquillage du haut gauche
+ addObs(obsCarr (200, 2000-750, 40, 40)); // Coquillage du haut droite
- addObs(obsCarr (900, 2000-550, 40, 40));
- addObs(obsCarr (1200, 2000-350, 40, 40)); // Coquillages du milieu/haut
-
- addObs(obsCarr (1500, 2000-550, 40, 40));
- addObs(obsCarr (1500, 2000-350, 40, 40));
-
- //addObs(obsCarr (3000-900, 2000-550, 40, 40));
- addObs(obsCarr (3000-1200, 2000-350, 40, 40));
-
- //addObs(obsCarr (3000-200, 2000-450, 40, 40)); // Coquillages du bas droite
- //addObs(obsCarr (3000-200, 2000-750, 40, 40));
+ addObs(obsCarr (600, 2000-450, 40, 40)); // Coquillage du milieu/haut/haut droite
+ addObs(obsCarr (600, 2000-750, 40, 40)); // Coquillage du milieu/haut/haut sur le même axe horizontal
+
+ addObs(obsCarr (1200, 2000-350, 40, 40)); // Coquillage du milieu/haut droite
}
else {
//addObs(obsCarr (200, 2000-450, 40, 40)); // Coquillages du haut droit
//addObs(obsCarr (200, 2000-750, 40, 40));
//addObs(obsCarr (900, 2000-550, 40, 40));
- addObs(obsCarr (1200, 2000-350, 40, 40)); // Coquillages du milieu/haut
-
- addObs(obsCarr (1500, 2000-550, 40, 40));
- addObs(obsCarr (1500, 2000-350, 40, 40));
-
- addObs(obsCarr (3000-900, 2000-550, 40, 40));
- addObs(obsCarr (3000-1200, 2000-350, 40, 40));
-
- addObs(obsCarr (3000-200, 2000-450, 40, 40)); // Coquillages du bas droite
- addObs(obsCarr (3000-200, 2000-750, 40, 40));
+ addObs(obsCarr (3000-200, 2000-450, 40, 40)); // Coquillage du bas gauche
+ addObs(obsCarr (3000-200, 2000-750, 40, 40)); // Coquillage du bas droite
+
+ addObs(obsCarr (3000-600, 2000-450, 40, 40)); // Coquillage du milieu bas/bas droite
+ addObs(obsCarr (3000-600, 2000-750, 40, 40)); // Coquillage du milieu bas/bas sur le même axe horizontal
+
+ addObs(obsCarr (1800, 2000-350, 40, 40)); // Coquillage du milieu/bas droite
+ }
+}
+
+void map::Build_Objectives() {
+ if (couleur == VERT) {
+ addObj (objectif (OBJ_BLOC, 120, 1000, 0, Parasol, pince));
+ addObj (objectif (OBJ_BLOC, 120, 1000, 0, Parasol, pince));
+ }
+ else {
+ addObj (objectif (OBJ_BLOC, 3000-120, 1000, 0, Parasol, pince));
+ addObj (objectif (OBJ_BLOC, 3000-120, 1000, 0, Parasol, pince));
}
}
\ No newline at end of file
--- a/Map/map.h Wed May 04 21:51:00 2016 +0000
+++ b/Map/map.h Thu May 05 01:30:14 2016 +0200
@@ -1,7 +1,7 @@
#ifndef MAP_H
#define MAP_H
-/* Dernier Changement : Romain 20h30
+/* Dernier Changement : Romain 0h20
Inclu dans : main.cpp
Il faut encore gerer les formations de coquillage */
@@ -15,19 +15,21 @@
#include "../AX12/AX12.h"
#include "../../StepperMotor/Stepper.h"
-#define MAP_RIGHTSIDE 1
-#define MAP_LEFTSIDE 2
+#define X_START_VERT 110
+#define X_START_VIOLET 2990
+#define Y_START 1000
class map {
public:
- map (Odometry* nodo, AX12 * np, ControlleurPince * npince);
+ map (Odometry* nodo, AX12 * np, ControlleurPince * npince, int ncouleur, int nformation);
void addObs (obsCarr nobs);
void addObj (objectif nobj);
void FindWay (point dep, point arr);
void FindWay (float depX, float depY, float arrX, float arrY);
void Execute (int obj);
+ void Execute ();
void Execute (float XObjectif, float YObjectif);
- void Build(int couleur, int formation);
+ void Build();
nVector<pointParcours>& getParc () { return path; }
bool& getEnded () { return endedParc; }
@@ -37,14 +39,17 @@
nVector<objectif> objectifs;
bool endedParc; // Definit s'il existe un chemin parcourable dans le dernier FindWay
+ int couleur, formation;
Odometry* Codo;
- AX12 * A1, * A2, * A3;
- Stepper * S1, * S2;
+ AX12 * Parasol;
+ ControlleurPince * pince;
float min_x_table, min_y_table, max_x_table, max_y_table;
void Build_formation_1 (int couleur);
void Build_formation_2 (int couleur);
+
+ void Build_Objectives ();
};
#endif
\ No newline at end of file
--- a/main.cpp Wed May 04 21:51:00 2016 +0000
+++ b/main.cpp Thu May 05 01:30:14 2016 +0200
@@ -62,20 +62,10 @@
/* Debut du programme */
int main(void)
{
- //logger.printf("Depart homologation !\n\r");
- //homologation();
- logger.printf("Homming ...\n\r");
- controlleurPince.home();
- wait(1);
- controlleurPince.setPos(10.f,0.f,0.f);
- wait(1);
- controlleurPince.setPos(20.f,0.f,0.f);
- wait(1);
- controlleurPince.setPos(70.f,0.f,0.f);
- wait(1);
- controlleurPince.setPos(20.f,0.f,0.f);
- logger.printf("Done ...\n\r");
-
+ map m(&odo, NULL, controlleurPince, VERT, 1);
+ m.Build();
+ m.Execute(1);
+ m.Execute();
/*drapeau = 0;
init();
