Πίνακας περιεχομένων:
- Βήμα 1: Τι λειτούργησε και τι όχι
- Βήμα 2: Εγκατάσταση προγραμμάτων οδήγησης Freenect και Freenect_stack
- Βήμα 3: Εγκατάσταση αυτόνομου RTAB MAP
- Βήμα 4: Εγκατάσταση του Rtabmap_ros
- Βήμα 5: Εμφάνιση ώρας
- Βήμα 6: Αναφορές
Βίντεο: RGB-D SLAM With Kinect on Raspberry Pi 4 [Buster] ROS Melodic: 6 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:33
Πέρυσι έγραψα ένα άρθρο σχετικά με τη δημιουργία και εγκατάσταση του ROS Melodic σε νέο (εκείνη την εποχή) Raspberry Pi με Debian Buster OS. Το άρθρο έχει λάβει μεγάλη προσοχή τόσο εδώ στο Instructables όσο και σε άλλες πλατφόρμες. Είμαι πολύ χαρούμενος που βοήθησα τόσους πολλούς ανθρώπους να εγκαταστήσουν επιτυχώς το ROS στο Raspberry Pi. Στο συνοδευτικό βίντεο επίσης παρουσίασα εν συντομία τη λήψη βάθους εικόνας από το Kinect 360. Αργότερα, πολλοί άνθρωποι επικοινώνησαν μαζί μου στο LinkedIn και με ρώτησαν πώς κατάφερα να χρησιμοποιήσω το Kinect με το Raspberry Pi. Έμεινα έκπληκτος στην ερώτηση, καθώς η διαδικασία προετοιμασίας του Kinect μου πήρε περίπου 3-4 ώρες και δεν φαινόταν εξαιρετικά περίπλοκη. Μοιράστηκα τα αρχεία μου.bash_history με όλους τους ανθρώπους που με ρωτούσαν για το ζήτημα και τον Απρίλιο βρήκα επιτέλους τον χρόνο να γράψω ένα άρθρο σχετικά με τον τρόπο εγκατάστασης προγραμμάτων οδήγησης Kinect και εκτέλεσης RGB-D SLAM με RTAB-MAP ROS. Εβδομάδα αϋπνιών μετά την έναρξη της συγγραφής του άρθρου τώρα καταλαβαίνω γιατί τόσοι πολλοί μου έκαναν αυτήν την ερώτηση:)
Θα ξεκινήσω με μια σύντομη εξήγηση σχετικά με το ποιες προσεγγίσεις λειτούργησαν και ποιες όχι. Στη συνέχεια, θα εξηγήσω πώς να εγκαταστήσετε προγράμματα οδήγησης Kinect για χρήση με το ROS Melodic και τέλος πώς να ρυθμίσετε το μηχάνημά σας για RGB-D SLAM με RTAB-MAP ROS.
Βήμα 1: Τι λειτούργησε και τι όχι
Υπάρχουν μερικά διαθέσιμα προγράμματα οδήγησης για το Kinect στο Raspberry Pi - από αυτά τα δύο υποστηρίζονται από ROS.
Προγράμματα οδήγησης OpenNI - πακέτο openni_camera για ROS
προγράμματα οδήγησης libfreenect - πακέτο freenect_stack για ROS
Αν κοιτάξετε τα αντίστοιχα αποθετήρια GitHub, μπορείτε να διαπιστώσετε ότι το πρόγραμμα οδήγησης OpenNI ενημερώθηκε τελευταία φορά πριν από χρόνια και στην πράξη είναι EOL για μεγάλο χρονικό διάστημα. Το ibfreekinect από την άλλη ενημερώνεται έγκαιρα. Το ίδιο και για τα αντίστοιχα πακέτα ROS, το freenect_stack κυκλοφόρησε για μελωδικό ROS, ενώ η τελευταία διανομή openni_camera που έχει αναφέρει είναι η Fuerte…
Είναι δυνατή η μεταγλώττιση και εγκατάσταση του προγράμματος οδήγησης OpenNI και του πακέτου openni_camera στο Raspberry Pi για ROS Melodic, αν και δεν λειτούργησε για μένα. Για να το κάνετε αυτό ακολουθήστε αυτόν τον οδηγό, τα βήματα 1, 2, 3, στα βήματα 2 και 3 αφαιρέστε τη σημαία "-mfloat-abi = softfp" από το αρχείο Platform/Linux/Build/Common/Platform. ARM (ανά συμβουλή σχετικά με αυτό Ζήτημα Github). Στη συνέχεια, κλωνοποιήστε το πακέτο openni_camera στον χώρο εργασίας σας και κάντε μεταγλώττιση με το catkin_make. Δεν λειτούργησε για μένα όμως, το σφάλμα δημιουργίας γεννήτρια βάθους απέτυχε. Αιτία: Η διεπαφή USB δεν υποστηρίζεται!
Η χρήση του libfreenect και του freenect_stack απέδωσε επιτυχία στο τέλος, αλλά υπήρχαν αρκετά προβλήματα προς επίλυση και η λύση ήταν λίγο χακαρή, αν και λειτούργησε πολύ σταθερά (1 ώρα + συνέχιση λειτουργίας).
Βήμα 2: Εγκατάσταση προγραμμάτων οδήγησης Freenect και Freenect_stack
Υποθέτω ότι χρησιμοποιείτε την εικόνα ROS Melodic Desktop μου από αυτό το άρθρο. Εάν θέλετε να κάνετε εγκατάσταση σε διαφορετικό περιβάλλον, για παράδειγμα εικόνα ros_comm ή στο Ubuntu για Raspberry Pi, βεβαιωθείτε ότι έχετε αρκετές γνώσεις σχετικά με το ROS για την επίλυση προβλημάτων που ενδέχεται να προκύψουν από αυτήν τη διαφορά.
Ας ξεκινήσουμε με τη δημιουργία προγραμμάτων οδήγησης libfreenect από την πηγή, αφού η προεγκατεστημένη έκδοση αποθετηρίου apt-get είναι πολύ ξεπερασμένη.
sudo apt-get ενημέρωση
sudo apt-get install libusb-1.0-0-dev
git clone
cd libfreenect
mkdir build && cd build
cmake -L..
φτιαχνω, κανω
sudo make install
Ας ελπίσουμε ότι η διαδικασία κατασκευής θα είναι χωρίς προβλήματα και γεμάτη πράσινα φιλικά μηνύματα. Αφού εγκαταστήσετε το πρόγραμμα οδήγησης libfreenect, το επόμενο βήμα είναι να εγκαταστήσετε το πακέτο freenect_stack για ROS. Υπάρχουν αρκετά άλλα πακέτα από τα οποία εξαρτάται, θα πρέπει να τα κλωνοποιήσουμε και να τα δημιουργήσουμε με το catkin_make όλα μαζί. Πριν ξεκινήσετε, βεβαιωθείτε ότι ο χώρος εργασίας σας είναι κατάλληλα διαμορφωμένος και προμηθευμένος!
Από το φάκελο src του χώρου εργασίας catkin:
git clone
git clone
git clone
git clone
git clone
git clone
Ουφ, αυτό ήταν πολύ κλωνοποίηση.
LATER EDIT: Όπως επεσήμανε ένας από τους αναγνώστες μου, το αποθετήριο vision_opencv πρέπει να ρυθμιστεί σε μελωδικό κλάδο. Για αυτό το cd στο src/vision_opencv και εκτελέστε
μελωδικό git checkout
Στη συνέχεια, επιστρέψτε στον φάκελο του χώρου εργασίας catkin. Για να ελέγξουμε εάν εξαρτώμενοι για όλα τα πακέτα που υπάρχουν, εκτελέστε αυτήν την εντολή:
rosdep install-from-paths src --ignore-src
Εάν κλωνοποιήσατε με επιτυχία όλα τα απαραίτητα πακέτα, θα ζητήσει τη λήψη του libfreekinect με το apt-get. Απαντήστε όχι, αφού το έχουμε ήδη εγκαταστήσει από την πηγή.
sudo apt-get install libbullet-dev libharfbuzz-dev libgtk2.0-dev libgtk-3-dev
catkin_make -j2
Timeρα για τσάι;) ή όποιο είναι το αγαπημένο σας ποτό.
Αφού ολοκληρωθεί η διαδικασία μεταγλώττισης, μπορείτε να δοκιμάσετε να ξεκινήσετε τη στοίβα kinect και να ελέγξετε αν εξάγει σωστά το βάθος και τις έγχρωμες εικόνες. Χρησιμοποιώ το Raspberry Pi ακέφαλο, οπότε πρέπει να τρέξω το RVIZ στον επιτραπέζιο υπολογιστή μου.
Στο Raspberry Pi do (Αλλάξτε τη διεύθυνση IP σε διεύθυνση IP του Raspberry Pi!):
εξαγωγή ROS_MASTER_URI = https://192.168.0.108: 11311
εξαγωγή ROS_IP = 192.168.0.108
roslaunch freenect_launch freenect.launch deep_registration: = true
Θα δείτε την έξοδο όπως στο Στιγμιότυπο οθόνης 1. "Διακοπή ροής συσκευής RGB και Depth stream flush." υποδεικνύει ότι το Kinect είναι έτοιμο, αλλά τίποτα δεν έχει εγγραφεί ακόμα στα θέματα του.
Στον επιτραπέζιο υπολογιστή σας με εγκατεστημένο το ROS Melodic κάντε:
εξαγωγή ROS_MASTER_URI = https://192.168.0.108: 11311
εξαγωγή ROS_IP = [your-desktop-computer-ip] rviz
Τώρα θα πρέπει να μπορείτε να βλέπετε ροές εικόνας RGB και Depth σε RVIZ όπως στο Screenshot 2 παραπάνω … αλλά όχι ταυτόχρονα.
Εντάξει, εδώ ξεκινούν τα χακαρισμένα πράγματα. Πέρασα 3 ημέρες δοκιμάζοντας διαφορετικούς οδηγούς και προσεγγίσεις και τίποτα δεν λειτούργησε - μόλις προσπαθούσα να έχω πρόσβαση σε δύο ροές ταυτόχρονα, το Kinect θα ξεκινούσε το χρονικό όριο όπως μπορείτε να δείτε στο Screenshot 3. Δοκίμασα τα πάντα: καλύτερη παροχή ρεύματος, παλαιότερες δεσμεύσεις libfreenect και freenect_stack, διακοπή usb_autosuspend, έγχυση χλωρίνης σε θύρες USB (εντάξει, όχι η τελευταία! μην το κάνετε, είναι αστείο και δεν πρέπει να συνιστά τεχνική συμβουλή:)). Στη συνέχεια, σε ένα από τα τεύχη του Github είδα έναν λογαριασμό ενός ατόμου που είπε ότι το Kinect ήταν ασταθές, μέχρι να "φορτώσει το δίαυλο USB" συνδέοντας το WiFi dongle. Το δοκίμασα και λειτούργησε. Από τη μία χαίρομαι που λειτούργησε. Από την άλλη πλευρά, κάποιος πρέπει πραγματικά να το διορθώσει. Λοιπόν, εν τω μεταξύ (κάπως) το διορθώσαμε, ας προχωρήσουμε στο επόμενο βήμα.
Βήμα 3: Εγκατάσταση αυτόνομου RTAB MAP
Πρώτα έχουμε μια δέσμη εξαρτήσεων που πρέπει να εγκατασταθούν:
Παρόλο που υπάρχει ένα προσχεδιασμένο πακέτο armhf διαθέσιμο για PCL, θα χρειαστεί να το μεταγλωττίσουμε από την πηγή λόγω αυτού του ζητήματος. Συμβουλευτείτε το αποθετήριο PCL GitHub για να δείτε πώς να το μεταγλωττίσετε από την πηγή.
sudo apt-get install libvtk6-dev libvtk6-qt-dev libvtk6-java libvtk6-jni
sudo apt-get install libopencv-dev cmake libopenni2-dev libsqlite3-dev
Τώρα ας κλωνοποιήσουμε το rtab χάρτη αυτόνομου πακέτου git αποθήκη στον αρχικό μας φάκελο και να το δημιουργήσουμε. Χρησιμοποίησα την τελευταία έκδοση (0.18.0).
git clone
cd rtabmap/build
cmake..
κάνω -j2
sudo make install
sudo ldconfig rtabmap
Τώρα, όταν έχουμε συγκεντρώσει αυτόνομο RTAB MAP, μπορούμε να προχωρήσουμε στο τελευταίο βήμα - τη σύνταξη και εγκατάσταση περιτυλίγματος ROS για RTAB MAP, rtabmap_ros.
Βήμα 4: Εγκατάσταση του Rtabmap_ros
Αν φτάσατε τόσο μακριά, πιθανότατα γνωρίζετε το τρυπάνι:) Κλωνοποιήστε το αποθετήριο rtabmap_ros στον φάκελο src του χώρου εργασίας catkin. (Εκτέλεση επόμενης εντολής από το φάκελο catrink src workspace!)
git clone
Θα χρειαστούμε επίσης αυτά τα πακέτα ROS, από τα οποία το rtabmap_ros εξαρτάται:
git clone
git clone
git clone
git clone
git clone
Πριν ξεκινήσετε τη μεταγλώττιση, μπορείτε να βεβαιωθείτε ότι δεν σας λείπουν εξαρτήσεις με την ακόλουθη εντολή:
rosdep install-from-paths src --ignore-src
Εγκαταστήστε περισσότερες εξαρτήσεις από το ap-get (αυτές δεν θα διακόψουν τη σύνδεση, αλλά θα προκαλέσουν σφάλμα κατά τη μεταγλώττιση)
sudo apt-get install libsdl-image1.2-dev
Στη συνέχεια, μεταβείτε στον φάκελο χώρου εργασίας catkin και ξεκινήστε τη σύνταξη:
cd..
catkin_make -j2
Ελπίζω να μην βάλατε το αγαπημένο σας ποτό συλλογής πουθενά πολύ μακριά. Αφού ολοκληρωθεί η μεταγλώττιση είμαστε έτοιμοι να κάνουμε τη χαρτογράφηση!
Βήμα 5: Εμφάνιση ώρας
Κάντε αυτό το παραπλανητικό κόλπο προσθέτοντας κάτι σαν WiFi ή dongle Bluetooth σε μια θύρα USB - χρησιμοποιούσα 2 θύρες USB 2.0, η μία για Kinect και η άλλη για dongle WiFi.
Στο Raspberry Pi do (Αλλάξτε τη διεύθυνση IP σε διεύθυνση IP του Raspberry Pi!): 1ο τερματικό:
εξαγωγή ROS_MASTER_URI = https://192.168.0.108: 11311
εξαγωγή ROS_IP = 192.168.0.108
roslaunch freenect_launch freenect.launch deep_registration: = true data_skip: = 2
2ος τερματικός σταθμός:
roslaunch rtabmap_ros rgbd_mapping.launch rtabmap_args: = "-delete_db_on_start --Vis/MaxFeatures 500 --Mem/ImagePreDecimation 2 --Mem/ImagePostDecimation 2 --Kp/DetectorStrategy 6 --Odomrt2Odom/MaxSize" 1000Size: = ψευδές
Θα δείτε την έξοδο όπως στο Στιγμιότυπο οθόνης 1. "Διακοπή ροής συσκευής RGB και ροή βάθους". υποδεικνύει ότι το Kinect είναι έτοιμο, αλλά τίποτα δεν έχει εγγραφεί ακόμη στα θέματα του. Στο δεύτερο τερματικό θα πρέπει να βλέπετε μηνύματα σχετικά με την ποιότητα της οσμής. Εάν μετακινήσετε το Kinect πολύ γρήγορα, η ποιότητα odom θα πάει στο 0 και θα χρειαστεί να μετακινηθείτε σε προηγούμενη τοποθεσία ή να ξεκινήσετε από καθαρή βάση δεδομένων.
Στον επιτραπέζιο υπολογιστή σας με εγκατεστημένο το πακέτο ROS Melodic και rtab_map (σας συνιστώ να χρησιμοποιήσετε τον υπολογιστή Ubuntu για αυτό, δεδομένου ότι είναι διαθέσιμα πακέτα για αρχιτεκτονική amd64):
εξαγωγή ROS_MASTER_URI = https://192.168.0.108: 11311
εξαγωγή ROS_IP = [your-desktop-computer-ip]
rviz
Προσθέστε τις οθόνες MapGraph και MapCloud στο rviz και επιλέξτε τα αντίστοιχα θέματα που προέρχονται από το rtab_map. Λοιπόν, αυτό είναι, γλυκιά γεύση νίκης! Προχωρήστε και κάντε λίγη χαρτογράφηση:)
Βήμα 6: Αναφορές
Κατά τη συγγραφή αυτού του άρθρου υπήρχαν αρκετοί πόροι που συμβουλεύτηκα, κυρίως φόρουμ και θέματα GitHub. Θα τους αφήσω εδώ.
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
Προσθέστε με στο LinkedIn αν έχετε οποιεσδήποτε ερωτήσεις και εγγραφείτε στο κανάλι μου στο YouTube για να λαμβάνετε ειδοποιήσεις για πιο ενδιαφέροντα έργα που περιλαμβάνουν μηχανική εκμάθηση και ρομποτική.
Συνιστάται:
ROS Melodic στο Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8: 6 βήματα
ROS Melodic στο Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8: Αυτό το άρθρο θα καλύψει τη διαδικασία εγκατάστασης του ROS Melodic Morenia στο Raspberry Pi 4 που τρέχει το πιο πρόσφατο Debian Buster και πώς να χρησιμοποιήσετε το RPLIDAR A1M8 με την εγκατάστασή μας. Δεδομένου ότι η Debian Buster κυκλοφόρησε επίσημα μόλις πριν από λίγες εβδομάδες (από τη στιγμή
Εγκαταστήστε το ROS Kinetic, TurtleBot3, Raspicam στο Raspberry Pi 4b: 5 βήματα
Εγκαταστήστε το ROS Kinetic, TurtleBot3, Raspicam στο Raspberry Pi 4b: Το TurtleBot3 Burger έρχεται με Raspberry Pi 3 B/B+ και δεν υποστηρίζει το νέο (από 9/2019) Raspberry Pi 4b. Ακολουθήστε τα παρακάτω βήματα για να κάνετε το TurtleBot3 να δουλέψει στο Raspberry Pi 4b, συμπεριλαμβανομένου του ROS Kinetic από πηγές στο Raspberry Pi 4b Raspbian
Ξεκινώντας με το ROS Melodic στο Raspberry Pi 4 Μοντέλο Β: 7 βήματα
Ξεκινώντας με το ROS Melodic στο Raspberry Pi 4 Μοντέλο Β: Το λειτουργικό σύστημα ρομπότ (ROS) είναι ένα σύνολο βιβλιοθηκών λογισμικού και εργαλείων που χρησιμοποιούνται για τη δημιουργία ρομποτικών συστημάτων και εφαρμογών. Η τρέχουσα μακροπρόθεσμη έκδοση υπηρεσιών του ROS είναι η Melodic Morenia. Το ROS Melodic είναι συμβατό μόνο με το Ubuntu 18.04 Bionic Beaver
Εγκατάσταση Raspbian Buster στο Raspberry Pi 3 - Ξεκινώντας με το Raspbian Buster With Raspberry Pi 3b / 3b+: 4 βήματα
Εγκατάσταση Raspbian Buster στο Raspberry Pi 3 | Ξεκινώντας με το Raspbian Buster With Raspberry Pi 3b / 3b+: Γεια σας παιδιά, πρόσφατα ο οργανισμός Raspberry pi κυκλοφόρησε το νέο Raspbian OS που ονομάζεται Raspbian Buster. Είναι μια νέα έκδοση του Raspbian για Raspberry pi's. Σήμερα λοιπόν σε αυτά τα εκπαιδευτικά θα μάθουμε πώς να εγκαταστήσετε το Raspbian Buster OS στο Raspberry pi 3
Roomblock: μια πλατφόρμα για εκμάθηση πλοήγησης ROS με Roomba, Raspberry Pi και RPLIDAR: 9 βήματα (με εικόνες)
Roomblock: μια πλατφόρμα για εκμάθηση πλοήγησης ROS με Roomba, Raspberry Pi και RPLIDAR: Τι είναι αυτό; " Roomblock " είναι μια πλατφόρμα ρομπότ που αποτελείται από ένα Roomba, ένα Raspberry Pi 2, έναν αισθητήρα λέιζερ (RPLIDAR) και μια μπαταρία για κινητά. Το πλαίσιο στερέωσης μπορεί να κατασκευαστεί από 3D εκτυπωτές. Το σύστημα πλοήγησης ROS επιτρέπει τη δημιουργία χάρτη των δωματίων και τη χρήση i