Intégrer yolov5 dans ROS

Date de création du document : 27 mars 2023

Contenu du document : enregistrement du processus d'intégration de yolov5 dans ROS

Auteur du document : RobotFreak

La série yolo est un algorithme de détection de reconnaissance visuelle open source très pratique. Il a été mis à jour vers yolov8 jusqu'à présent, et il existe de nombreux matériaux connexes pour un apprentissage et un déploiement faciles. Cet article décrit mon processus d'intégration de yolov5 dans ROS.

La machine virtuelle appelle la caméra locale

Machine virtuelle->Périphérique amovible->Connecter la caméra, s'il y a une coche devant la caméra, elle a été connectée à la machine virtuelle

insérez la description de l'image ici

déploiement local yolov5

Tout d'abord, vous devez télécharger ou cloner le code source de yolov5. Il est préférable de tester que vous pouvez utiliser python pour l'exécuter localement.

Référence de déploiement : configuration de l'environnement yolov5 sous linux

Reportez-vous à la version python >=3.7 mentionnée dans le blog et au README de yolov5, mais vous avez en fait rencontré une situation où la version python n'était pas suffisante lors de l'installation des dépendances, vous devrez donc peut-être installer python>=3.8

Après déploiement, l'état du dossier est le suivant :
insérez la description de l'image ici

Intégrez yolov5 dans le package de fonctions de ROS

Ici, je mets directement le dossier yolov5 dans le répertoire des scripts du package de fonctions. Vous pouvez également choisir de copier les fichiers du dossier yolov5 directement dans le dossier des scripts, mais étant donné que seuls les fichiers .py et .sh sont généralement placés dans les scripts, j'ai choisi de mettre l'intégralité du dossier dans le répertoire des scripts. plus propre.

insérez la description de l'image ici

Ici, mon espace de travail utilise le python de l'environnement natif, pas le python d'anaconda.

Ajoutez des autorisations exécutables à detect.py :

chmod +x detect.py

Modifiez le fichier CMakeLists.txt du pack de fonctionnalités :

 catkin_install_python(PROGRAMS
   scripts/yolov5/detect.py
   DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
 )

Entrez le répertoire de l'espace de travail à compiler :

catkin_make

insérez la description de l'image ici

Activez roscore et exécutez le nœud :

rosrun yolo detect.py

insérez la description de l'image ici

Intégration terminée

problème résolu

(Résolu) [WARN:[email protected]] global cap_v4l.cpp:1119 tryIoctl VIDEOIO(V4L2:/dev/video0): select() timeout.

Après avoir changé la détection de yolov5 en détection en temps réel, appelez la caméra locale, exécutez detect.py et cette erreur se produit.

Reportez-vous à ce blog : (29 messages) tryIoctl VIDEOIO(V4L2:/dev/video0): select() timeout._One WILLPOWER Blog-CSDN Blog

Exécutez directement la commande suivante :

ffplay -f video4linux2 -input_format mjpeg -framerate 30 -video_size 640*480 /dev/video0

L'effet de l'appel de la caméra est le suivant :
insérez la description de l'image ici

Selon le blog, machine virtuelle -> paramètres -> contrôleur USB, sélectionnez la compatibilité USB comme USB3.1

Appelez à nouveau la caméra avec la commande :
insérez la description de l'image ici

L'exécution de detect.py à nouveau n'a aucun problème

(Résolu) ImportError : impossible d'importer le nom 'ParserError' à partir de 'dateutil.parser' (/usr/lib/python3/dist-packages/dateutil/parser/ init .py)

Cette erreur se produit lors de l'exécution de detect.py

Blog de référence : (29 messages) [Python] ne peut pas importer le nom 'ParserError' à partir de 'dateutil.parser'_Blog de Raurean - Blog CSDN

Selon le blog, mettez à jour python-dateutil vers la dernière version 2.8.2, exécutez à nouveau detect.py, pas de problème.

Je suppose que tu aimes

Origine blog.csdn.net/svfsvadfv/article/details/129825613
conseillé
Classement