Test SunFounder PiCar-X 2.0 – Une voiture robot Raspberry Pi 4 AI programmable avec Blockly ou Python

Test SunFounder PiCar-X 2.0 - Une voiture robot Raspberry Pi 4 AI programmable avec Blockly ou Python

SunFounder PiCar-X 2.0 est une voiture robot autonome alimentée par l’IA utilisant le Raspberry Pi 3/4 comme carte de traitement principale. Il est équipé d’un module caméra déplaçable par un servomoteur 2 axes, permettant à la caméra d’effectuer un panoramique ou une inclinaison, d’un module ultrasonique pour détecter des objets distants et d’un module de détection de ligne. Le robot PiCar-X peut également effectuer des tâches de vision par ordinateur telles que la détection des couleurs, la détection des visages, la détection des panneaux de signalisation, l’évitement automatique des obstacles et le suivi automatique des lignes.

Le PiCar-X peut être programmé avec deux langages informatiques : le programme glisser-déposer Ezblock Studio basé sur Blockly et Python, et le robot fonctionne avec la bibliothèque de vision par ordinateur OpenCV et TensorFlow pour les charges de travail d’IA. Enfin, vous pouvez également contrôler le robot via l’application contrôleur SunFounder sur votre téléphone mobile. La société nous a envoyé un échantillon du Picar-X 2.0 pour test, alors commençons.

Examen du robot SunFounder PICAR-X

Présentation du robot SunFounder PiCar-X 2.0

Kit de pièces SunFounder PICAR-X V2.0

Le kit robot PiCar-X est livré avec plusieurs pièces : une unité structurelle, des moteurs électriques à courant continu, des roues de robot, une carte d’extension RoboHat, un capteur à ultrasons, un capteur de ligne, un servomoteur, une batterie et un jeu d’écrous et de vis utilisés. pour l’assemblage. Puisqu’il s’agit d’un kit, les élèves devront l’assembler eux-mêmes et ainsi apprendre à assembler des robots et à connecter les fils de cet ensemble robot. Des détails supplémentaires et des instructions de montage peuvent être trouvés dans la documentation. Notre kit était également livré avec un Raspberry Pi 4 avec 4 Go de RAM.

CHAPEAU Robot SunFounder PiCar-X

Chapeau de robot PICAR-X

La carte d’extension SunFounder PiCar-X Robot HAT comprend un interrupteur marche/arrêt, deux ports d’entraînement de moteur pour connecter les moteurs gauche et droit et douze ports d’entraînement de servomoteur qui peuvent être utilisés pour diriger les roues de la voiture et contrôler l’inclinaison du véhicule. caméra. De plus, la carte d’extension Robot HAT comprend également un haut-parleur pour diffuser des effets sonores, des commentaires linguistiques ou de la musique MP3. Des ports d’extension pour ADC, PWM et I2C sont disponibles pour l’extension, et une batterie de 7 à 12 volts peut être connectée pour l’alimentation et chargée via un port USB-C avec une LED indiquant l’état de charge de la batterie.

Description du chapeau de robot

Spécifications du chapeau du robot PiCar-X :

  • Port moteur gauche/droite – ports XH2.54 à 2 canaux, un pour les moteurs gauche connectés au GPIO 4 et l’autre pour les moteurs droits connectés au GPIO 5.
  • 2x broches I2C de Raspberry Pi
  • PWM – 12x PWM (P0-P11)
  • 4x broches ADC (A0-A3)
  • 4x broches numériques (D0-D3)
  • Indicateurs d’état de la batterie
    • La LED 2 s’allume lorsque la tension est supérieure à 7,8 volts
    • La LED 1 s’allume lorsque la tension est comprise entre 6,7 et 7,8 volts
    • Les deux LED s’éteignent lorsque la tension est inférieure à 6,7 volts
  • Tension d’alimentation – 7 – 12 V CC via un connecteur PH2.0 à 2 broches qui peut être utilisé pour alimenter le Raspberry Pi en même temps

Installation d’un système d’exploitation Raspberry Pi (personnalisé)

