Un nouveau tutoriel pour le robot MRPiZ :
https://fr.macerobotics.com/developpeur/partie-1-tracking-dune-balle-coloree/
Un nouveau tutoriel pour le robot MRPiZ :
https://fr.macerobotics.com/developpeur/partie-1-tracking-dune-balle-coloree/
Tutoriel sur le lancement d’un script python au démarrage d’une robot MRPiZ.
$ chmod +x script.py
$ sudo nano /etc/rc.local
Exemple pour un script dans le répertoire /home/pi
python /home/pi/script.py &
Fin du tuto !
Kicad version : 5.0.1
Un tutoriel pour générer les fichiers de fabrication d’un circuit imprimé sous le logiciel libre KiCad.
Dans Pcbnew :
Après avoir terminer le routage de votre carte électronique :
Exemple pour un circuit imprimé avec 2 couches :
Fin du tuto !
Ce tutorial présente l’implémentation d’un suivi de ligne pour le robot mobile MRPiZ.
Deux méthodes sont possibles pour accéder à la caméra:
Il nous faut donc activer v4l:
$ sudo modprobe bcm2835-v4l2
Le fichier complet se trouve dans Software/Python/tutorials/line_follower/line.py.
Warning
Utilisez CTRL+C pour arrêter le robot.
import numpy as np
import cv2
import sys
from mrpiZ_lib import *
# image size
WIDTH = 640
HEIGHT = 480
# turn coeff
COEFF = 0.05
# base robot speed in straight line
SPEED = 30
Pour améliorer les performances, la résolution est réduite à 640 pixels en largeur et 480 en hauteur.
video_capture = cv2.VideoCapture(0)
video_capture.set(3, WIDTH)
video_capture.set(4, HEIGHT)
La boucle principale va fonctionner à l’infini, pour l’arrêter il faudra appuyer sur CTRL+C.
try:
while(True):
Première étape, on commence par capturer une image.
# Capture the frames
ret, frame = video_capture.read()
Voici un exemple d’image capturée:
Pour améliorer les performances, on ne va garder que la partie basse de l’image:
# Crop the image
# Keep the 100 lower pixels
crop_img = frame[379:480, 0:640]
Ensuite on passe l’image en niveaux de gris:
# Convert to grayscale
gray = cv2.cvtColor(crop_img, cv2.COLOR_BGR2GRAY)
Un filtre afin de rendre flou les lignes de l’image est appliqué, il permet de rendre plus efficace les étapes suivantes:
# Gaussian blur
blur = cv2.GaussianBlur(gray,(5,5),0)
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)
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)
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)
if len(contours) > 0:
c = max(contours, key=cv2.contourArea)
M = cv2.moments(c)
# Skip to avoid div by zero
if int(M['m00']) == 0:
continue
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'])
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.
delta = COEFF * (cx - 320)
motorRight(0, SPEED - delta)
motorLeft(0, SPEED + delta)
Enfin, deux lignes de code permettent d’arrêter le robot quand on appuie sur CTRL+C.
except KeyboardInterrupt:
stop()
Tutoriel pour faire dessiner le robot MRduino2.
Matériel nécessaire:
Un simple programme pour faire un cercle :
Une autre manière de faire un cercle plus grand en utilisant un seul moteur :
Petit exercice,comment dessiner un très grand cercle ?
La réponse :
Un petit programme Blockly pour dessiner des vagues avec le robot MRduino2:
Un programme pour dessiner un carré :
Fin du tuto, à vous de réaliser vos propres dessins.
Mise à jour du guide de démarrage du robot MRduino2 le 14/11/2018.