Installation de darknet_ros et détection de cible sur la plateforme de simulation de drones PX4
Documents de référence:
https://github.com/leggedrobotics/darknet_ros
https://gitee.com/robin_shaun/XTDrone
https://www.yuque.com/xtdrone/manual_cn/target_detection_tracking
https://blog.csdn.net/ qq_42145185 / article / détails / 105730256
Le projet XTDrone de Xiao Kun est utilisé dans la construction de la plate-forme de simulation de drone et la reconnaissance et le suivi des cibles. Merci beaucoup. La page Web associée: https://gitee.com/robin_shaun/XTDrone. J'installe juste darknet_ros et personne dans la simulation. L'utilisation sur la machine est un résumé.
S'il y a une infraction, veuillez me contacter.
Un, installez ROS
Veuillez télécharger depuis le site officiel: http://wiki.ros.org/Installation/Ubuntu lors de l'installation, faites attention à la correspondance entre ROS et la version Ubuntu, si vous avez une exigence pour la version gazebo, veuillez l'exécuter lors de l'installation (prenez le melodilc correspondant 18.04 comme exemple) sudo Lorsque la commande apt-get install ros-melodic-desktop-full est remplacée par sudo apt-get install ros-melodic-desktop, puis installez gazebo
Créez un espace de travail dans le répertoire personnel une fois l'installation de ros terminée
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
source devel/setup.bash
Deux, installez OpenCV et boostez
Site officiel de téléchargement d'OpenCV: https://opencv.org/releases/
site officiel de téléchargement de boost: https://www.boost.org/
OpenCV 3.2 est déjà installé lors de l'installation de ROS, vous pouvez choisir de ne pas l'installer, si vous souhaitez l'installer, veuillez installer 3.3 Pour les versions suivantes, si la version est trop élevée, des erreurs peuvent survenir lors de la compilation de darknet_ros. Ce problème sera également mentionné ultérieurement.
Troisièmement, installez usb_cam
Si vous souhaitez utiliser une caméra USB comme entrée, vous devez utiliser ROS usb_cam, dont le site Web est https://github.com/bosch-ros-pkg/usb_cam. L'installation ou non n'affecte pas l'utilisation de la reconnaissance et du suivi ultérieurs de la cible de simulation d'UAV
Téléchargez usb_cam et configurez l'environnement
cd ~/catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git
cd ..
catkin_make_isolated
source ~/catkin_ws/devel/setup.bash
Compiler usb_cam
cd src/usb_cam
mkdir build
cd build
cmake ..
make
Tester la caméra USB
1. Ouvrez le fichier de lancement et modifiez le fichier en fonction du numéro de la caméra. Généralement, la caméra de l'ordinateur portable lui-même est video0 et la caméra USB est video1.
cd ~/catkin_ws/src/usb_cam/launch
gedit launch
2. Ouvrez un nouveau terminal et exécutez roscore
roscore
3. Exécutez le test
cd ~/catkin_ws/src/usb_cam/launch
roslaunch usb_cam usb_cam-test.launch
Si l'image s'affiche correctement, l'opération est correcte. Vous pouvez utiliser ctrl + c pour interrompre le programme.
Des erreurs peuvent survenir lors de l'exécution, vous devez ajouter une ligne de code
source /home/youruser/catkin_ws/devel/setup.bash
cd ~/catkin_ws/src/usb_cam/launch
roslaunch usb_cam usb_cam-test.launch
Pour plus de commodité, vous n'avez pas besoin de définir la variable d'environnement à chaque fois, vous pouvez la modifier directement dans barshc
sudo gedit ~/.bashrc
Ajouter en bas de barreshc
source ~/catkin_ws/devel/setup.bash
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/
Redémarrer barshc
source ~/.bashrc
echo $ROS_PACKAGE_PATH #若显示路径,则表示设置成功
Quatre, darknet_ros télécharger et installer
Page Web source de Darknet_ros: https://github.com/leggedrobotics/darknet_ros
Veuillez configurer SSH avant gitclone, sinon le code source ne peut pas être téléchargé depuis github
cd catkin_ws/src
git clone --recursive [email protected]:leggedrobotics/darknet_ros.git
cd ../
Si une telle erreur se produit, cela signifie que la clé SSH n'a pas été définie. Le didacticiel de configuration de la clé SSH:
https://blog.csdn.net/qq_45067735/article/details/108027310
Le téléchargement étant trop lent, je fournis le fichier compressé darknet_ros téléchargé ici Une fois le téléchargement terminé, décompressez-le et extrayez-le dans catkin_ws / src: https://download.csdn.net/download/qq_45067735/12713492
Compiler darkne_ros
catkin_make -DCMAKE_BUILD_TYPE=Release
Cette erreur peut survenir lors de la compilation.
Il s'agit de la version d'OpenCV. J'ai installé OpenCV 4.4 ici. Une telle erreur s'est produite. Après l'installation d'Opencv 3.2, il n'y avait pas d'erreur de ce type. C'est la raison pour laquelle j'ai suggéré d'installer OpenCV 3.3.
Exécutez darknet_ros pour
exécuter darknet_ros pour la détection. Avant d'exécuter la détection, vous devez modifier le fichier de configuration pour que les sujets souscrits par darknet_ros correspondent au sujet des images publiées par usb_cam.
Ouvrez le fichier catkin_ws / src / darknet_ros / darknet_ros / config / ros.yaml et modifiez:
subscribers:
camera_reading:
topic: /camera/rgb/image_raw
queue_size: 1
Changer pour
subscribers:
camera_reading:
topic: /usb_cam/image_raw
queue_size: 1
Définir des variables d'environnement d'écriture
cd ~/catkin_ws
source devel/setup.bash
Activer YOLO
roslaunch darknet_ros darknet_ros.launch
En même temps, ouvrez un autre terminal pour activer usb_cam
roslaunch usb_cam usb_cam-test.launch
Il peut y avoir une telle erreur lors de l'exécution:
Ce problème me préoccupe depuis longtemps. J'ai également consulté certaines personnes. Ils m'ont donné des idées et des solutions. Certaines ont réussi et d'autres ont échoué. Considérant que les raisons de chacun peuvent être différentes , Je les énumère encore tous ici:
1. Le problème des fichiers de poids. Téléchargez le fichier de poids sur le site officiel pour le résoudre.
2. Le problème du téléchargement de code darknet_ros. Téléchargez depuis gitee et exécutez-le pour le résoudre.
3. Le problème de ROS. J'ai essayé les deux premières méthodes et j'ai constaté qu'elles ne l'avaient pas résolue. Plus tard, j'ai découvert qu'il s'agissait peut-être d'un problème de ROS. Ce problème s'est produit lorsque j'ai téléchargé et exécuté ROS à partir de la source d'installation nationale à l'époque. Plus tard, après l'avoir téléchargé à partir du site officiel, il n'y a eu aucun problème.
Une fois l'exécution réussie, l'écran apparaîtra:
Bien que l'affichage soit YOLO V3, il s'agit en fait de YOLOv2-tiny. Il y a quelques problèmes avec les résultats du test. Nous devons changer le jeu de pré-formation sur YOLO v3 pour tester. Remplacez comme suit: Trouvez le fichier de configuration et voyez Pour certains ensembles de données, nous devons modifier le fichier de lancement pour activer YOLOv3
Ouvrez le fichier de lancement et
modifiez darknet_ros.launch
arg name="network_param_file" default="$(find darknet_ros)/config/yolov2-tiny.yaml"/
改为
arg name="network_param_file" default="$(find darknet_ros)/config/yolov3.yaml"/
Comme indiqué:
redémarrez YOLO v3
roslaunch darknet_ros darknet_ros.launch
Si la carte graphique NVIDIA n'est pas utilisée, le fps est relativement faible à environ 0,1. Pour atteindre le temps réel, vous devez modifier le makefile darknet. Avant cela, veuillez installer le pilote graphique NVIDIA et CUDA et CUDNN.
Trouvez le Makefile dans / catkin_ws / src / darknet_ros / darknet.
Faites des modifications en fonction de vos besoins:
GPU = 1 Utilisez CUDA et GPU (le chemin par défaut de CUDA est / usr / local / cuda)
CUDNN = 1 Utilisez le réseau d'accélération CUDNN v5-v7 (chemin par défaut CUDNN / usr / local / cudnn)
OPENCV = 1 Utilisez OpenCV 4.x / 3.x / 2.4.x, exécutez la vidéo de détection et la caméra
OPENMP = 1 Utilisez OpenMP pour utiliser plusieurs processeurs pour accélérer
DEBUG = 1 Compilez la version de débogage
Une fois la modification terminée, vous devez compiler dans l'espace de travail:
cd ~/catkin_ws
catkin_make
Puis lancez darknet_ros, vous pouvez voir que le fps a été beaucoup amélioré
Cinq, la construction de base de la plate-forme de simulation de drone
Vous pouvez vous référer à mon blog précédent: https://blog.csdn.net/qq_45067735/article/details/107303796
6. Détection de cible et suivi de la plate-forme de simulation d'UAV
Compilez à nouveau darknet_ros
cp -r XTDrone/sensing/object_detection_and_tracking/YOLO/* ~/catkin_ws/src/
cd ~/catkin_ws
catkin_make
Activer YOLO
source devel/setup.bash
roslaunch darknet_ros px4_tracking.launch
À ce stade, chargez d'abord les paramètres réseau, puis attendez que l'image arrive,
puis démarrez la simulation de scène extérieure PX4. À ce stade, YOLO reçoit l'image et commence la détection de la cible
cd ~/PX4_Firmware
roslaunch px4 outdoor1.launch
Vous verrez de l'eau au début car une partie de la caméra est immergée dans le sol et l'océan sous le sol. Après avoir chargé cette scène, faites-la glisser vers la droite. La flèche rouge fait référence à la position initiale du drone.
Établir la communication
cd ~/XTDrone/communication
python multirotor_communication.py typhoon_h480 0
Contrôlez le drone pour qu'il décolle
cd ~/XTDrone/control
python multirotor_keyboard_control.py typhoon_h480 1 vel
Activer le contrôle PTZ
cd ~/XTDrone/sensing/gimbal
python run.py typhoon_h480 0
Vous pouvez choisir d'attendre sur place que les piétons passent, ou vous pouvez contrôler activement l'avion pour trouver des piétons. Après l'apparition de la cible, fermez multirotor_keyboard_control.py (sinon les instructions des deux programmes entreront en conflit), puis démarrez (notez le sys.path.append ('/ home / robin / catkin_ws / devel / lib / python2.7 / dist-packages ') Le chemin doit être modifié en conséquence)
cd ~/XTDrone/control
python yolo_human_tracking.py typhoon_h480 0
Ensuite, l'avion suivra automatiquement les piétons détectés.
Parfois, la texture de la pelouse ne sera pas affichée, mais cela n'affecte pas la simulation, mais ce n'est pas beau.
Documents de référence:
https://github.com/leggedrobotics/darknet_ros
https://gitee.com/robin_shaun/XTDrone
https://www.yuque.com/xtdrone/manual_cn/target_detection_tracking
https://blog.csdn.net/ qq_42145185 / article / détails / 105730256