Le système d’exploitation du robot PiCar-X 2.0 peut être installé sur une carte microSD à l’aide du programme Raspberry Pi Imager.

Deux images du système d’exploitation sont disponibles

  • Pour la programmation Python, utilisez simplement Raspberry Pi OS (Legacy)
  • Pour l’IDE de programmation visuelle Ezblock Studio, téléchargez RaspiOS-xxx_EzBlockOS-xxx.img qui est essentiellement l’image originale du système d’exploitation Raspberry Pi avec Ezblock Studio préinstallé. Vous pouvez ensuite cliquer sur le bouton CHOISIR LE OS puis Utiliser Personnalisé pour sélectionner le fichier que vous venez de télécharger. Sélectionnez ensuite le périphérique de stockage, cliquez sur ÉCRIRE et attendez la fin du processus.

Démarrage du système d’exploitation Raspberry Pi sur SunFounder PiCar-X 2.0

Prenez maintenant la carte microSD de votre ordinateur et insérez-la dans votre carte Raspberry Pi. Branchez ensuite le câble du support de batterie et faites glisser l’interrupteur d’alimentation du Robot HAT pour allumer le robot.

SunFounder PICAR-X glisse vers le pouvoir

Le système d’exploitation Raspberry Pi devrait maintenant démarrer et vous pouvez vérifier l’installation en connectant une souris, un clavier et un moniteur HDMI pour vérifier que tout fonctionne comme prévu, comme si vous utilisiez simplement le Raspberry Pi comme un ordinateur monocarte autonome.

Bureau du système d'exploitation Raspberry Pi

Premiers pas avec EzBlock Studio pour le robot PiCar-X 2.0

EzBlock Studio est une plateforme de programmation visuelle développée par SunFounder pour les débutants afin de démarrer facilement la programmation du Raspberry Pi. Il prend en charge deux langages de programmation, Blockly pour la programmation visuelle avec différents blocs et le code est ensuite converti en un programme Python qui peut être téléchargé sur le Raspberry Pi via Bluetooth ou Wi-Fi.

Vous pouvez soit télécharger l’application sur votre téléphone mobile depuis l’App Store (iOS) ou le Google Play Store (Android) en recherchant « Ezblock Studio », soit accéder à http://ezblock.cc/ezblock-studio pour commencer la programmation. depuis votre navigateur Internet. Remarque : la page indique qu’EzBlock Studio V3.2 passera en mode hors ligne le 28 février. Cela ne signifie pas que le site Web sera fermé à ce moment-là, mais simplement que vous ne pourrez pas enregistrer le projet dans le cloud, et uniquement localement sur votre ordinateur à l’avenir.

Créons un nouveau projet en cliquant sur la zone Nouveau projet.

EzBlock Studio

Sélectionnez le produit PiCar-X :

EzBlock Studio Choisir un appareil

Cliquez sur le bouton Connecter.

EzBlock Picar-X

Le programme affichera l’adresse IP du robot, cliquez simplement sur le bouton Confirmer.

Adresse IP de configuration d'EzBlock

Une fois la connexion établie, vous verrez diverses informations sur le robot telles que le niveau de charge de la batterie, la tension et la version.

Robot connecté EzBlock PiCar-X

Installation des bibliothèques et modules Python

Démarrez une fenêtre de terminal dans Raspberry Pi OS pour mettre à niveau le système d’exploitation vers la dernière version :

sudo apt mise à jour

mise à niveau sudo apt

Installez la bibliothèque SunFounder PICAR-X Robot Hat comme suit :

cd ~/

git clone -b v2.0 https://github.com/sunfounder/robot-hat.git

cd robot-chapeau

sudo python3 setup.py installer

Téléchargez et installez ensuite le module Vilb :

cd ~/

git clone -b picamera2 https://github.com/sunfounder/vilib.git

cd vilib

sudo python3 install.py

et faites de même pour le module Picar-X :

cd ~/

git clone -b v2.0 https://github.com/sunfounder/picar-x.git

cd picar-x

sudo python3 setup.py installer

Exécutez maintenant le script i2samp.sh pour installer le pilote de l’amplificateur de haut-parleur I2S :

