Robot Maqueen et HuskyLens

Le robot Maqueen est un excellent choix pour accompagner le micro:bit. Il possède un buzzer, un récepteur infrarouge, 2 LED rouges, 4 LED Neopixel, des capteurs de suivi de ligne ainsi que de nombreux connecteurs qui vous permettrons de brancher les modules de votre choix (servomoteurs, capteur de distance à ultrason SR04…).
Mais je ne vais revenir dessus, puisse que je vous en ai déjà parlé dans mon livre sur le micro:bit.

Robot Maqueen dans mon livre sur le micro:bit

Ce qui m’intéresse maintenant, c’est d’utiliser la caméra « intelligente » HuskyLens (que je vous ai présenté dans mon précédent article) pour piloter le robot Maqueen. Le but est de suivre une ligne en utilisant le sens de la vue à la place du capteur classique de suivi de ligne.

Robot Maqueen équipé de la carte HuskyLens

La carte HuskyLens ainsi que le robot Maqueen m’ont été fournie gratuitement par DFRobot. Nous pouvons donc considérer que cet article est sponsorisé. Toutefois, je ne touche aucune commission sur la vente de ces produits. Bien sûr, je conserve une complète liberté de parole, mais je n’aurais certainement pris le temps d’écrire cet article si je n’aimais pas le matériel.

Branchement

Le branchement est très simple, il suffit d’utiliser le câble fourni. Mais vérifiez quand même que tout est correct avant de mettre sous tension, parce qu’une inversion de fils pourrait endommager définitivement votre matériel.

Branchement de la carte HuskyLens

Le suivi de ligne

HuskyLens doit d’abord apprendre à reconnaitre la ligne à suivre. Ensuite il sera capable d’indiquer sa position sur l’écran (et donc de corriger la position du robot).

Sélectionnez « Line Tracking » avec le bouton de fonctions et pointez la caméra vers la ligne (évitez les croisements, car il ne doit y en avoir qu’une seule ligne). Positionnez le symbole « + » sur la ligne, puis appuyez brièvement sur le bouton d’apprentissage (le bouton poussoir classique).

Reconnaissance de la ligne

Lorsque la ligne est détectée, la flèche devient bleu (ce qui signifie que la ligne est bien reconnu). Si vous avez besoin d’apprendre à reconnaitre une autre ligne, vous devez effacer les paramètres de la ligne précédemment enregistrée. Pour cela, réappuyez sur le bouton d’apprentissage, puis une nouvelle fois pour valider lorsque le message « Click again to Forget! » s’affiche avec un compte à rebours (recommencez ensuite l’apprentissage). Je n’entre pas dans les détails parce que c’est exactement le même principe que pour la reconnaissance des visages, des couleurs, des objets ou des Tags. Pour plus d’informations, vous pouvez lire (ou relire) l’article de présentation de la carte HuskyLens.

Choix du langage de programmation

Il existe bien une bibliothèque HuskyLens pour MakeCode, mais actuellement elle ne fonctionne pas. Un message d’erreur indique sans plus de détails que la compilation a échoué.

Bibliothèque HuskyLens de MakeCode

Heureusement, il existe d’autres solutions. Le plus simple est d’utiliser Mind+ (le lien est en bas de la page). C’est un langage de programmation développé par DFRobot. Après l’installation, si l’interface est en chinois, cliquez sur le petit engrenage pour choisir une autre langue.

Choix de la langue sous Mind+

Programmation

L’interface ressemble un beaucoup à Scratch (et à mBlock). Pour commencer, sélectionner le mode Offline (en haut à droite) et cliquez sur Extensions (en bas à gauche).

Paramétrage de Mind+

Si vous possédez le robot Maqueen plus sélectionnez Microbit dans l’onglet Carte

Choix de la carte micro:bit sous Mind+

et Maqueen Plus dans l’onglet Shield

Sélection du robot Maqueen Plus sous Mind+

Mais si comme moi, vous possédez le robot Maqueen de base sélectionnez Maqueen dans l’onglet Kit

Sélection du robot Maqueen sous Mind+

Ensuite, quelle que soit votre version du robot, sélectionnez HUSKYLENS AI Camera dans l’onglet Capteur. Puis, cliquez sur Retour (en haut à gauche).

Sélection du capteur Huskylens sous Mind+

Le principe du programme est très simple, lorsque HuskyLens détecte la ligne, il envoie au robot sa position sur l’axe X :

  • Si la ligne est bien au centre, la valeur envoyée s’approche de 160 (entre 150 et 170) et le robot peut avancer en ligne droite
  • Si la ligne est à gauche de l’écran, la valeur est inférieure à 150, il faut donc tourner à gauche pour compenser
  • Si la ligne est à droite de l’écran, la valeur est supérieure à 170, il faut donc tourner à droite pour compenser dans l’autre sens

Vous pouvez reproduire le code ci-dessous :

Programme de suivi de ligne sous Mind+

Connectez ensuite le micro:bit, sélectionnez-le dans le menu Connecter le périphérique et cliquez sur Télécharger pour envoyer le programme à la carte micro:bit.

Téléversement sous Mind+

Inclinez la caméra, pour que le robot ne voit pas trop loin. La piste peut être faite avec une simple nappe en papier, avec une ligne au marqueur ou au ruban adhésif noir. Mais vous en trouverez de nombreux modèles dans le commerce.

Attention, les virages ne doivent pas être trop serrés, sinon le robot perdra la ligne.

Inclinaison de la caméra

Vous pouvez aussi affiner un peu le programme en fonction de la distance entre la ligne et le centre de l’écran, voilà par exemple une version un peu améliorée (bien sûr vous devrez peut être l’adapter à votre piste). Le programme de base reste inchangé, seule la fonction SuiviDeLigne a été modifiée.

Amélioration du programme de suivi de ligne sous Mind+

Conclusion

Voilà le résultat :

Il est également possible de relier Huskylens à un robot piloté par Arduino ou Raspberry Pi, mais je n’ai pas (encore) essayé.

Sources et liens utiles


Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s