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
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 :
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.
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
Activez roscore et exécutez le nœud :
rosrun yolo detect.py
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 :
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 :
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.