cd ~/picar-x

sudo bash i2samp.sh

Tapez « y » pour poursuivre l’installation :

SunFounder PICAR-X I2S

Et encore pour activer la lecture /dev/zero en arrière-plan…

SunFounder PICAR-X I2S Confirmer

Et redémarrez le système une fois demandé.

Redémarrage de SunFounder PICAR-X I2S

Activer l’interface I2C

Tapez la commande suivante pour entrer les paramètres du système d’exploitation Raspberry Pi :

Sélectionnez les options d’interface…

Options d'interface raspi-config

…puis I2C…

raspi-config Activer I2C

…et confirmez en sélectionnant « Oui ».

SunFounder PICAR-X confirme l'activation I2C

Il vous sera ensuite demandé de redémarrer le système et de le faire pour terminer l’installation.

Régler le servomoteur à 0° degrés pour un assemblage plus facile

Bras servo SunFounder PICAR-X

La plage d’angle du servo du kit robot PiCar-X est de -90° à 90°, mais cet angle n’est pas réglé en usine et sera aléatoire, peut-être 0° ou peut-être 45°. Si nous l’assemblons selon un angle aléatoire non nul, cela pourrait endommager le servo pendant l’utilisation. Il est donc nécessaire de régler d’abord l’angle de tous les servos à 0° avant de les installer sur le robot. Pour garder le servo centré quelle que soit la direction dans laquelle il est tourné, exécutez la commande

cd ~/picar-x/exemple

sudo python3 servo_zeroing.py

Branchez ensuite le câble du servo dans le port P11 et vous verrez le bras du servo tourner en position (c’est la position 0°). Ensuite, insérez le bras de servo comme expliqué dans le manuel de montage.

SunFounder PICAR-X P11 Connecter

Calibrage du robot PiCar-X 2.0 (Python)

Certains angles de servo peuvent être légèrement inclinés en raison d’écarts possibles lors de l’installation du PiCar-X ou de limitations du servo. Pour résoudre ce problème, exécutez le programme calibrage.py :

cd /home/pi/picar-x/exemple/calibrage

sudo python3 calibrage.py

Cela démarrera l’assistant d’étalonnage Pica-X avec un menu comme indiqué ci-dessous.

Étalonnage PICAR-X

La touche R est utilisée pour tester si le servo qui contrôle la direction des roues avant peut fonctionner normalement et n’est pas endommagé. Appuyez sur 1 pour sélectionner le servo de roue avant, puis appuyez sur les touches W/S pour garder les roues avant tournées le plus vers l’avant possible sans s’incliner à gauche ou à droite.

Servo de direction d'étalonnage

Appuyez maintenant sur 2 pour sélectionner le servo de caméra 1 (pour le panoramique), puis sur les touches W/S pour que la plate-forme panoramique/inclinaison regarde droit devant vous, et non vers la gauche ou la droite.

Calibrer le servo de la caméra1

Faites de même pour le servo de caméra 2 (inclinaison) en sélectionnant 3 et en appuyant sur les touches W/S pour que la plate-forme panoramique/inclinaison continue de regarder droit devant elle et de ne pas s’incliner vers le haut ou vers le bas.

SunFounder PICAR-X Calibrer le servo de la caméra

Le câblage du moteur pouvant être inversé lors de l’installation, vous pouvez appuyer sur E pour tester si le véhicule peut avancer normalement. Sinon, appuyez sur 4 ou 5 pour sélectionner les moteurs gauche et droit. Une fois cela fait, nous pouvons calibrer le sens de rotation en appuyant sur Q.

PICAR-X Calibrer le moteur de direction

Une fois l’étalonnage terminé, appuyez sur la barre d’espace pour enregistrer les paramètres d’étalonnage. Vous serez invité à saisir « y » pour confirmer, puis appuyez sur ESC ou Ctrl+C pour quitter le programme.

Confirmation de l'étalonnage SunFounder PICAR-X

Calibrage du robot PiCar-X 2.0 (EzBlock Studio)

