NXPCup_Cachan / Mbed 2 deprecated NXPCup

Dependencies:   mbed

Committer:
Wael_H
Date:
Tue Feb 11 15:41:45 2020 +0000
Revision:
0:8743b606abc3
Child:
1:a9af73d5abd4
Version direction a peu pres

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Wael_H 0:8743b606abc3 1 #include "NXPCam.h"
Wael_H 0:8743b606abc3 2
Wael_H 0:8743b606abc3 3 extern Serial bt;
Wael_H 0:8743b606abc3 4
Wael_H 0:8743b606abc3 5 NXPCam::NXPCam() : pixy(p28, p27)
Wael_H 0:8743b606abc3 6 {
Wael_H 0:8743b606abc3 7
Wael_H 0:8743b606abc3 8 }
Wael_H 0:8743b606abc3 9
Wael_H 0:8743b606abc3 10 /// DETECTION DEVIATION VIA CENTRE DE LA PISTE ///
Wael_H 0:8743b606abc3 11 int NXPCam::getDeviationTrajectoire()
Wael_H 0:8743b606abc3 12 {
Wael_H 0:8743b606abc3 13 float centrePiste;
Wael_H 0:8743b606abc3 14 static int x0, x1; // les 2 pts au bout des 2 vecteurs
Wael_H 0:8743b606abc3 15 int x; // si 1 seul vecteur détecté
Wael_H 0:8743b606abc3 16 int dev;
Wael_H 0:8743b606abc3 17
Wael_H 0:8743b606abc3 18 if (pixy.pixy2_getAllFeature(PIXY2_VECTOR) & PIXY2_VECTOR == PIXY2_VECTOR && pixy.Pixy2_numVectors > 2)
Wael_H 0:8743b606abc3 19 bt.printf("Plus de 2 vecteurs !\n\r");
Wael_H 0:8743b606abc3 20
Wael_H 0:8743b606abc3 21 if (pixy.pixy2_getAllFeature(PIXY2_VECTOR) & PIXY2_VECTOR == PIXY2_VECTOR && pixy.Pixy2_numVectors >= 2) // Si la pixy a capté des vectors
Wael_H 0:8743b606abc3 22 {
Wael_H 0:8743b606abc3 23 x0 = (pixy.Pixy2_vectors[0].pixY1 < pixy.Pixy2_vectors[0].pixY0) ? pixy.Pixy2_vectors[0].pixX1 : pixy.Pixy2_vectors[0].pixX0; // Tests nécessaires pour être sûr de prendre la partie haute
Wael_H 0:8743b606abc3 24 x1 = (pixy.Pixy2_vectors[1].pixY1 < pixy.Pixy2_vectors[1].pixY0) ? pixy.Pixy2_vectors[1].pixX1 : pixy.Pixy2_vectors[1].pixX0; // du vecteur (possibilité de reverseVector à tester plus tard)
Wael_H 0:8743b606abc3 25 if(x0 > x1)
Wael_H 0:8743b606abc3 26 {
Wael_H 0:8743b606abc3 27 int savex0 = x0;
Wael_H 0:8743b606abc3 28 x0 = x1;
Wael_H 0:8743b606abc3 29 x1 = savex0;
Wael_H 0:8743b606abc3 30 }
Wael_H 0:8743b606abc3 31
Wael_H 0:8743b606abc3 32 centrePiste = (x0 + x1) / 2.f; // valeur entre 15 et 55
Wael_H 0:8743b606abc3 33 dev = (int)((SCREEN_CENTER - centrePiste) * (200.f / SCREEN_CENTER));
Wael_H 0:8743b606abc3 34 return dev;
Wael_H 0:8743b606abc3 35 }
Wael_H 0:8743b606abc3 36 else if (pixy.pixy2_getAllFeature(PIXY2_VECTOR) & PIXY2_VECTOR == PIXY2_VECTOR && pixy.Pixy2_numVectors == 1)
Wael_H 0:8743b606abc3 37 {
Wael_H 0:8743b606abc3 38 bt.printf("1 seul vecteur !\n\r");
Wael_H 0:8743b606abc3 39 this->v1 = Vector(pixy.Pixy2_vectors[0].pixX0, pixy.Pixy2_vectors[0].pixY0, pixy.Pixy2_vectors[0].pixX1, pixy.Pixy2_vectors[0].pixY1);
Wael_H 0:8743b606abc3 40
Wael_H 0:8743b606abc3 41 return (this->v1.getCoeffDir() < 0) ? 100 : -100;
Wael_H 0:8743b606abc3 42 // return -1.f/this(->v1.getCoeffDir();
Wael_H 0:8743b606abc3 43
Wael_H 0:8743b606abc3 44 /*x = (pixy.Pixy2_vectors[0].pixY1 < pixy.Pixy2_vectors[0].pixY0) ? pixy.Pixy2_vectors[0].pixX1 : pixy.Pixy2_vectors[0].pixX0;
Wael_H 0:8743b606abc3 45
Wael_H 0:8743b606abc3 46 return (abs(x0-x) < abs(x1-x)) ? -100 : 100;*/
Wael_H 0:8743b606abc3 47 }
Wael_H 0:8743b606abc3 48 else
Wael_H 0:8743b606abc3 49 return INFO_NON_EXPLOITABLE;
Wael_H 0:8743b606abc3 50 }
Wael_H 0:8743b606abc3 51
Wael_H 0:8743b606abc3 52 /// DETECTION DEVIATION VIA VALEURS DE COEFFICIENTS DIRECTEURS ///
Wael_H 0:8743b606abc3 53 /*int NXPCam::getDeviationTrajectoire()
Wael_H 0:8743b606abc3 54 {
Wael_H 0:8743b606abc3 55 if (pixy.pixy2_getAllFeature(PIXY2_VECTOR) & PIXY2_VECTOR == PIXY2_VECTOR && pixy.Pixy2_numVectors >= 2) // Si la pixy a capté des vectors
Wael_H 0:8743b606abc3 56 {
Wael_H 0:8743b606abc3 57 this->v1 = Vector(pixy.Pixy2_vectors[0].pixX0, pixy.Pixy2_vectors[0].pixY0, pixy.Pixy2_vectors[0].pixX1, pixy.Pixy2_vectors[0].pixY1);
Wael_H 0:8743b606abc3 58 this->v2 = Vector(pixy.Pixy2_vectors[1].pixX0, pixy.Pixy2_vectors[1].pixY0, pixy.Pixy2_vectors[1].pixX1, pixy.Pixy2_vectors[1].pixY1);
Wael_H 0:8743b606abc3 59
Wael_H 0:8743b606abc3 60 if(this->v1.estADroiteDe(v2))
Wael_H 0:8743b606abc3 61 {
Wael_H 0:8743b606abc3 62 Vector savev1 = v1;
Wael_H 0:8743b606abc3 63 v1 = v2;
Wael_H 0:8743b606abc3 64 v2 = savev1;
Wael_H 0:8743b606abc3 65 }
Wael_H 0:8743b606abc3 66
Wael_H 0:8743b606abc3 67 float c1 = v1.getCoeffDir(), c2 = v2.getCoeffDir();
Wael_H 0:8743b606abc3 68
Wael_H 0:8743b606abc3 69 if(c1 < 0)
Wael_H 0:8743b606abc3 70 return 100;
Wael_H 0:8743b606abc3 71 if(c2 > 0)
Wael_H 0:8743b606abc3 72 return -100;
Wael_H 0:8743b606abc3 73 if(abs(c1) > 2.5)
Wael_H 0:8743b606abc3 74 return -100;
Wael_H 0:8743b606abc3 75 if(abs(c2) > 2.5)
Wael_H 0:8743b606abc3 76 return 100;
Wael_H 0:8743b606abc3 77 else return 0;
Wael_H 0:8743b606abc3 78 }
Wael_H 0:8743b606abc3 79 else
Wael_H 0:8743b606abc3 80 return INFO_NON_EXPLOITABLE;
Wael_H 0:8743b606abc3 81 }*/
Wael_H 0:8743b606abc3 82
Wael_H 0:8743b606abc3 83 /// DETECTION DEVIATION VIA DIFFERENCE DE COEFFICIENTS DIRECTEURS ///
Wael_H 0:8743b606abc3 84 /*int NXPCam::getDeviationTrajectoire()
Wael_H 0:8743b606abc3 85 {
Wael_H 0:8743b606abc3 86 if (pixy.pixy2_getAllFeature(PIXY2_VECTOR) & PIXY2_VECTOR == PIXY2_VECTOR && pixy.Pixy2_numVectors >= 2) // Si la pixy a capté des vectors
Wael_H 0:8743b606abc3 87 {
Wael_H 0:8743b606abc3 88 this->v1 = Vector(pixy.Pixy2_vectors[0].pixX0, pixy.Pixy2_vectors[0].pixY0, pixy.Pixy2_vectors[0].pixX1, pixy.Pixy2_vectors[0].pixY1);
Wael_H 0:8743b606abc3 89 this->v2 = Vector(pixy.Pixy2_vectors[1].pixX0, pixy.Pixy2_vectors[1].pixY0, pixy.Pixy2_vectors[1].pixX1, pixy.Pixy2_vectors[1].pixY1);
Wael_H 0:8743b606abc3 90
Wael_H 0:8743b606abc3 91 if(this->v1.estADroiteDe(v2))
Wael_H 0:8743b606abc3 92 {
Wael_H 0:8743b606abc3 93 Vector savev1 = v1;
Wael_H 0:8743b606abc3 94 v1 = v2;
Wael_H 0:8743b606abc3 95 v2 = savev1;
Wael_H 0:8743b606abc3 96 }
Wael_H 0:8743b606abc3 97
Wael_H 0:8743b606abc3 98 return (int)((float)(abs(v2.getCoeffDir()) - abs(v1.getCoeffDir())) * 15); // entre -6 et 8 de base donc *14 pour entre -100 et 100 (à peu près)
Wael_H 0:8743b606abc3 99 }
Wael_H 0:8743b606abc3 100 else
Wael_H 0:8743b606abc3 101 return INFO_NON_EXPLOITABLE;
Wael_H 0:8743b606abc3 102 }*/
Wael_H 0:8743b606abc3 103
Wael_H 0:8743b606abc3 104 int NXPCam::getNormeVecteurs()
Wael_H 0:8743b606abc3 105 {
Wael_H 0:8743b606abc3 106 if(pixy.pixy2_getAllFeature(PIXY2_VECTOR) & PIXY2_VECTOR == PIXY2_VECTOR && pixy.Pixy2_numVectors == 2)
Wael_H 0:8743b606abc3 107 {
Wael_H 0:8743b606abc3 108 Vector v1 = Vector(pixy.Pixy2_vectors[0].pixX0, pixy.Pixy2_vectors[0].pixY0, pixy.Pixy2_vectors[0].pixX1, pixy.Pixy2_vectors[0].pixY1);
Wael_H 0:8743b606abc3 109 Vector v2 = Vector(pixy.Pixy2_vectors[1].pixX0, pixy.Pixy2_vectors[1].pixY0, pixy.Pixy2_vectors[1].pixX1, pixy.Pixy2_vectors[1].pixY1);
Wael_H 0:8743b606abc3 110
Wael_H 0:8743b606abc3 111 return (v1.getNorme() + v2.getNorme()) / 2;
Wael_H 0:8743b606abc3 112 }
Wael_H 0:8743b606abc3 113
Wael_H 0:8743b606abc3 114 return -1;
Wael_H 0:8743b606abc3 115 }