MR-25 est un petit robot mobile basé sur une carte Raspberry Pi. Il est très facile à programmer et personnalisable. Sa petite taille vous permet de facilement le programmer sur une table de bureau.
Ce robot est fabriqué de manière artisanale en Bretagne !
MADE IN FRANCE
Caractéristiquestechniques:
Dimensions :
Diamètre de 130 mm
Hauteur : 85 mm
Compatible avec la carte Raspberry Pi 3, 4, 2W ou 5
Une Led RGB
Coprocesseur : Raspberry Pi Pico
Un buzzer
Un capteur de courant, mesure tension batterie
Deux encodeurs magnétiques
Deux moteurs à courant continu 100 RPM
5 capteurs de distances Time-of-Flight VL6180X.
Batterie : 3 accumulateurs 18650 lithuim
Un bouton on/off
Un connecteur de rechargement de la batterie
Exemple de création de carte avec les capteurs :
Robot programmable :
Le robot MR-25 est programmable en langage Python3 :
Traitement d’images
Le robot MR-25 peut être équipé d’une caméra Pi pour faire du traitement d’images avec Open Cv.
Ensuite on va filtrer les parties claires de l’image pour ne garder les parties noires, pour cela, un filtre de seuillage est appliqué:
# Color thresholding
ret,thresh = cv2.threshold(blur,60,255,cv2.THRESH_BINARY_INV)
Détection de contours
Ensuite, on va utiliser openCV pour détecter les contours:
# Find the contours of the frame
contours,hierarchy = cv2.findContours(thresh.copy(), 1, cv2.CHAIN_APPROX_NONE)
Extraction du plus gros contour
Il nous faut ensuite extraire la ligne la plus large trouvée afin d’éliminer les fausses détections:
# Find the biggest contour (if detected)iflen(contours) >0:
c =max(contours, key=cv2.contourArea)
M = cv2.moments(c)
# Skip to avoid div by zeroifint(M['m00']) ==0:
continue
Calcul du milieu de la ligne
Une fois les contours de la ligne détectée, on calcul le centre de la ligne, c’est la que l’on veut que le robot aille:
# Get the line center
cx =int(M['m10']/M['m00'])
cy =int(M['m01']/M['m00'])
Contrôle des moteurs
Une correction proportionnelle à la différence entre la position de la ligne et le milieu de l’image est calculée. Les moteurs sont ensuite commandés pour ralentir un des moteurs et accélérer l’autre, ceci afin de faire tourner le robot en direction du centre de la ligne.