Smart Camera de Makeblock

J’aime bien les robots Makeblock, ils sont de bonne qualité, mais surtout ils sont évolutifs. Vous pouvez très bien débuter par le modèle de base (mBot 1 ou 2) et rajouter plus tard de nouvelles fonctions (capteurs, écrans, servomoteur…).

C’est un peu comme un jeu de Meccano, le châssis possède de nombreux trous pour fixer d’autres éléments. Makeblock propose déjà de nombreuses extensions (sous forme de kit), mais si vous êtes un peu bricoleur, vous pouvez très bien fabriquer vous même vos modules ou vos éléments de décoration (pare-choc, moustaches, etc…).

Extensions mBot

Si vous voulez en savoir plus, vous pouvez consulter mon livre qui traite en détail de ce sujet au chapitre des robots pédagogiques.

La Smart Camera de Makeblock est une caméra « intelligente ». Elle intègre un système d’analyse des images qui lui permet de reconnaitre les couleurs, suivre une ligne ou même lire certains codes barres. Souvenez vous, l’année dernière je vous ai présenté le HuskyLens, un module similaire conçu par DFRobot pour son robot Maqueen.

Puisqu’il existe l’équivalent chez Makeblock (pour les robots mBot), j’ai eu envie d’essayer.

J’ai contacté Technologie services qui a accepté de m’envoyer gratuitement une Smart Camera (pour en parler dans cet article et la vidéo qui l’accompagne). Il s’agit donc d’un article sponsorisé, cependant je n’ai reçu aucune instructions spécifique et bien sûr je ne touche aucune commission sur les ventes.

Présentation en Vidéo

Contenu de la boite

La boite est de très bonne qualité, vous y trouverez le système de fixation (pièces métalliques, vis et écrous), les câbles pour relier entre eux les différents éléments, des balles vertes et jaune/oranges, un assortiment codes barre (sous formes de cartes et d’autocollants) et bien sûr la caméra accompagnée de sa batterie rechargeable.

Smart Camera dans sa boite

La caméra

La caméra possède un bouton d’apprentissage, une LED témoin (RGB) et une LED blanche très lumineuse. Le robot mBot sera branché sur le port I2C (avec un câble adaptateur vers le port RJ25 du robot). Comme la plupart des modules Makeblock récents, la caméra est équipée de 2 connecteurs mBuild. L’un d’eux permet de brancher la batterie rechargeable fournie dans le pack et l’autre pourrait être relié à une carte Halocode ou un robot mBot2 (mais je n’ai pas testé). Vous pouvez également alimenter la caméra avec une batterie lithium 3,7V (non fournie).

La Smart Camera en détail

Branchement

Voilà le schéma de branchement de la caméra au robot mBot. Vous n’êtes pas obligé d’utiliser le port n°3, il suffira simplement de l’indiquer dans votre programme.

Branchement de la Smart Camera au robot mBot v1

Suivi de couleurs

La caméra est capable de mémoriser jusqu’à 7 couleurs différentes. Elle pourra ensuite les reconnaitre et suivre un objet (de cette couleur).

Comme indiqué dans la documentation de Makeblock, j’ai fixé la Smart Camera à l’avant avec l’équerre inclinée à 45° et la batterie à l’arrière avec l’équerre à 90° (ça fonctionne très bien et c’est très facile puisque tous les éléments sont fournis dans la boite).

Montage de  la Smart Camera sur le robot mBot

Pour faciliter la reconnaissance des couleurs, choisissez plutôt des objets monochrome, suffisamment grands et avec des couleurs bien marquées. Attention, la couleur change en fonction de la lumière. Pour éviter les problèmes, utilisez (si possible) la caméra dans le même environnement lumineux que pour l’apprentissage des couleurs. Faites aussi attention aux autres objets pouvant se trouver dans le champ de vision de la caméra. S’ils ont une couleur proche, il y a un risque de tromper la caméra.

Exemples d'objets monochromes faciles à reconnaitre

Mémorisation des couleurs

L’apprentissage des couleurs peut se faire directement depuis l’interface (le bouton poussoir) de la caméra :

  • Allumez la caméra (avec l’interrupteur situé sur la batterie),
  • Appuyez longuement sur le bouton d’apprentissage (la LED RGB s’allume successivement en rouge, orange, jaune, vert, cyan, bleu et violet).
  • Relâchez le bouton
  • Placez un objet de couleur devant la caméra, la LED RGB change de couleur (à peu près la même que l’objet)
  • Appuyez brièvement sur le bouton pour apprendre la couleur
  • Maintenant, en présence de l’objet, la LED RGB s’allume de la couleur correspondante (et si on éteint la caméra, les informations sont conservées).
