AresENSEA-CDF2020
/
AresCDFMainCode_capteur_US
Capteur_US
Diff: odo_asserv.cpp
- Revision:
- 5:34ed652f8c31
- Parent:
- 3:3ba377aafdfd
- Child:
- 6:ea6b30c4bb01
--- a/odo_asserv.cpp Sat Jul 18 17:09:08 2020 +0000 +++ b/odo_asserv.cpp Tue Jul 21 19:33:38 2020 +0000 @@ -1,11 +1,5 @@ //Nom du fichier : odo_asserv.cpp #include "pins.h" -#define Pi 3.14159265359 - -#define capt 1000 // Nb d'impulsions -#define ecart 245 // Distance en mm entre les deux roues codeuses -#define diametreRoueCodeuse 51.450 // Diamètre de la roue codeuse en mm -#define perimetreRoueCodeuse (diametreRoueCodeuse * Pi) // Variables globales // cpt_cdgA est le compteur d'impulsion du codeur de gauche @@ -15,11 +9,11 @@ void odometrie(){ - float distG = (cpt_cdgA * perimetreRoueCodeuse) / capt; // 1000 est le nombre d'impulsions par tour de la roue codeuse - float distD = (cpt_cddA * perimetreRoueCodeuse) / capt; // 1000 est le nombre d'impulsions par tour de la roue codeuse + float distG = (cpt_cdgA * perimetreRoueCodeuse) / NbPulseCodeur; // 1000 est le nombre d'impulsions par tour de la roue codeuse + float distD = (cpt_cddA * perimetreRoueCodeuse) / NbPulseCodeur; // 1000 est le nombre d'impulsions par tour de la roue codeuse float distRobot = (distG + distD) / 2; // Distance parcourue par le robot (en mm) - float rayon = (ecart /2) * ((distD + distG) / (distD - distD)); // Trajectoire s'apparente à un cercle + float rayon = (ecartCodeuse /2) * ((distD + distG) / (distD - distD)); // Trajectoire s'apparente à un cercle float dTheta = distRobot / rayon; // Changement d'orientation => Commande float posX0 = posX - rayon*cos(theta);