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.
Revision 25:869b1c1f51a7, committed 2020-10-29
- Comitter:
- Nanaud
- Date:
- Thu Oct 29 07:53:25 2020 +0000
- Parent:
- 24:be2b2be6907b
- Child:
- 26:bb2b778bd351
- Commit message:
- Serie1
Changed in this revision
--- a/captUS.cpp Wed Oct 28 20:08:39 2020 +0000
+++ b/captUS.cpp Thu Oct 29 07:53:25 2020 +0000
@@ -2,130 +2,77 @@
#include "pins.h"
/* #define */
-#define DISTLIM 600
-#define MAXMOY 3
+#define DISTLIM 600 // Distance max de détection
+#define OFFSET 200
+#define MAXMOY 3 // Nombre de mesure pour la moyenne
/* Variables globales */
-Timer TimUS;
-Ticker TickUS_actu;
-
-//const float DISTLIM = 600;
+Timer TimUS; // Timer pour la mesure de distance entre le robot
+Ticker TickUS_actu; // Actualisation valeur distance détection d'obstacle
-unsigned int us_high[6]= {0};
-unsigned int us_low[6]= {0};
-unsigned int us_diff[6]= {0};
-bool us_verif[6]= {0};
+unsigned int us_high[6] = {0}; // Valeurs du timer lorsqu'il y a une interruption sur front montant
+unsigned int us_low[6] = {0}; // Valeurs du timer lorsqu'il y a une interruption sur front descendant
+unsigned int us_diff[6] = {0}; // Différence entre ces deux temps
+//bool us_verif[6] = {0}; // Permet d'enchainer dans le bon ordre : front montant puis front descendant
+bool us_verif2[2][6] = {0};
+
+unsigned int us_dist[6] = {0}; // Valeurs des distances
+bool us_rbt_restart = 0; // Le robot a détecté un obstacle et s'arrête
+bool us_libre = 0; // Le robot ne détecte plus d'obstacle, il est prêt à redémarrer
-unsigned int distt[6];
-bool rebooted = 0;
-bool wtt = 0;
-
-int indix = 0;
-unsigned int total[6] = {0};
-unsigned int ttt[6] = {0};
+int i = 0;
+unsigned int us_dist_total[6] = {0};
+unsigned int us_dist_moy[6] = {0};
-void calculTotal()
+void captUS_moyenne()
{
- if(indix < MAXMOY) {
+ if(i < MAXMOY) {
for(int j=0; j<6 ; j++) {
- total[j]+=distt[j];
+ us_dist_total[j] += us_dist[j];
}
- indix++;
+ i++;
+
} else {
for(int j=0; j<6 ; j++) {
- ttt[j]=total[j]/MAXMOY;
- total[j]=0;
+ us_dist_moy[j]=us_dist_total[j] / MAXMOY;
+ us_dist_total[j]=0;
}
- /*
- pc.printf("ttt[1] = %d\n\r", ttt[0]);
- pc.printf("ttt[2] = %d\n\r", ttt[1]);
- pc.printf("ttt[3] = %d\n\r", ttt[2]);
- pc.printf("ttt[4] = %d\n\r", ttt[3]);
- pc.printf("ttt[5] = %d\n\r", ttt[4]);
- pc.printf("ttt[6] = %d\n\r", ttt[5]);
- pc.printf("\n\r");
- */
-
- indix=0;
+ i=0;
}
}
-/*
-void captUS_init()
-{
- ::distance = new double(6); //équivalent au malloc()
- tps.reset();
- tps.start();
-}
-*/
void captUS_trig()
{
- convertToDistance();
+ captUS_convToDist();
- calculTotal();
+ captUS_moyenne();
- if((objRecule[indice]==0) && (fnc == 2)) {
- //if ((distt[5] >= DISTLIM) && (distt[0] >= DISTLIM) && (distt[1] >= DISTLIM)) {
- //if (((distt[5] >= DISTLIM) && (distt[0] >= DISTLIM) && (distt[1] >= DISTLIM)) /*|| ((distt[5] < 0) && (distt[0] < 0) && (distt[1] < 0))*/) {
- if ((ttt[5] >= DISTLIM) && (ttt[0] >= DISTLIM) && (ttt[1] >= DISTLIM)) {
- wtt = 1;
+ if((objRecule[indiceStrategie]==0) && (action == 2)) {
+ if ((us_dist_moy[5] >= (DISTLIM-OFFSET)) && (us_dist_moy[0] >= DISTLIM) && (us_dist_moy[1] >= (DISTLIM-OFFSET))) {
+ us_libre = 1;
}
else {
mot_dis();
- rebooted = 1;
- wtt=0;
+ us_rbt_restart = 1;
+ us_libre=0;
}
}
- else if((objRecule[indice]==1) && (fnc == 2)) {
- //if ((distt[2] >= DISTLIM) && (distt[3] >= DISTLIM) && (distt[4] >= DISTLIM)) {
- //if (((distt[2] >= DISTLIM) && (distt[3] >= DISTLIM) && (distt[4] >= DISTLIM)) /*|| ((distt[2] < 0) && (distt[3] < 0) && (distt[4] < 0))*/) {
- if ((ttt[2] >= DISTLIM) && (ttt[3] >= DISTLIM) && (ttt[4] >= DISTLIM)) {
- wtt=1;
+ else if((objRecule[indiceStrategie]==1) && (action == 2)) {
+ if ((us_dist_moy[2] >= (DISTLIM-OFFSET)) && (us_dist_moy[3] >= DISTLIM) && (us_dist_moy[4] >= (DISTLIM-OFFSET))) {
+ us_libre=1;
}
else {
mot_dis();
- rebooted = 1;
- wtt=0;
+ us_rbt_restart = 1;
+ us_libre=0;
}
}
- /*
- pc.printf("US1 = %5.0lf uS\n\r", us_out[0]);
- pc.printf("US2 = %5.0lf uS\n\r", us_out[1]);
- //pc.printf("US3 = %5.0lf uS\n\r", us_out[2]);
- //pc.printf("US4 = %5.0lf uS\n\r", us_out[3]);
- //pc.printf("US5 = %5.0lf uS\n\r", us_out[4]);
- pc.printf("US6 = %5.0lf uS\n\r", us_out[5]);
- pc.printf("\n\r");
- */
-
- /*
- pc.printf("Dist1 = %5.0lf mm\n\r", ::distance[0]);
- pc.printf("Dist2 = %5.0lf mm\n\r", ::distance[1]);
- pc.printf("Dist3 = %5.0lf mm\n\r", ::distance[2]);
- pc.printf("Dist4 = %5.0lf mm\n\r", ::distance[3]);
- pc.printf("Dist5 = %5.0lf mm\n\r", ::distance[4]);
- pc.printf("Dist6 = %5.0lf mm\n\r", ::distance[5]);
- pc.printf("\n\r");
- */
-
- /*
- pc.printf("ttt[1] = %d\n\r", ttt[0]);
- pc.printf("ttt[2] = %d\n\r", ttt[1]);
- pc.printf("ttt[3] = %d\n\r", ttt[2]);
- pc.printf("ttt[4] = %d\n\r", ttt[3]);
- pc.printf("ttt[5] = %d\n\r", ttt[4]);
- pc.printf("ttt[6] = %d\n\r", ttt[5]);
- pc.printf("\n\r");
- */
-
- //calculTotal();
-
TimUS.reset();
trigger=1;
wait(0.00002);
@@ -134,108 +81,102 @@
void echoRise1()
{
- if(us_verif[0] == 0) {
+ if(us_verif2[1][0] == false) {
us_high[0]=TimUS.read_us();
- us_verif[0] = 1;
+ us_verif2[0][0] = true;
}
}
void echoFall1()
{
- if(us_verif[0] == 1) {
+ if(us_verif2[0][0] == true) {
us_low[0]=TimUS.read_us();
- us_diff[0]=us_low[0]-us_high[0];
- us_verif[0] = 0;
+ us_verif2[1][0] = true;
}
}
void echoRise2()
{
- if(us_verif[1] == 0) {
+ if(us_verif2[1][1] == false) {
us_high[1]=TimUS.read_us();
- us_verif[1] = 1;
+ us_verif2[0][1] = true;
}
}
void echoFall2()
{
- if(us_verif[1] == 1) {
+ if(us_verif2[0][1] == true) {
us_low[1]=TimUS.read_us();
- us_diff[1]=us_low[1]-us_high[1];
- us_verif[1] = 0;
+ us_verif2[1][1] = true;
}
}
void echoRise3()
{
- if(us_verif[2] == 0) {
+ if(us_verif2[1][2] == false) {
us_high[2]=TimUS.read_us();
- us_verif[2] = 1;
+ us_verif2[0][2] = true;
}
}
void echoFall3()
{
- if(us_verif[2] == 1) {
+ if(us_verif2[0][2] == true) {
us_low[2]=TimUS.read_us();
- us_diff[2]=us_low[2]-us_high[2];
- us_verif[2] = 0;
+ us_verif2[1][2] = true;
}
}
void echoRise4()
{
- if(us_verif[3] == 0) {
+ if(us_verif2[1][3] == false) {
us_high[3]=TimUS.read_us();
- us_verif[3] = 1;
+ us_verif2[0][3] = true;
}
}
void echoFall4()
{
- if(us_verif[3] == 1) {
+ if(us_verif2[0][3] == true) {
us_low[3]=TimUS.read_us();
- us_diff[3]=us_low[3]-us_high[3];
- us_verif[3] = 0;
+ us_verif2[1][3] = true;
}
}
void echoRise5()
{
- if(us_verif[4] == 0) {
+ if(us_verif2[1][4] == false) {
us_high[4]=TimUS.read_us();
- us_verif[4] = 1;
+ us_verif2[0][4] = true;
}
}
void echoFall5()
{
- if(us_verif[4] == 1) {
+ if(us_verif2[0][4] == true) {
us_low[4]=TimUS.read_us();
- us_diff[4]=us_low[4]-us_high[4];
- us_verif[4] = 0;
+ us_verif2[1][4] = true;
}
}
void echoRise6()
{
- if(us_verif[5] == 0) {
+ if(us_verif2[1][5] == false) {
us_high[5]=TimUS.read_us();
- us_verif[5] = 1;
+ us_verif2[0][5] = true;
}
}
void echoFall6()
{
- if(us_verif[5] == 1) {
+ if(us_verif2[0][5] == true) {
us_low[5]=TimUS.read_us();
- us_diff[5]=us_low[5]-us_high[5];
- us_verif[5] = 0;
+ us_verif2[1][5] = true;
}
}
-void convertToDistance()
+void captUS_convToDist()
{
/**************************************
* Nous convertisons grâce au valeur *
@@ -244,11 +185,9 @@
**************************************/
for(int i = 0; i<6; i++) {
- distt[i] = (int) ((us_diff[i]*340)/1000); //conversion en distance(mm)
+ if(us_verif2[0][i] == true && us_verif2[1][i] == true)
+ us_dist[i] = (int) (((us_low[i] - us_high[i])*340)/1000); //conversion en distance(mm)
+ else
+ us_dist[i] = LARGEUR_TAB;
}
-
- /****************************************
- * nous retournons l'adresse du tableau *
- ****************************************/
- //return ::distance;
}
--- a/captUS.h Wed Oct 28 20:08:39 2020 +0000 +++ b/captUS.h Thu Oct 29 07:53:25 2020 +0000 @@ -20,10 +20,10 @@ extern Timer TimUS; extern Ticker TickUS_actu; -extern unsigned int distt[6]; +extern unsigned int us_dist[6]; -extern bool rebooted; -extern bool wtt; +extern bool us_rbt_restart; +extern bool us_libre; // Prototypes void captUS_trig(); @@ -46,7 +46,7 @@ * Création d'une fonction qui * * convertis le temps en distance * **********************************/ -void convertToDistance(void); +void captUS_convToDist(void); /********************************************
--- a/debugPC.cpp Wed Oct 28 20:08:39 2020 +0000
+++ b/debugPC.cpp Thu Oct 29 07:53:25 2020 +0000
@@ -291,7 +291,7 @@
pc.printf("O = %lf\n\r", O);
pc.printf("consigneAngl = %lf\n\r", consigneOrientation);
pc.printf("consigneDist = %lf\n\r", distanceCible);
- pc.printf("indice = %d\n\r", indice);
+ pc.printf("indice = %d\n\r", indiceStrategie);
//pc.printf("dist 1 = %d\n\r", ttt[0]);
//pc.printf("dist 2 = %d\n\r", ttt[1]);
//pc.printf("dist 6 = %d\n\r", ttt[5]);
@@ -306,14 +306,14 @@
bt.printf("O = %lf\n\r", O);
bt.printf("consigneAngl = %lf\n\r", consigneOrientation);
bt.printf("consigneDist = %lf\n\r", distanceCible);
- bt.printf("indice = %d\n\r", indice);
- bt.printf("dist 1 = %lf\n\r", distt[0]);
- bt.printf("dist 2 = %lf\n\r", distt[1]);
- bt.printf("dist 6 = %lf\n\r", distt[5]);
+ bt.printf("indice = %d\n\r", indiceStrategie);
+ bt.printf("dist 1 = %d\n\r", us_dist[0]);
+ bt.printf("dist 2 = %d\n\r", us_dist[1]);
+ bt.printf("dist 6 = %d\n\r", us_dist[5]);
bt.printf("---\n\r");
- bt.printf("dist 3 = %lf\n\r", distt[2]);
- bt.printf("dist 4 = %lf\n\r", distt[3]);
- bt.printf("dist 5 = %lf\n\r", distt[4]);
+ bt.printf("dist 3 = %d\n\r", us_dist[2]);
+ bt.printf("dist 4 = %d\n\r", us_dist[3]);
+ bt.printf("dist 5 = %d\n\r", us_dist[4]);
bt.printf("distanceMem = %lf\n\r", distanceMem);
bt.printf("distancePlus = %lf\n\r", distancePlus);
break;
@@ -391,62 +391,7 @@
void affUltrasons()
{
- // Données bruts
-
- /*
- // pc
- if(aff_US[0]) pc.printf("Tps US1 = %5.0f uS\n\r", us_diff[0]);
- if(aff_US[1]) pc.printf("Tps US2 = %5.0f uS\n\r", us_diff[1]);
- if(aff_US[2]) pc.printf("Tps US3 = %5.0f uS\n\r", us_diff[2]);
- if(aff_US[3]) pc.printf("Tps US4 = %5.0f uS\n\r", us_diff[3]);
- if(aff_US[4]) pc.printf("Tps US5 = %5.0f uS\n\r", us_diff[4]);
- if(aff_US[5]) pc.printf("Tps US6 = %5.0f uS\n\r", us_diff[5]);
- if(aff_US[0]||aff_US[1]||aff_US[2]||aff_US[3]||aff_US[4]||aff_US[5]) pc.printf("\n\r");
-
- // bt
- if(aff_US[0]) bt.printf("Tps US1 = %5.0f uS\n\r", us_diff[0]);
- if(aff_US[1]) bt.printf("Tps US2 = %5.0f uS\n\r", us_diff[1]);
- if(aff_US[2]) bt.printf("Tps US3 = %5.0f uS\n\r", us_diff[2]);
- if(aff_US[3]) bt.printf("Tps US4 = %5.0f uS\n\r", us_diff[3]);
- if(aff_US[4]) bt.printf("Tps US5 = %5.0f uS\n\r", us_diff[4]);
- if(aff_US[5]) bt.printf("Tps US6 = %5.0f uS\n\r", us_diff[5]);
- if(aff_US[0]||aff_US[1]||aff_US[2]||aff_US[3]||aff_US[4]||aff_US[5]) bt.printf("\n\r");
- */
-
-
- // Distances
-
- // pc
- /*
- pc.printf("US[1] = %lf\n\r", us_diff[0]);
- pc.printf("US[2] = %lf\n\r", us_diff[1]);
- pc.printf("US[3] = %lf\n\r", us_diff[2]);
- pc.printf("US[4] = %lf\n\r", us_diff[3]);
- pc.printf("US[5] = %lf\n\r", us_diff[4]);
- pc.printf("US[6] = %lf\n\r", us_diff[5]);
- pc.printf("\n\r");
- */
-
- ///*
- pc.printf("distance[1] = %lf\n\r", distt[0]);
- pc.printf("distance[2] = %lf\n\r", distt[1]);
- pc.printf("distance[3] = %lf\n\r", distt[2]);
- pc.printf("distance[4] = %lf\n\r", distt[3]);
- pc.printf("distance[5] = %lf\n\r", distt[4]);
- pc.printf("distance[6] = %lf\n\r", distt[5]);
- pc.printf("\n\r");
- //*/
-
- // bt
-
- bt.printf("distance[1] = %lf\n\r", distt[0]);
- bt.printf("distance[2] = %lf\n\r", distt[1]);
- bt.printf("distance[3] = %lf\n\r", distt[2]);
- bt.printf("distance[4] = %lf\n\r", distt[3]);
- bt.printf("distance[5] = %lf\n\r", distt[4]);
- bt.printf("distance[6] = %lf\n\r", distt[5]);
- bt.printf("\n\r");
-
+ /* Rien */
}
void affCodeurs()
--- a/main.cpp Wed Oct 28 20:08:39 2020 +0000
+++ b/main.cpp Thu Oct 29 07:53:25 2020 +0000
@@ -89,14 +89,14 @@
match = 1;
cptGlobal = 0;
- indice= 1;
- fnc = objEtape[indice];
- xC = objX[indice];
- yC = objY[indice];
+ indiceStrategie = 1;
+ action = objEtape[indiceStrategie];
+ xC = objX[indiceStrategie];
+ yC = objY[indiceStrategie];
}
- if (indice>=NbObj) {
- fnc = 0;
+ if (indiceStrategie >= NbObj) {
+ action = 0;
}
}
}
@@ -115,6 +115,6 @@
}
if(cptGlobal>=100) { // Le robot doit s'arrêter à 100sec
- fnc=0;
+ action=0;
}
}
--- a/odo_asserv.cpp Wed Oct 28 20:08:39 2020 +0000
+++ b/odo_asserv.cpp Thu Oct 29 07:53:25 2020 +0000
@@ -2,41 +2,70 @@
#include "pins.h"
/* #define & constantes */
-#define VMAXROT 0.020
-#define VMAXLIN 0.040
-#define entraxe 253 // (Valeur théorique = 255)
-const double coeffGLong = 5.956, coeffDLong = 5.956; // tics/millimètre
+#define VMAXROT 0.040 // 0.020
+#define VMAXLIN 0.100 // 0.060
+
+/* Choix côté */
-/* Stratégie */
-int indice = 0;
-/*
-int objEtape[NbObj] = {0,1,1,1,1,1,1,1,1,1,1,1,1}; // Stratégie côté bleu
-double objX[NbObj] = {110,645,645,468,645,336,189,200,645,468,645,371,215};
-double objY[NbObj] = {1085,1200,1490,1490,1490,1788,1032,1200,920,920,920,519,780};
-int objRecule[NbObj]= {0,0,0,0,1,0,0,1,0,0,1,0,0};
-*/
+// Côté bleu
+#define X_INIT 110
+#define Y_INIT 1070
+#define O_INIT 0
+
/*
-int objEtape[NbObj] = {0,1,1,1,1,1,1,1,1,1,1,1,1}; // Stratégie côté bleu
-double objX[NbObj] = {110,645,645,200,645,336,189,200,645,468,645,371,215};
-double objY[NbObj] = {1085,1200,1400,1400,1400,1788,1032,1200,920,920,920,519,780};
-int objRecule[NbObj]= {0,0,0,0,1,0,0,1,0,0,1,0,0};
+// Côté jaune
+#define X_INIT 2890
+#define Y_INIT 1070
+#define O_INIT 3.1414
*/
-//int objEtape[NbObj] = {0,1,1,1}; // Stratégie côté bleu
-int objEtape [4] = {0,1,1,1};
-double objX[4] = {0,660, 660, 210};
-double objY[4] = {0,1070,1650,1300};
-int objRecule[NbObj]= {0,0,0,0};
+#define entraxe 253 // (Valeur théorique = 255)
+const double coeffG = 0.16008537; // mm/tic
+const double coeffD = 0.16059957; // mm/tic
+/* COEFF ROTATION */
+const double coeffPro = 0.040; // 0.020
+const double coeffDer = 0.030; // 0.010
+/* COEFF LIGNE DROITE */
+const double coeffProDist = 0.003; // 0.0008
+const double coeffDerDist = 0.003; // 0.0008
+
+#define ACC_ROT 0.002
+#define ACC_LIN 0.002
+
+/* Stratégie */
+int indiceStrategie = 0;
+
+/* // Stratégie ultra simple
+int objEtape[NbObj] = {0,1,1,1};
+double objX[NbObj] = {0,660, 660, 210};
+double objY[NbObj] = {0,1070,1650,1300};
+int objRecule[NbObj]= {0,0,0,0};*/
-/* Variable globale */
-Ticker Ticker_asserv;
+ // Stratégie Lucas Blue
+int objEtape[NbObj] = {0,1,1,1,1,1,1,1,1,1};
+double objX[NbObj] = {110,200,660,627,450,235,698,300,300,230};
+double objY[NbObj] = {1070,1070,1200,743,920,1124,672,460,1100,750};
+int objRecule[NbObj]= {0,0,0,0,0,0,1,0,0,1};
-long comptG = 0, comptD = 0; // nb de tics comptés pour chaque codeur
+/*// Stratégie Lucas Yellow
+int objEtape[NbObj] = {0,1,1,1,1,1,1,1,1,1};
+double objX[NbObj] = {2890,2800,2340,2373,2550,2765,2302,2700,2700,2800};
+double objY[NbObj] = {1070,1070,1200,743,920,1124,672,460,1100,750};
+int objRecule[NbObj]= {0,0,0,0,0,0,1,0,0,1};
+*/
-///// INTERRUPTIONS CODEURS
+/* Variable globale */
+Ticker Ticker_asserv; // Ticker pour l'asservissement en position
+
+int action = 0; // Actions possibles : Rotation & Avancer/Reculer
+long comptG = 0, comptD = 0; // Nb de tics compté par roue
+double dDist = 0, dAngl = 0; // Distance moyenne du robot et orientation
+double x = X_INIT, y = Y_INIT, O = O_INIT;
+
+/* Interruptions codeurs */
void cdgaRise()
{
@@ -51,10 +80,7 @@
}
-const double coeffG = 0.16008537;
-const double coeffD = 0.16059957;
-double dDist = 0, dAngl = 0; // Distance moyenne du robot et orientation
-double x = 110, y = 1070, O = 0;
+
void odo2()
{
@@ -82,17 +108,15 @@
double erreurAngle = 0;
double erreurPre = 0;
double deltaErreur = 0;
-const double coeffPro = 0.020; // 0.023 de base
-const double coeffDer = 0.010; // 0.023 de base
+
// Ligne droite
double erreurPreDist = 0;
double deltaErreurDist = 0;
-const double coeffProDist = 0.0008; // 0.010 de base
-const double coeffDerDist = 0.0008; // 0.010 de base
+
// NEW NEW NEW NEW
-int fnc = 0;
+
bool acc = 1;
double distancePrecedente = 0;
bool stt = 0; // Dépassement du point
@@ -127,7 +151,7 @@
// Switch de sélection de l'étape
- switch (fnc) {
+ switch (action) {
case 0: // Stand-by
mot_dis();
break;
@@ -136,7 +160,7 @@
mot_en();
// Si on doit reculer
- if (objRecule[indice]==1) {
+ if (objRecule[indiceStrategie]==1) {
consigneOrientation += 3.1415;
if(consigneOrientation>3.1415) consigneOrientation-=2*3.1415;
@@ -173,7 +197,7 @@
double deltaCommande = (abs(coeffPro * erreurAngle) + abs(coeffDer * deltaErreur));
if(acc) {
- cmdG = cmdG + 0.0008; // +0.0008
+ cmdG = cmdG + ACC_ROT; // +0.0008
cmdD = cmdG;
if (cmdG >= VMAXROT) acc = 0;
@@ -193,8 +217,8 @@
vitesseMotD(abs(cmdD));
if (O > (consigneOrientation - (1*0.0174533)) && O < (consigneOrientation + (1*0.0174533))) {
- fnc++;
- rebooted = 1;
+ action++;
+ us_rbt_restart = 1;
acc = 1;
//azerty();
distanceMem = distanceCible;
@@ -206,10 +230,10 @@
case 2: // Avancer
- if (rebooted == 1 && wtt==1) {
+ if (us_rbt_restart == 1 && us_libre == 1) {
cmdG = 0;
cmdD = 0;
- rebooted = 0;
+ us_rbt_restart = 0;
acc=1;
mot_en();
}
@@ -221,7 +245,7 @@
double deltaCommande2 = (abs(coeffProDist * distanceCible) + abs(coeffDerDist * deltaErreurDist));
if(acc) {
- cmdG = cmdG + 0.0006; // +0.0008
+ cmdG = cmdG + ACC_LIN; // +0.0006
cmdD = cmdG;
if (cmdG >= VMAXLIN) {
@@ -242,22 +266,21 @@
if ((distanceCible < 10) || (distancePlus >= distanceMem)) {
acc = 1;
- indice++;
+ indiceStrategie++;
- if (indice>=(int)NbObj) {
- fnc = 0;
+ if (indiceStrategie >= (int)NbObj) {
+ action = 0;
} else {
- fnc = objEtape[indice];
- xC = objX[indice];
- yC = objY[indice];
+ action = objEtape[indiceStrategie];
+ xC = objX[indiceStrategie];
+ yC = objY[indiceStrategie];
}
distancePrecedente = 0;
break;
-
}
- if (objRecule[indice] == 0) {
+ if (objRecule[indiceStrategie] == 0) {
motGauche_fwd();
motDroite_fwd();
} else {
--- a/odo_asserv.h Wed Oct 28 20:08:39 2020 +0000 +++ b/odo_asserv.h Thu Oct 29 07:53:25 2020 +0000 @@ -1,8 +1,8 @@ // Nom du fichier : odo_asserv.h -#define NbObj 4 +#define NbObj 10 -extern int indice; +extern int indiceStrategie; extern int objEtape[NbObj]; extern double objX[NbObj]; extern double objY[NbObj]; @@ -23,7 +23,7 @@ extern double consigneOrientation; extern double cmdG; extern double cmdD; -extern int fnc; +extern int action; extern double distanceMem; extern double distancePlus;