Apprentissage des couleurs avec la Smart Camera de Makeblock

Cette méthode fonctionne, mais comme la Smart Camera ne possède pas d’écran, il est difficile de se rendre compte de ce qu’elle « voit » réellement. Après quelques essais on ne sait plus quel numéro correspond à chacune des couleurs et en cas d’erreur, il est impossible de tout effacer pour recommencer le processus d’apprentissage sur de bonnes bases.

Heureusement, il existe une autre solution. Téléchargez (et installez) PixyMon (v2), lancez le logiciel et reliez la caméra à l’ordinateur (en USB). L’image apparait telle qu’elle est vue par la caméra, la résolution est très faible mais ça n’a pas vraiment d’importance (on ne va pas l’utiliser pour filmer le mariage de notre cousine). Allez dans Program, sélectionnez color_connected_components et ensuite allez dans Action – Set signature 1… pour mémoriser une couleur.

Sélection du mode color_connected_component  de l'apprentissage d'une couleur avec PixiMon

Encadrez la zone avec la souris (en cliquant avec le bouton gauche). Lorsque vous relâchez, la couleur est enregistrée (en cas d’erreur, il suffit de recommencer cette opération).

Apprentissage d'une couleur avec PixiMon

Vous pouvez enregistrer d’autres couleurs, effacer une seule couleur (Action – Set CC signature x…), toutes les couleurs mémorisées (Action – Clear all signatures) ou restaurer la configuration par défaut (File – Restore default parameters).

Utilisation de PixiMon

Programmation du robot

Téléchargez et installez la dernière version de mBlock. Lancez le programme, cliquez sur ajouter (à gauche), sélectionnez mBot et cliquez sur OK.

Sélection du robot mBot dans mBlock 5

Pour obtenir les blocs nécessaires à la programmation de la Smart Camera, cliquez sur extension, puis sur Ajouter (en bas de Smart Camera). Sélectionnez ensuite le mode Téléverser (ça ne fonctionne pas en mode En direct).

Ajout de la Smart Camera dans mBlock5

Ces 2 exemples de code sont inspirés de la documentation Makeblock (le lien est en bas de la page). Ils permettent de suivre la couleur 1, mais vous pouvez facilement les modifier pour qu’ils en suivent une autre. Le premier programme est très facile à comprendre.

Code de suivi de ligne simple

Mais le second est beaucoup plus performant.

Code de suivi de ligne plus performant

Suivi d’un autre robot

J’ai modélisé une boule et un support pour la fixer au robot (avec des vis et des écrous M4).

Support pour boule fixé au robot mBot

Si cela vous intéresse, les fichiers 3D sont disponibles sur Printables.

Pièces à imprimer (disponibles sur Prusa Printers)

Le robot bleu suit la boule verte du robot rose (en mode suivi de ligne).

Le robot bleu poursuit le robot rose équipé d'une boule verte

Suivi de ligne

La caméra est également capable de détecter une ligne (pour que le robot puisse la suivre). D’après la documentation officielle, il faut que la caméra soit plus haute, mais également parallèle à la ligne.

Installation de la caméra pour suivre une ligne

Malheureusement, le grand mât qui apparait sur le schéma n’est pas fourni dans la boite et en plus la longueur du câble d’alimentation ne permettrait pas de placer aussi haut la caméra (ou alors, il faudrait déplacer la batterie).

Il faudra donc bricoler un support, mais si vous disposez d’une imprimante 3D, vous pouvez utiliser les mêmes fichiers que moi (disponibles ici).

Pour que cela fonctionne, il faut régler avec soin l’angle de la caméra, l’allumer avant le robot, attendre quelques instants pour que le robot détecte la ligne et appuyer ensuite sur le bouton (pour que le robot démarre).

Utilisation de supports imprimés en 3D pour fixer la caméra en mode suivi de ligne

Vous pouvez utiliser cet exemple de code (inspiré par celui de MakeBlock) :

Exemple de code de suivi de ligne

Sur une piste classique, la Smart Camera est un peu décevante puisqu’un simple capteur de suivi de ligne est bien plus performant (mais c’est normal, puisque les pistes sont destinées à ce type de capteur).

Le robot suit la ligne

Cependant, la caméra est capable de détecter un simple trait sur une grande feuille. Cela permet de tester rapidement de nouveaux tracés et ouvre de nouvelles possibilités. Par exemple, vous pouvez fabriquer une piste géante en quelques minutes en déployant une nappe en papier sur le sol et en traçant rapidement une ligne au feutre.

La caméra des capable de suivre une ligne beaucoup plus fine

Code barres