Si vous préférez ne pas utiliser Python et la ligne de commande, il est également possible de calibrer le robot PiCar-X 2.0 dans l’interface web d’EzBlock Studio. Cliquez sur le bouton Paramètres une fois la connexion établie.

Paramètres du robot EzBlock Studio

Cliquez maintenant sur Calibrer.

Calibrage du robot EzBlock Studio

La fenêtre d’étalonnage apparaîtra dans laquelle vous pourrez sélectionner les servomoteurs à étalonner soit pour la caméra panoramique et inclinaison, soit pour les volants.

EzBlock Studio Calibrer

Commençons par l’étalonnage des servomoteurs PiCar-X Pan-Tilt. Deux ensembles de boutons permettent à l’utilisateur d’ajuster la caméra vers le haut ou le bas (inclinaison) et vers la gauche et la droite (panoramique). Une fois que la caméra semble être ajustée directement, cliquez sur Confirmer pour terminer l’étalonnage.

EzBlock Studio PiCar-X Calibrer l'inclinaison panoramique

Faisons maintenant de même pour les volants que l’on peut régler à gauche ou à droite. Une fois les roues droites, cliquez sur Confirmer pour terminer le calibrage.

EzBlock Studio PiCAR-X calibrer la direction

Tester le mouvement du robot PiCar-X 2.0

Nous allons maintenant faire avancer le robot PiCar-X en dessinant une forme en S et l’arrêter. Vous pouvez consulter le programme en Python :

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

depuis Picarx importer Picarx

heure d’importation

si __name__ == « __main__ »:

essayer:

px = Picarx()

px.forward(30)

temps.sommeil(0.5)

pour l’angle dans la plage (0,35) :

px.set_dir_servo_angle(angle)

temps.sommeil (0,01)

pour l’angle dans la plage (35,-35,-1) :

px.set_dir_servo_angle(angle)

temps.sommeil (0,01)

pour l’angle dans la plage (-35,0) :

px.set_dir_servo_angle(angle)

temps.sommeil (0,01)

px.forward(0)

temps.sommeil(1)

pour l’angle dans la plage (0,35) :

px.set_camera_servo1_angle(angle)

temps.sommeil (0,01)

pour l’angle dans la plage (35,-35,-1) :

px.set_camera_servo1_angle(angle)

temps.sommeil (0,01)

pour l’angle dans la plage (-35,0) :

px.set_camera_servo1_angle(angle)

temps.sommeil (0,01)

pour l’angle dans la plage (0,35) :

px.set_camera_servo2_angle(angle)

temps.sommeil (0,01)

pour l’angle dans la plage (35,-35,-1) :

px.set_camera_servo2_angle(angle)

temps.sommeil (0,01)

pour l’angle dans la plage (-35,0) :

px.set_camera_servo2_angle(angle)

temps.sommeil (0,01)

enfin:

px.forward(0)

… et EzBlock Studio.

Code de déplacement du robot EzBlock Studio

Test d’évitement d’obstacles

Le robot PiCar-X 2.0 dispose d’un capteur à ultrasons HC-SR04 pour détecter des objets à une distance de 0 à 400 cm. Le programme de démonstration permettra au servo de faire tourner les roues du robot de -35 degrés si un objet se trouve dans la plage de 25 cm, et sinon de conduire tout droit avec l’angle réglé à 0 degré. Nous l’avons testé avec succès avec Python et EzBlock Studio.

Capteur à ultrasons HC-SR04

Python:

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

19

20

depuis Picarx importer Picarx

def main() :

essayer:

px = Picarx()

# px = Picarx(ultrasonic_pins=[‘D2′,’D3’]) # tring, écho

px.forward(30)

tandis que Vrai :

distance = px.ultrasonic.read()

print(« distance : « ,distance)

si distance > 0 et distance < 300 :

si distance < 25 :

px.set_dir_servo_angle(-35)

autre:

px.set_dir_servo_angle(0)

enfin:

px.forward(0)

si __name__ == « __main__ »:

principal()

EzBlockStudio :

Code d'évitement d'obstacles EzBlock Studio

La gamme de robots PiCar-X 2.0 suit le programme de test

