Cours:TPS 2103 tp pixy : Différence entre versions
(→Mise en garde contre les loop/setup) |
(→Mise en garde contre les loop/setup) |
||
Ligne 30 : | Ligne 30 : | ||
** lorsque c'est possible, il est plus judicieux d'écrire ** | ** lorsque c'est possible, il est plus judicieux d'écrire ** | ||
** la fonction main dans votre programme ** | ** la fonction main dans votre programme ** | ||
+ | ** ainsi il n'y a rien de caché dans votre code ** | ||
************************************************************ | ************************************************************ | ||
Version du 24 mars 2024 à 18:14
Vous allez faire un tracking de balle de tennis avec une caméra pixy et un servomoteur.
Sommaire
Mise en garde contre les loop/setup
Si vous n'écrivez pas la fonction main mais à la place les fonctions loop/setup, le "main Arduino" est exécuté.
Son code est à peu près :
int main(void)
{
init();
setup();
while(1)
{
loop();
}
}
Attention, la fonction init() modifie la configuration des Timers au démarrage du µcontrôleur. Il conviendra donc de réinitialiser les bits des registres des Timers
************************************************************ ** lorsque c'est possible, il est plus judicieux d'écrire ** ** la fonction main dans votre programme ** ** ainsi il n'y a rien de caché dans votre code ** ************************************************************
pixymon
Le logiciel pixymon permet de configurer la caméra pixy, connectée en usb :
https://docs.pixycam.com/wiki/doku.php?id=wiki:v2:teach_pixy_an_object_2
lancer le logiciel pour reconnaître les balles de tennis :
- dans le menu File, remettre les paramètres par défaut
- dans le menu Action, définir la couleur de la signature 1
Librairie arduino
sur la page suivante: https://pixycam.com/downloads-pixy2/
Télécharger et installer la librairie arduino pour la pixy
Utiliser le programme d'exemple de la librairie pixy ccc_hello_world pour vérifier le bon fonctionnement
Affichage de la position de la balle
Nous allons utiliser le shield LCD (cf TP précédent) pour afficher des informations sur l'objet détecté par la caméra pixy.
En utilisant la documentation sur la page suivante :
Afficher sur le l'écran LCD les coordonnées du centre de la balle de tennis
Rotation de la caméra
La caméra est montée sur un servomoteur que vous allez piloter pour centrer la balle sur l'image de la caméra.
Servomoteur
Nous avons vu dans un TP la configuration du timer pour utiliser un servomoteur. A défaut, vous pouvez utiliser la librairie servo.
connecter le servomoteur sur le connecteur CON_MLI en utilisant la page suivante : Cours:ShieldNanoinfo
Position de la balle
Faire en sorte que l'abscisse de la balle (variable positionBalle) soit comprise entre [-158 158], 0 au centre de l'image
Rque : pixy.ccc.blocks[i].m_x est une valeur entre 0 et 316
Déplacement dans la direction de la balle
Il reste à tout assembler.
Ecrire un programme qui change la position du servomoteur suivant le signe de posBalle :
- si posBalle est positif, augmenter la position du servomoteur
- si posBalle est négatif, diminuer la position du servomoteur
- ou le contraire !
Rque :
- Attention à ne pas dépasser les positions maxi/mini du servo
Correcteur proportionnel
Ecrire un programme qui change la position du servomoteur de façon plus efficace de la façon suivante :
PositionServo = PositionServo + k . positionBalle
Rque :
- Attention à ne pas dépasser les positions maxi/mini du servo