Table des matières:
- Étape 1: ce qui a fonctionné et ce qui n'a pas fonctionné
- Étape 2: Installation des pilotes Freenect et Freenect_stack
- Étape 3: Installation de RTAB MAP autonome
- Étape 4: Installation de Rtabmap_ros
- Étape 5: Afficher l'heure
- Étape 6: Références
Vidéo: SLAM RGB-D avec Kinect sur Raspberry Pi 4 [Buster] ROS mélodique : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
L'année dernière, j'ai écrit un article sur la construction et l'installation de ROS Melodic sur le nouveau (à l'époque) Raspberry Pi avec Debian Buster OS. L'article a reçu beaucoup d'attention à la fois ici sur Instructables et sur d'autres plateformes. Je suis très heureux d'avoir aidé tant de personnes à installer avec succès ROS sur Raspberry Pi. Dans la vidéo d'accompagnement, j'ai également brièvement démontré l'obtention d'une image de profondeur à partir de Kinect 360. Plus tard, de nombreuses personnes m'ont contacté sur LinkedIn et m'ont demandé comment j'avais réussi à utiliser Kinect avec Raspberry Pi. J'ai été un peu surpris par la question, car le processus de préparation de Kinect à ce moment-là m'a pris environ 3-4 heures et ne semblait pas extrêmement compliqué. J'ai partagé mes fichiers.bash_history avec toutes les personnes qui me posaient des questions sur le problème et, en avril, j'ai finalement trouvé le temps d'écrire un article sur la façon d'installer les pilotes Kinect et d'effectuer RVB-D SLAM avec RTAB-MAP ROS. Semaine de nuits blanches après avoir commencé à écrire l'article je comprends maintenant pourquoi tant de gens m'ont posé cette question:)
Je vais commencer par une brève explication sur les approches qui ont fonctionné et celles qui n'ont pas fonctionné. Ensuite, j'expliquerai comment installer les pilotes Kinect pour une utilisation avec ROS Melodic et enfin comment configurer votre machine pour RGB-D SLAM avec RTAB-MAP ROS.
Étape 1: ce qui a fonctionné et ce qui n'a pas fonctionné
Il existe quelques pilotes disponibles pour Kinect sur Raspberry Pi - parmi eux, deux sont pris en charge par ROS.
Pilotes OpenNI - package openni_camera pour ROS
pilotes libfreenect - package freenect_stack pour ROS
Si vous regardez leurs référentiels GitHub respectifs, vous pouvez constater que le pilote OpenNI a été mis à jour pour la dernière fois il y a des années et qu'en pratique, il est en fin de vie depuis longtemps. ibfreekinect d'autre part est mis à jour en temps opportun. Idem pour leurs packages ROS respectifs, freenect_stack a été publié pour ROS mélodique, tandis que la dernière distribution openni_camera a répertorié le support pour est Fuerte…
Il est possible de compiler et d'installer le pilote OpenNI et le package openni_camera sur Raspberry Pi pour ROS Melodic, bien que cela n'ait pas fonctionné pour moi. Pour ce faire, suivez ce guide, les étapes 1, 2, 3, à l'étape 2 et 3, supprimez l'indicateur "-mfloat-abi=softfp" du fichier Platform/Linux/Build/Common/Platform. ARM (selon les conseils à ce sujet problème Github). Clonez ensuite le package openni_camera dans votre espace de travail catkin et compilez avec catkin_make. Cela n'a pas fonctionné pour moi, l'erreur de création du générateur de profondeur a échoué. Raison: l'interface USB n'est pas prise en charge !
L'utilisation de libfreenect et freenect_stack a finalement abouti, mais il y avait pas mal de problèmes à résoudre et la solution était un peu bidon, bien que fonctionnant de manière très stable (1 heure + opération continue).
Étape 2: Installation des pilotes Freenect et Freenect_stack
Je suppose que vous utilisez mon image ROS Melodic Desktop de cet article. Si vous souhaitez effectuer une installation dans un environnement différent, par exemple une image ros_comm ou dans Ubuntu pour Raspberry Pi, assurez-vous d'avoir suffisamment de connaissances sur ROS pour résoudre les problèmes pouvant découler de cette différence.
Commençons par créer les pilotes libfreenect à partir des sources, car la version pré-construite du référentiel apt-get est trop obsolète.
sudo apt-get mise à jour
sudo apt-get install libusb-1.0-0-dev
git clone
cd libfreenect
construction de mkdir && construction de cd
cmake -L..
Fabriquer
sudo faire installer
Espérons que le processus de construction se déroulera sans incident et plein de messages écologiques. Après avoir installé le pilote libfreenect, la prochaine chose à faire est d'installer le package freenect_stack pour ROS. Il y a pas mal d'autres packages dont cela dépend, nous devrons les cloner et construire avec catkin_make tous ensemble. Avant de commencer, assurez-vous que votre espace de travail Catkin est correctement configuré et fourni !
À partir du dossier src de votre espace de travail catkin:
git clone
git clone
git clone
git clone
git clone
git clone
Whooh, c'était beaucoup de clonage.
EDIT ULTÉRIEUR: Comme l'a souligné l'un de mes lecteurs, le référentiel vision_opencv doit être défini sur la branche mélodique. Pour ce cd à src/vision_opencv et exécuter
git checkout mélodique
Retournez ensuite dans votre dossier d'espace de travail catkin. Pour vérifier si nous avons des dépendances pour tous les packages en place, exécutez cette commande:
rosdep install --from-paths src --ignore-src
Si vous avez réussi à cloner tous les packages nécessaires, il vous demandera de télécharger libfreekinect avec apt-get. Répondez non, puisque nous l'avons déjà installé à partir des sources.
sudo apt-get install libbullet-dev libharfbuzz-dev libgtk2.0-dev libgtk-3-dev
catkin_make -j2
L'heure du thé;) ou quelle que soit votre boisson préférée.
Une fois le processus de compilation terminé, vous pouvez essayer de lancer la pile kinect et vérifier s'il génère correctement les images de profondeur et de couleur. J'utilise Raspberry Pi sans tête, je dois donc exécuter RVIZ sur mon ordinateur de bureau.
Sur Raspberry Pi faites (changez l'adresse IP en adresse IP de votre Raspberry Pi !):
exporter ROS_MASTER_URI=https://192.168.0.108:11311
exporter ROS_IP=192.168.0.108
roslaunch freenect_launch freenect.launch depth_registration:=true
Vous verrez la sortie comme dans la capture d'écran 1. « Arrêt de l'appareil RVB et vidage du flux de profondeur ». indique que Kinect est prêt, mais rien n'est encore abonné à ses sujets.
Sur votre ordinateur de bureau avec ROS Melodic installé, faites:
exporter ROS_MASTER_URI=https://192.168.0.108:11311
export ROS_IP=[votre-ordinateur-de-bureau-ip] rviz
Vous devriez maintenant pouvoir voir les flux d'images RVB et Profondeur dans RVIZ comme dans la capture d'écran 2 ci-dessus… mais pas en même temps.
D'accord, c'est ici que les trucs hacky commencent. J'ai passé 3 jours à essayer différents pilotes et approches et rien n'a fonctionné - dès que j'essayais d'accéder à deux flux simultanément, le Kinect commençait à expirer comme vous pouvez le voir dans la capture d'écran 3. freenect_stack, arrêt de usb_autosuspend, injection d'eau de Javel sur les ports USB (d'accord, pas le dernier ! ne le fais pas, c'est une blague et ne doit pas constituer un conseil technique:)). Ensuite, dans l'un des problèmes de Github, j'ai vu le récit d'une personne qui a déclaré que son Kinect était instable, jusqu'à ce qu'elle "charge le bus USB" en connectant un dongle WiFi. J'ai essayé ça et ça a marché. D'un côté, je suis content que ça marche. D'un autre côté, quelqu'un devrait vraiment y remédier. Eh bien, en attendant d'avoir (en quelque sorte) corrigé cela, passons à l'étape suivante.
Étape 3: Installation de RTAB MAP autonome
Tout d'abord, nous avons un tas de dépendances à installer:
Bien qu'un package armhf préconstruit soit disponible pour PCL, nous devrons le compiler à partir des sources à cause de ce problème. Consultez le référentiel PCL GitHub pour savoir comment le compiler à partir des sources.
sudo apt-get install libvtk6-dev libvtk6-qt-dev libvtk6-java libvtk6-jni
sudo apt-get install libopencv-dev cmake libopenni2-dev libsqlite3-dev
Clonons maintenant le référentiel git du package autonome rtab map dans notre dossier de départ et construisons-le. J'ai utilisé la dernière version (0.18.0).
git clone
cd rtabmap/construire
cmake..
faire -j2
sudo faire installer
sudo ldconfig rtabmap
Maintenant, lorsque nous avons compilé RTAB MAP autonome, nous pouvons passer à la dernière étape - compiler et installer le wrapper ROS pour RTAB MAP, rtabmap_ros.
Étape 4: Installation de Rtabmap_ros
Si vous êtes arrivé jusque-là, vous connaissez probablement l'exercice maintenant:) Clonez le référentiel rtabmap_ros dans votre dossier src de l'espace de travail catkin. (Exécutez la commande suivante à partir de votre dossier catkin workspace src !)
git clone
Nous aurons également besoin de ces packages ROS, dont rtabmap_ros dépend:
git clone
git clone
git clone
git clone
git clone
Avant de commencer la compilation, vous pouvez vous assurer de ne manquer aucune dépendance avec la commande suivante:
rosdep install --from-paths src --ignore-src
Installez plus de dépendances depuis ap-get (celles-ci n'interrompront pas la liaison, mais généreront une erreur lors de la compilation)
sudo apt-get install libsdl-image1.2-dev
Ensuite, accédez au dossier de votre espace de travail catkin et commencez à compiler:
cd..
catkin_make -j2
J'espère que vous n'avez pas mis votre boisson de compilation préférée trop loin. Une fois la compilation terminée, nous sommes prêts à faire le mappage !
Étape 5: Afficher l'heure
Faites cette astuce en ajoutant quelque chose comme un dongle WiFi ou Bluetooth à un port USB - j'utilisais 2 ports USB 2.0, un pour Kinect, l'autre pour un dongle WiFi.
Sur Raspberry Pi do (changez l'adresse IP en adresse IP de votre Raspberry Pi !): 1er terminal:
exporter ROS_MASTER_URI=https://192.168.0.108:11311
exporter ROS_IP=192.168.0.108
roslaunch freenect_launch freenect.launch depth_registration:=true data_skip:=2
2ème borne:
roslaunch rtabmap_ros rgbd_mapping.launch rtabmap_args:= --delete_db_on_start --Vis/MaxFeatures 500 --Mem/ImagePreDecimation 2 --Mem/ImagePostDecimation 2 --Kp/DetectorStrategy 6 --OdomF2M/MaxSize1000:=faux
Vous verrez la sortie comme dans la capture d'écran 1. « Arrêt de l'appareil RVB et vidage du flux de profondeur ». indique que Kinect est prêt, mais rien n'est encore abonné à ses sujets. Dans le deuxième terminal, vous devriez voir des messages sur la qualité d'odom. Si vous déplacez Kinect trop rapidement, la qualité d'odom passera à 0 et vous devrez vous déplacer vers un emplacement précédent ou commencer à partir d'une base de données propre.
Sur votre ordinateur de bureau avec les packages ROS Melodic et rtab_map installés (je vous recommande d'utiliser l'ordinateur Ubuntu pour cela, car des packages pré-construits sont disponibles pour l'architecture amd64):
exporter ROS_MASTER_URI=https://192.168.0.108:11311
export ROS_IP=[votre-ordinateur-de-bureau-ip]
rviz
Ajoutez des affichages MapGraph et MapCloud à rviz et choisissez les sujets correspondants provenant de rtab_map. Et bien, ça y est, doux goût de victoire ! Allez-y et faites un peu de cartographie:)
Étape 6: Références
Lors de la rédaction de cet article, j'ai consulté un certain nombre de ressources, principalement des forums et des problèmes GitHub. Je vais les laisser ici.
github.com/OpenKinect/libfreenect/issues/338
www.reddit.com/r/robotics/comments/8d37gy/ros_with_raspberry_pi_and_xbox_360_kinect_question/
github.com/ros-drivers/freenect_stack/issues/48
official-rtab-map-forum.67519.x6.nabble.com/RGB-D-SLAM-example-on-ROS-and-Raspberry-Pi-3-td1250.html
github.com/OpenKinect/libfreenect/issues/524
Ajoutez-moi sur LinkedIn si vous avez des questions et abonnez-vous à ma chaîne YouTube pour être informé des projets les plus intéressants impliquant l'apprentissage automatique et la robotique.
Conseillé:
ROS Melodic sur Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8 : 6 étapes
ROS Melodic sur Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8 : Cet article couvrira le processus d'installation de ROS Melodic Morenia sur Raspberry Pi 4 exécutant la dernière Debian Buster et comment utiliser RPLIDAR A1M8 avec notre installation. Depuis que Debian Buster a été officiellement publié il y a quelques semaines à peine (pour le moment
Premiers pas avec ROS Melodic sur Raspberry Pi 4 modèle B : 7 étapes
Premiers pas avec ROS Melodic sur Raspberry Pi 4 Modèle B : Le Robot Operating System (ROS) est un ensemble de bibliothèques logicielles et d'outils utilisés pour créer des systèmes et des applications robotiques. La version actuelle de service à long terme de ROS est Melodic Morenia. ROS Melodic est compatible uniquement avec Ubuntu 18.04 Bionic Beaver
Voix mélodique : 4 étapes
Voix mélodique : La conception de cet instrument est assez particulière et peu commune mais très simple à utiliser. Et pour ce faire, on a bien fait recours au circuit intégreé. Il oui ! C'est le coeur même de Melodic Voice qu
Installation de Raspbian Buster sur Raspberry Pi 3 - Premiers pas avec Raspbian Buster avec Raspberry Pi 3b/3b+ : 4 étapes
Installation de Raspbian Buster sur Raspberry Pi 3 | Premiers pas avec Raspbian Buster avec Raspberry Pi 3b/3b+ : Salut les gars, récemment l'organisation Raspberry pi a lancé un nouveau système d'exploitation Raspbian appelé Raspbian Buster. Il s'agit d'une nouvelle version de Raspbian pour Raspberry pi. Donc, aujourd'hui, dans ces instructables, nous allons apprendre à installer Raspbian Buster OS sur votre Raspberry pi 3
Moniteur météorologique M5Stack M5stick C basé sur ESP32 avec DHT11 - Surveiller la température, l'humidité et l'indice de chaleur sur le M5stick-C avec DHT11 : 6 étapes
Moniteur météorologique M5Stack M5stick C basé sur ESP32 avec DHT11 | Surveiller l'indice d'humidité et de chaleur de la température sur M5stick-C avec DHT11 : Salut les gars, dans ces instructables, nous apprendrons comment interfacer le capteur de température DHT11 avec m5stick-C (une carte de développement par m5stack) et l'afficher sur l'écran de m5stick-C. Donc, dans ce tutoriel, nous allons lire la température, l'humidité & chauffer je