Le robot PiCar-X 2.0 s’appuie sur le « capteur d’échelle de gris SunFounder 3 canaux » pour détecter les lignes en attribuant à chaque sortie une valeur analogique distincte. Le test de programmation crée trois conditions pour la détection de ligne :

  1. Avancez à une vitesse de 10 % par défaut avec l’angle du servo réglé sur 0 degré.
  2. Si le capteur gauche détecte une ligne noire, réglez l’angle du servo de commande de roue sur 12 degrés.
  3. Si le capteur droit détecte une ligne noire, réglez l’angle du servo de commande de roue sur -12 degrés.
  4. Si les conditions 2 et 3 ci-dessus ne sont pas remplies, remettez l’angle du servo à 0 degré.

Capteur d'échelle de gris SunFounder 3 canaux

Programme Python pour la démo de la ligne suivante :

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

depuis Picarx importer Picarx

si __name__==’__main__’ :

essayer:

px = Picarx()

# px = Picarx(grayscale_pins=[‘A0’, ‘A1’, ‘A2’])

px_puissance = 10

tandis que Vrai :

gm_val_list = px.get_grayscale_data()

print(« gm_val_list: »,gm_val_list)

gm_status = px.get_line_status(gm_val_list)

print(« gm_status: »,gm_status)

si gm_status == ‘forward’ :

imprimer(1)

px.forward(px_power)

elif gm_status == ‘gauche’ :

px.set_dir_servo_angle(12)

px.forward(px_power)

elif gm_status == ‘droit’ :

px.set_dir_servo_angle(-12)

px.forward(px_power)

autre:

px.set_dir_servo_angle(0)

px.stop()

enfin:

px.stop()

Conception de démonstration de programmation visuelle équivalente dans EzBlock Studio.

Code de suivi de ligne EzBlock Studio

Text-to-speed avec le haut-parleur intégré

Nous allons maintenant faire dire au robot PiCar-X « Bonjour ! » via son haut-parleur en utilisant la synthèse vocale (TTS). Nous avons déjà installé le pilote avec i2samp.sh, nous pouvons donc écrire un programme Python comme suit :

depuis robot_hat importer TTS

si __name__ == « __main__ »:

mots = [« Hello », « Hi », « Good bye », « Nice to meet you »]

tts_robot = TTS()

pour moi en mots :

imprimer(je)

tts_robot.say(i)

Un exemple similaire ci-dessous a été écrit dans EzBlock Studio, mais il utilise la détection de visage via la caméra intégrée pour dire « Bonjour, ravi de vous rencontrer !

EzBlock Studio Dites bonjour Code

Vision par ordinateur avec le Raspberry Pi 4

La détection des visages n’est que l’une des charges de travail de vision par ordinateur qui peuvent être gérées par le Raspberry Pi 4 via la caméra SunFounder 5MP basée sur un capteur Full HD OV5647. Essayons donc quelques exemples supplémentaires de vision industrielle.

Caméra SunFounder

Détection des couleurs

Nous utiliserons des cercles colorés pour le test. Vous pouvez télécharger ce fichier PDF pour imprimer le vôtre.

Cartes de couleur SunFounder PICAR-X

Le programme de test détectera la couleur d’un panneau circulaire, dessinera un rectangle vert autour et écrira le nom sur la couleur en haut à gauche.

Panneau de détection de couleur EzBlock Studio

Code Python pour la détection des couleurs :

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

importer CV2

depuis picamera.array importer PiRGBArray

depuis picamera importer PiCamera

importer numpy en tant que np

heure d’importation

color_dict = {‘rouge’ :[0,4],’orange’:[5,18],’jaune’:[22,37],’vert’:[42,85],’bleu’:[92,110],’violet’:[115,165],’rouge 2′:[165,180]} #Voici la plage de H dans l’espace colorimétrique HSV représentée par la couleur

kernel_5 = np.ones((5,5),np.uint8) #Définissez un noyau de convolution 5×5 avec des valeurs d’élément de tous 1.

def color_detect(img,color_name) :

# La gamme bleue sera différente selon les conditions d’éclairage et peut être ajustée de manière flexible. H : saturation, S : saturation v : luminosité

