HuskyLens : pilote MicroPython pour la caméra de Vision propulsée par intelligence artificielle
Bonjour à tous,
Cela faisait un moment que nous n'avions rien publié.
Alors pour bien débuter la nouvelle année, je vous propose de nous pencher sur un nouveau pilote MicroPython pour HuskyLens.
A propos de HuskyLens
HuskyLens et MicroPython |
HuskyLens est un module de Vision HuskyLens propulsé par une intelligence artificielle (IA / AI) grâce au processeur Kendrite.
Grâce à ce processeur, HuskyLens propose 7 algorithmes pré-programmés:
- Reconnaissance faciale (Face Recognition),
- Suivit d'objet (Object Tracking),
- Identification d'objet (Object Recognition),
- Suivit de parcours (Line Tracking),
- identification de couleurs (Color Recognition),
- Capture de Tag (Tag Recognition, il y en a plus de 500)
- Classification
Les deux images ci-dessous, capturées depuis HuskyLens montre l'utilisation en suivi d'objet et suivi de parcours.
suivit de parcours (line tracking) |
L'image ci-dessous indique clairement que l'objet a été reconnu (puisqu'il est entouré) et porte également un numéro d'indice.
Suivit d'objet (Object Tracking) |
Ce qui serait intéressant, c'est de pouvoir récupérer ces données sur notre un microcontrôleur MicroPython.
Raccordement sur Pico
HuskyLens dispose d'un port de communication permettant d'établir une liaison UART ou I2C.
HuskyLens branché sur Pico via I2C Source: Pilote HuskyLens pour MicroPython |
Il faut bien entendu configurer HuskyLens (via son menu utilisateur) pour communiquer en I2C.
Bibliothèque husky.py
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.
Notre dépôt GitHub inclus maintenant une bibliothèque, des exemples et de la documentation pour HuskyLens.
Un fois la bibliothèque installée, il est possible d'interroger le HuskyLens pour obtenir les éléments qu'il a identifié et leur position.
Voici le contenu du script simple.py réalisant justement cette tâche.
from husky import * from machine import I2C import time # === Configuration =============== # Raspberry-Pi Pico: SDA=green(T)=gp8, SCL=blue(R)=gp9 # # 1. Vérifier le [Protocol Type] dans le HUSKYLENS via le menu # (General Settings >> Protocol Type >> I2C) # 2. Vérifier le câblage en cas de problème de communication # i2c = I2C( 0, freq=100000 ) hl = HuskyLens( i2c=i2c ) # === Boucle principale =========== while True: lst = hl.get_all() # Requête de tous les blocs et flèches # Rien réceptionné ? if not(lst): print( "Pas d objet receptionné depuis Huskylens!" ) continue # Afficher les données réceptionnées ? print( "-----------------------------------" ) for item in lst: # Les objets dans la liste résultante (lst) sont typés if type(item) is Box: print( "Element est un BOX. Center est %i,%i. Largeur=%i. Hauteur=%i" % ( item.center.x, item.center.y, item.width, item.height) ) elif type( item ) is Arrow: print( "Element est un Arrow. Origin est %i,%i, destubatuib est %i,%i" % ( item.origin.x, item.origin.y, item.target.x, item.target.y) ) else: print( 'Element est %r' % (idx,item) ) # %r: affiche la représentation de l'objet # Ne pas noyer l'écran d'information time.sleep( 0.7 )
Alors le code est relativement simple: il interroge HuskyLens, réceptionne une liste des objets identifiés (des boîtes/Box ou des flèches/Arrow).
Il ne reste plus qu'a afficher les paramètres des Box et des Arrow.
Voici le résultat pour le suivit de parcours que l'on peut mettre en relation avec les axes et unités du HuskyLens.
suivit de parcours (line tracking) |
item 0 is an Arrow. Origin is 240,196, Target is 152,0 ----------------------------------- item 0 is an Arrow. Origin is 224,238, Target is 144,0 ----------------------------------- item 0 is an Arrow. Origin is 224,238, Target is 144,0 ----------------------------------- item 0 is an Arrow. Origin is 224,238, Target is 144,0 ----------------------------------- item 0 is an Arrow. Origin is 216,238, Target is 136,0 ----------------------------------- item 0 is an Arrow. Origin is 216,238, Target is 136,0
Voici ce que cela donne dans le cas du suivit d'objet.
Suivit d'objet (Object Tracking) |
----------------------------------- item 0 is a BOX. Center is 144,112. Width=134. Height=135 ----------------------------------- item 0 is a BOX. Center is 146,127. Width=131. Height=132 ----------------------------------- item 0 is a BOX. Center is 132,129. Width=132. Height=133 ----------------------------------- item 0 is a BOX. Center is 129,132. Width=131. Height=132 ----------------------------------- item 0 is a BOX. Center is 129,130. Width=133. Height=134 ----------------------------------- item 0 is a BOX. Center is 126,129. Width=135. Height=136
Encore plus
Notre dépôt GitHub contient de nombreuses autres informations et exemples n'hésitez pas à aller y jeter un oeil.
Liste d'achat
- Raspberry-Pi Pico @ MCHobby
- HuskyLens @ MCHobby
Écrire un commentaire