Installation de Darknet_ros et détection de cible sur la plateforme de simulation de drone PX4

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
Insérez la description de l'image ici
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.
Insérez la description de l'image ici
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: Insérez la description de l'image ici
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:
Insérez la description de l'image ici
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
Insérez la description de l'image ici
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é:
Insérez la description de l'image ici
redémarrez YOLO v3

roslaunch darknet_ros darknet_ros.launch

Insérez la description de l'image ici
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,
Insérez la description de l'image ici
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.
Insérez la description de l'image ici
É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

Je suppose que tu aimes

Origine blog.csdn.net/qq_45067735/article/details/108014941
conseillé
Classement