resize_img = cv2.resize(img, (160,120), interpolation=cv2.INTER_LINEAR) # Afin de réduire la quantité de calcul, la taille de l’image est réduite à (160,120)

hsv = cv2.cvtColor(resize_img, cv2.COLOR_BGR2HSV) # Convertir de BGR en HSV

type_couleur = nom_couleur

masque = cv2.inRange(hsv,np.array([min(color_dict[color_type]), 60, 60]), np.array([max(color_dict[color_type]), 255, 255]) ) # inRange():Rendre ceux entre le bas et le haut en blanc et le reste en noir

si color_type == ‘rouge’ :

masque_2 = cv2.inRange(hsv, (color_dict[‘red_2’][0],0,0), (color_dict[‘red_2′][1],255,255))

masque = cv2.bitwise_or(masque, masque_2)

morphologyEx_img = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel_5,iterations=1) # Effectuer une opération d’ouverture sur l’image

# Trouvez le contour dans morphologyEx_img, et les contours sont disposés en fonction de la zone du petit au grand.

_tuple = cv2.findContours(morphologyEx_img,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

# compatible avec opencv3.x et openc4.x

si len(_tuple) == 3 :

_, contours, hiérarchie = _tuple

autre:

contours, hiérarchie = _tuple

color_area_num = len(contours) # Comptez le nombre de contours

si color_area_num > 0 :

pour i dans les contours : # Parcourir tous les contours

x,y,w,h = cv2.boundingRect(i) # Décompose le contour en coordonnées du coin supérieur gauche et en largeur et hauteur de l’objet de reconnaissance

# Dessinez un rectangle sur l’image (image, coordonnée du coin supérieur gauche, coordonnée du coin inférieur droit, couleur, largeur de ligne)

si w >= 8 et h >= 8 : # Comme l’image est réduite au quart de la taille originale, si vous souhaitez dessiner un rectangle sur l’image originale pour encercler la cible, vous devez multiplier x, y, w , h par 4.

x = x * 4

y = y * 4

w = w * 4

h = h * 4

cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2) # Dessine un cadre rectangulaire

cv2.putText(img,color_type,(x,y), cv2.FONT_HERSHEY_SIMPLEX, 1,(0,0,255),2)# Ajouter une description du personnage

retourner img, masque, morphologieEx_img

avec PiCamera() comme caméra :

print(« démarrer la détection des couleurs »)

caméra.résolution = (640 480)

caméra.framerate = 24

rawCapture = PiRGBArray(caméra, taille=camera.resolution)

temps.sommeil(2)

pour l’image dans camera.capture_continuous(rawCapture, format= »bgr »,use_video_port=True):# use_video_port=True

img = frame.array

img,img_2,img_3 = color_detect(img,’red’) # Fonction de détection de couleur

cv2.imshow(« video », img) # Affichage d’images OpenCV

cv2.imshow(« mask », img_2) # Affichage d’images OpenCV

cv2.imshow(« morphologyEx_img », img_3) # Affichage d’images OpenCV

rawCapture.truncate(0) # Libérer le cache

k = cv2.waitKey(1) & 0xFF

# 27 est la touche ESC, ce qui signifie que si vous appuyez sur la touche ESC pour quitter

si k == 27 :

casser

print(‘quitter…’)

cv2.destroyAllWindows()

caméra.close()

C’est beaucoup plus simple dans EzBlock Studio avec seulement deux blocs nécessaires

Code de détection de couleur EzBlock Studio

Fonction de détection de visage

Nous avons déjà testé rapidement la détection des visages dans le test du haut-parleur, mais regardons-y de plus près. L’implémentation repose sur la détection d’objets à l’aide des classificateurs Haar Cascade. Il s’agit d’une puissante méthode de détection d’objets développée par Paul Viola et Michael Jones et documentée dans leur article de recherche intitulé « Rapid Object Detection using a Boosted Cascade of Simple Features », publié en 2001, et toujours populaire aujourd’hui.

