Tester un spoonBot#
spoonBot est un simple robot à entraînement différentiel doté d’une cuillère reliée à un servo qui lui permet d’effectuer des mouvements de panoramique et d’inclinaison. Consultez la page spoonBot-Construction pour des informations sur la construction de spoonBot. Le programme d’exemple fourni avec la dernière distribution cc3 contient un exemple de code démontrant comment déplacer spoonBot ainsi qu’exécuter le mode démo de spoonBot. Le mode démo de spoonBot est similaire au mode démo de la CMUcam2, sauf qu’il utilise spoonBot pour effectuer les mouvements de panoramique et d’inclinaison.
Calibrage de spoonBot#
Avant d’utiliser spoonBot, vous devez calibrer les réglages de vos servos. Cela se fait en définissant la structure de données suivante en haut de main :
// SpoonBot Calibration Points
// Assume Left = Servo 0
// Assume Right = Servo 1
// Assume Spoon = Servo 2
my_cal.left_mid = 71;
my_cal.right_mid = 77;
my_cal.spoon_down = 100;
my_cal.spoon_mid = 202;
my_cal.spoon_up = 255;
my_cal.left_dir = 1;
my_cal.right_dir = -1;
my_cal.spoon_dir = 1;
// Set the calibration points
spoonBot_calibrate (my_cal);
Flashez le micrologiciel d’émulation cmucam2 sur la caméra
Ouvrez soit le CMUcam3 Frame Grabber, soit un programme de terminal
À l’aide du Frame Grabber, allez dans le panneau « Settings » et faites glisser les barres de servo pour modifier les valeurs
Dans un terminal, tapez « sv <servo-id> <servo-value> » pour régler les servos, par exemple :
:sv 0 77 ACK
Trouvez la position médiane des servos 0 et 1 en les ajustant jusqu’à ce que les roues s’arrêtent
my_cal.left_mid = <valeur du servo 0>
my_cal.righ_mid = <valeur du servo 1>
Vous devez maintenant trouver le signe des directions
En regardant spoonBot par l’arrière (la cuillère vers vous), essayez de diminuer le numéro du servo 0 qui devrait être la roue gauche
si le servo tourne dans le sens horaire / vers l’arrière (vers vous), alors left_dir doit être réglé sur 1
si le servo tourne dans le sens antihoraire, left_dir doit être réglé sur -1
Répétez pour le servo 1 (qui devrait être la roue droite du point de vue de spoonBot)
si le servo tourne dans le sens horaire / vers l’arrière (vers vous), alors right_dir doit être réglé sur 1
si le servo tourne dans le sens antihoraire, right_dir doit être réglé sur -1
Généralement, un servo devrait être réglé sur négatif !
Maintenant, trouvez les positions Min, Middle et Max de la cuillère en ajustant le Servo 2
Min devrait être la plus petite valeur qui pousse la cuillère vers le bas et incline donc spoonBot vers l’avant
Réglez spoon_down en conséquence
Max vaut généralement 255 et devrait positionner spoonBot regardant le plus haut possible
Réglez spoon_up en conséquence
Middle est la valeur qui met le servo à l’horizontale
Réglez spoon_mid en conséquence
Si Min et Max semblent inversés, changez spoon_dir en -1
Une fois le calibrage terminé, recompilez le projet et FLASHEZ la CMUcam3. spoonBot exécutera d’abord une séquence de mouvements scriptés pour s’assurer que les servos sont configurés correctement. Ensuite, spoonBot attendra un appui sur un bouton pour commencer à suivre une couleur. Du texte est affiché via le port série pour vous informer des différentes étapes de fonctionnement.
Le mouvement scripté devrait être le suivant :
Rester immobile
Regarder vers le bas
Regarder vers le haut
Retour à la position médiane
Tourner dans le sens horaire (vu de dessus)
Tourner dans le sens antihoraire
LED rouge éteinte pendant que la caméra se prépare
La LED rouge s’allume lorsqu’elle est prête à suivre
Si cela semble correct, essayez de tenir un objet aux couleurs vives à quelques centimètres devant la caméra, puis appuyez sur le bouton. À mesure que vous éloignez l’objet, spoonBot devrait pivoter vers lui. Utilisez des objets aux couleurs vives et aussi uniformes que possible. Un objet comme un tissu rouge vif conviendrait bien puisqu’il réfléchit très peu de lumière (autre que le rouge pur). Assurez-vous qu’il y a suffisamment d’éclairage dans la pièce. Essayez de capturer une image pour voir à quoi ressemblent les conditions.
Remarque : si vous souhaitez désactiver les servos sans les débrancher, déconnectez le cavalier d’alimentation des servos (servo-power-jumper).