LaDissertation.com - Dissertations, fiches de lectures, exemples du BAC
Recherche

Projet Pololu

TD : Projet Pololu. Recherche parmi 298 000+ dissertations

Par   •  7 Février 2019  •  TD  •  643 Mots (3 Pages)  •  389 Vues

Page 1 sur 3

MARCELLY Yohanne
JACQUET Baptiste

Rapport du projet Pololu

Interface Homme Machine

Voici l’interface homme machine que nous avons implémentée :

[pic 1]

Notre IHM nous permet de choisir la fonction automatique (suivi de ligne, sortie du labyrinthe) ou manuelle (contrôle par les touches z,q,s,d espace ou les flèches directionnelles ).
Nous affichons aussi l’état de la batterie.
De plus, la fonction replay qui permet de rejouer un chemin enregistré simplifiée est aussi implémentée, le chemin est enregistré par la fonction en C du pololu.

Nous pouvons aussi mettre directement le numéro du port utilisé par le XBEE sans avoir à changer le code.

Les fonctions implémentées :

cont_man() :

Effectue le contrôle manuel. La commande (car) est passée par sous forme de variable locale.
Elle est ensuite comparé dans un switch case aux cas possibles.
On peut tourner à droite ‘r’, à gauche ‘l’, avancer ‘f’, reculer ‘b’, accélérer ‘u’, ralentir  ‘d’ .

suivit_lgn() :

Suivit de ligne simple utilisé avant l’implémentation de PID.
En pratique il reçoit la position relative du robot par rapport à la ligne (pos).
Pos=0 on est centré
Pos=+ ou- 1 complètement excentré.
Si on est excentré de plus de la moitié (pos=(-/+)0.5) on tourne pour ce recentrer. Sinon on va tout droit.

PID() :

Calcul du PID tel qu’il est décrit dans l’énoncé. Les paramètres utilisés sont
Kp= 0.4 ; Ki= 0.00003 ; Kd= 0.1
Ce sont les termes utilisés dans l’énonce, pour leurs valeurs ce sont celles du code de l’année dernière alors pour justifier …

sort_lab() :

Fonction utilisée pour sortir du labyrinthe dans la demo.
On commence par regarder si on est arrivé. Pour cela à chaque fois que tous les capteurs sont tous devant du noir on incrémente un compteur. Si ce compteur atteint une certaine valeur on considère qu’on est arrivé.  Dans le cas ou on détecte un autre cas de figure on met ce compteur à  0 pour éviter que passer devant une intersection en crois 3 fois puisse faire croire au programme qu’on est arrivé.

Ensuite on regarde dans quelle direction aller :
On fonctionne avec des if, else if pour donner des priorité. Dans l’ordre décroissant des priorités  on tourne à droite, va tout droit, tourne à gauche et fait demi tour.

Pour tourner à droite on utilise la fonction right() et on attend un petit moment  avec un wait pour être sur d’avoir assez tourner. Une piste d’amélioration pourrait être de contrôler le mouvement de chaque moteur directement pour tourner plus rapidement.

Pour tourner à gauche on fait de même mais dans l’autre sens.

Pour aller tout droit on utilise tout simplement le PID() car il privilégie la trajectoire la plus rectiligne.

Pour faire demi-tour on se contente de tourner à droite sur place jusqu’à ce qu’on retombe sur l’un des cas précédents.

Finalement pour faire fonctionner les deux fonctions suivantes on voulait enregistrer la trajectoire prise. Malheureusement cet enregistrement perturbe actuellement le fonctionnement de la fonction (prend trop de temps), il est donc commenté. Cela implique que les deux fonctions ci-dessous ne sont pas testées.

...

Télécharger au format  txt (4.2 Kb)   pdf (155.6 Kb)   docx (230.5 Kb)  
Voir 2 pages de plus »
Uniquement disponible sur LaDissertation.com