Nous testerons cela en analysant les images de caméra à l’aide des classificateurs en cascade Model Haar, d’abord en convertissant l’image en niveaux de gris, puis en dessinant un rectangle autour d’un visage humain s’il est détecté sur l’image en niveaux de gris, et enfin sur l’image originale.

Détection de visage EzBlock Studio

Code Python :

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

importer CV2

depuis picamera.array importer PiRGBArray

depuis picamera importer PiCamera

heure d’importation

def human_face_detect(img):

resize_img = cv2.resize(img, (320,240), interpolation=cv2.INTER_LINEAR) # Afin de réduire la quantité de calcul, redimensionnez l’image à une taille de 320 x 240

gray = cv2.cvtColor(resize_img, cv2.COLOR_BGR2GRAY) # Convertir en niveaux de gris

faces = face_cascade.detectMultiScale(gray, 1.3, 2) # Détecter les visages sur les images en niveaux de gris

face_num = len(faces) # Nombre de visages détectés

si numéro_face > 0 :

pour (x,y,w,h) en faces :

x = x*2 # L’image étant réduite à la moitié de sa taille d’origine, x, y, w et h doivent être multipliés par 2.

y = y*2

w = w*2

h = h*2

cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) # Dessine un rectangle sur le visage

img

avec PiCamera() comme caméra :

print(« démarrer la détection du visage humain »)

caméra.résolution = (640 480)

caméra.framerate = 24

rawCapture = PiRGBArray(caméra, taille=camera.resolution)

temps.sommeil(2)

pour l’image dans camera.capture_continuous(rawCapture, format= »bgr »,use_video_port=True) : # use_video_port=True

img = frame.array

img = human_face_detect(img)

cv2.imshow(« video », img) #OpenCV image show

rawCapture.truncate(0) # Libérer le cache

k = cv2.waitKey(1) & 0xFF

# 27 est la touche ESC, ce qui signifie que si vous appuyez sur la touche ESC pour quitter

si k == 27 :

casser

print(‘quitter…’)

cv2.destroyAllWindows()

caméra.close()

Exemple équivalent à EzBlock Studio.

Code de détection de visage EzBlock Studio

Test vidéo de PiCar-X 2.0

YouTube video

Conclusion

SunFounder PiCar-X 2.0 est une voiture robot autonome alimentée par l’IA qui convient à ceux qui souhaitent en savoir plus sur la carte Raspberry Pi, la vision par ordinateur et la robotique. Le robot peut être programmé pour éviter les obstacles, suivre des lignes ou même conduire de manière autonome grâce à la vision par ordinateur avec des fonctionnalités telles que la détection des visages ou la détection des couleurs.

Ce kit robot convient aux écoles, aux autres établissements d’enseignement et à ceux qui s’intéressent aux robots et à la technologie en général. Nous n’avons pas couvert toutes les fonctionnalités et tutoriels de ce robot dans cette test, et vous en trouverez plus dans la documentation telle que la détection de code QR, le suivi du visage, le « Bull Fight » où le robot « poursuit » des objets de couleur rouge. , entre autres démos.

Nous tenons à remercier SunFounder de m’avoir envoyé le kit robot PiCar-x 2.0 pour l’instant. Le kit robot PiCar-X 2.0 avec batterie et chargeur est vendu 81,99 $ (ou 154,99 $ avec un Raspberry Pi 4 avec 4 Go de RAM sur la boutique en ligne de l’entreprise, et vous les trouverez également respectivement 74,99 $ et 145,10 $ sur Amazon après avoir cliqué sur le bouton Coche du code de réduction de 15 $.

Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

YouTube video

  • SUNFOUNDER AI Fusion Lab Kit pour Raspberry Pi 5/4/3B+/Zero 2w, Multi-LLMs ChatGPT/Gemini/Grok, OpenCV & MediaPipe, Python, cours vidéo pour les ingénieurs en herbe
  • Adeept PiCar Pro V2 Smart Robot Car Kit with 4-DOF Robotic Arm for Raspberry Pi 5/4/3(Pi NOT Included), Programming Educational STEM Project Robotics, Obstacle Avoidance, Line Tracking, USB-C Charging