La caméra peut également reconnaitre les étiquettes (codes barres). Elles sont fournies avec la Smart Camera, mais pouvez aussi les imprimer vous même (le lien est à la fin de l’article). Ensuite, il suffit simplement de les disposer sur la piste pour que la caméra puisse les lire. Attention, si l’étiquette est à l’envers, elle ne sera pas prise en compte.

La caméra lit les étiquettes (codes barres)

Voilà par exemple comment changer la couleur des LED ou stopper le robot (avec les étiquettes) :

Exemple de code de suivi de ligne avec lecture d'étiquettes

Conclusion

C’est une extension étonnante et amusante pour le robot mBot. J’ai présenté la caméra en mars dernier à la MakerFight de Mulhouse et elle a beaucoup plu aux visiteurs.

Sources et liens utiles


11 réflexions sur “Smart Camera de Makeblock

  1. Merci pour votre vidéo sur la Smart caméra. Votre robot suit extrêmement bien la balle. J’ai essayé le deuxième programme, qui est beaucoup plus performant, mais avec un Mbot2. Pour ma part, le résultat n’est pas concluant. Avez-vous testé le suivi d’une balle avec un Mbot2 ? Merci d’avance pour votre retour. Cordialement

    J’aime

    1. Bonjour Serge,
      Une bonne reconnaissance des couleurs dépend énormément de la lumière, essayez de refaire le processus d’apprentissage que j’ai indiqué dans l’article sur fond neutre et dans les mêmes condition lumineuses que les tests de fonctionnement du robot.
      Sinon, je n’ai pas testé avec le Mbot2, regardez du coté de la documentation officielle de Makeblock.
      Bon courage

      J’aime

      1. Merci pour votre retour. Je vais suivre vos conseils et je permettrai de vous renvoyer un message pour vous donner le résultat. Encore un grand merci pour votre vidéo qui nous a fait gagner un temps précieux. Bien cordialement

        Aimé par 1 personne

  2. Bonjour, mes élèves d’atelier veulent absolument reproduire votre vidéo où le robot suis un autre robot mais avec les Mbot 2 qu’ils ont en leur possession. Le résultat n’est pas probant. Auriez-vous l’occasion de tester avec un Mbot 2 pour les aider ? Bien cordialement

    J’aime

    1. Bonjour Serge,
      Je suis désolé mais je n’aurai malheureusement pas le temps de faire cela dans les semaines qui viennent. Cependant, je garde quand même votre suggestion dans un coin de ma tète (ce sera peut être pour un prochain article…).
      Bien cordialement

      J’aime

      1. Merci, je dirai à mes élèves de suivre attentivement votre blog. En tout cas, merci pour votre réponse rapide. Bien cordialement

        J’aime

  3. Bonjour,

    J’ai découvert votre blog sur la smart camera. Très intéressant

    Je dispose d’un Mbot2 et essaie de faire fonctionner la caméra pour faire de la détection d’objet.

    En vrac les difficultés rencontrées :

    • Qualité de reconnaissance disons très variable. Il faut faire très attention au fond et à l’éclairage. Sinon détection de faux objets.
    • Les objets « appris » ne semblent pas être conservés en mémoire suite à coupure d’alimentation malgré l’utilisation de « Save image ». Votre avis ?
    • Je ne suis pas arrivé à utiliser de manière fiable l’instruction « définir correction X (ou Y) avec calcule la vitesse différentielle du moteur (suivi automatique du bloc de couleur 1 à x (ou Y) de l’axe « . L es valeurs calculées sont instables. Avez-vous essayé le programme décrit dans votre blog ? J’ai péniblement mis au point un programme pour se diriger par rapport aux détections des X et Y par la caméra.

    Bien cordialement

    J’aime

    1. Bonjour,
      Effectivement la reconnaissance des couleurs dépend beaucoup de l’éclairage, c’est pour ça que je conseille de relier la caméra à un ordinateur pour vérifier qu’elle voit bien les objets.
      Bien sûr, tous les programmes décris dans mon blog ont été testés et fonctionnent à condition de les reproduire dans les mêmes conditions (moi, j’ai utilisé le mBot 1).
      Bien Cordialement

      J’aime

  4. Bonjour,

    Merci pour votre réponse, je ferai des tests complémentaires et pourrais faire un retour d’expérience à partir d’un Mbot2

    Concernant la mémorisation de l’apprentissage dans la caméra, avez-vous une astuce pour que celle ci fonctionne, ou bien est-ce un bug ?

    Bien cordialement

    J’aime

  5. Je vais refaire des tests car comme vous l’indiquer l’éclairage est vraiment très important.

    Je vous tiendrai au courant. Un grand merci pour la réactivité.

    J’aime

Laisser un commentaire