Spisu treści:
- Krok 1: Co zadziałało, a co nie?
- Krok 2: Instalowanie sterowników Freenect i Freenect_stack
- Krok 3: Instalacja samodzielnej RTAB MAP
- Krok 4: Instalacja Rtabmap_ros
- Krok 5: Pokaż czas
- Krok 6: Referencje
Wideo: RGB-D SLAM z Kinect na Raspberry Pi 4 [Buster] ROS Melodic: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:28
W zeszłym roku napisałem artykuł o budowie i instalacji ROS Melodica na nowym (wówczas) Raspberry Pi z systemem Debian Buster OS. Artykułowi poświęcono wiele uwagi zarówno tutaj, w Instructables, jak i na innych platformach. Bardzo się cieszę, że tak wielu osobom pomogłem pomyślnie zainstalować ROS na Raspberry Pi. W dołączonym filmie krótko zademonstrowałem również uzyskiwanie obrazu głębi z Kinect 360. Później wiele osób skontaktowało się ze mną na LinkedIn i zapytało mnie, jak udało mi się użyć Kinect z Raspberry Pi. Byłem trochę zaskoczony tym pytaniem, ponieważ proces przygotowania Kinect w tamtym czasie zajmował mi około 3-4 godzin i nie wydawał się wyjątkowo skomplikowany. Udostępniłem swoje pliki.bash_history wszystkim osobom, które pytały mnie o ten problem i w kwietniu znalazłem wreszcie czas na napisanie artykułu o tym, jak zainstalować sterowniki Kinect i wykonać SLAM RGB-D z RTAB-MAP ROS. Tydzień nieprzespanych nocy po rozpoczęciu pisania artykułu rozumiem już, dlaczego tak wiele osób zadało mi to pytanie:)
Zacznę od krótkiego wyjaśnienia, jakie podejścia sprawdziły się, a które nie. Następnie wyjaśnię, jak zainstalować sterowniki Kinect do użytku z ROS Melodic i na koniec, jak skonfigurować komputer do RGB-D SLAM z RTAB-MAP ROS.
Krok 1: Co zadziałało, a co nie?
Dostępnych jest kilka sterowników dla Kinect na Raspberry Pi - z nich dwa są obsługiwane przez ROS.
Sterowniki OpenNI - pakiet openni_camera dla ROS
Sterowniki libfreenect - pakiet freenect_stack dla ROS
Jeśli spojrzysz na ich repozytoria GitHub, zobaczysz, że sterownik OpenNI był ostatnio aktualizowany lata temu i w praktyce jest EOL przez długi czas. Z drugiej strony ibfreekinect jest aktualizowany na czas. To samo dla ich odpowiednich pakietów ROS, freenect_stack został wydany dla ROS Melodic, podczas gdy ostatnia dystrybucja openni_camera wymieniła wsparcie dla Fuerte…
Możliwe jest skompilowanie i zainstalowanie sterownika OpenNI i pakietu openni_camera na Raspberry Pi dla ROS Melodic, chociaż u mnie to nie działało. W tym celu postępuj zgodnie z tym przewodnikiem, kroki 1, 2, 3, w krokach 2 i 3 usuń flagę "-mfloat-abi=softfp" z pliku Platform/Linux/Build/Common/Platform. ARM (za radą na ten temat problem z Githubem). Następnie sklonuj pakiet openni_camera do swojego obszaru roboczego catkin i skompiluj go za pomocą catkin_make. U mnie to jednak nie zadziałało, błąd polegał na tym, że tworzenie generatora głębokości nie powiodło się. Powód: interfejs USB nie jest obsługiwany!
Korzystanie z libfreenect i freenect_stack przyniosło w końcu sukces, ale było sporo problemów do rozwiązania, a rozwiązanie było trochę zwariowane, aczkolwiek działało bardzo stabilnie (1 godzina + ciągła praca).
Krok 2: Instalowanie sterowników Freenect i Freenect_stack
Zakładam, że używasz mojego obrazu ROS Melodic Desktop z tego artykułu. Jeśli chcesz przeprowadzić instalację w innym środowisku, na przykład obraz ros_comm lub w Ubuntu dla Raspberry Pi, upewnij się, że masz wystarczającą wiedzę o ROS, aby rozwiązać problemy, które mogą wynikać z tej różnicy.
Zacznijmy od zbudowania sterowników libfreenect ze źródeł, ponieważ prekompilowana wersja repozytorium apt-get jest zbyt przestarzała.
aktualizacja sudo apt-get
sudo apt-get zainstaluj libusb-1.0-0-dev
klon git
cd libfreenect
mkdir build && cd build
cmake -L..
robić
sudo dokonać instalacji
Mamy nadzieję, że proces budowania przebiegnie bez zakłóceń i będzie pełen zielonych, przyjaznych wiadomości. Po zainstalowaniu sterownika libfreenect następną rzeczą do zrobienia jest zainstalowanie pakietu freenect_stack dla ROS. Jest sporo innych pakietów, od których zależy, będziemy musieli je sklonować i zbudować razem z catkin_make. Zanim zaczniesz, upewnij się, że twój koci obszar roboczy jest odpowiednio skonfigurowany i pozyskiwany!
Z folderu src w obszarze roboczym kotki:
klon git
klon git
klon git
klon git
klon git
klon git
Och, to było dużo klonowania.
PÓŹNIEJSZA EDYCJA: Jak zauważył jeden z moich czytelników, repozytorium vision_opencv musi być ustawione na gałąź melodyczną. Z tego cd do src/vision_opencv i wykonaj
git kasa melodyjny
Następnie wróć do folderu obszaru roboczego kotki. Aby sprawdzić, czy mamy zależności dla wszystkich pakietów, wykonaj to polecenie:
rosdep install --from-paths src --ignore-src
Jeśli pomyślnie sklonujesz wszystkie potrzebne pakiety, poprosi o pobranie libfreekinect za pomocą apt-get. Odpowiedz nie, ponieważ już zainstalowaliśmy go ze źródła.
sudo apt-get zainstaluj libbullet-dev libharfbuzz-dev libgtk2.0-dev libgtk-3-dev
catkin_make -j2
Czas na herbatę;) lub jakikolwiek ulubiony napój.
Po zakończeniu procesu kompilacji możesz spróbować uruchomić stos kinect i sprawdzić, czy prawidłowo wyświetla obrazy głębi i kolorów. Używam Raspberry Pi bez głowy, więc muszę uruchomić RVIZ na moim komputerze stacjonarnym.
Na Raspberry Pi zrób (Zmień adres IP na adres IP swojego Raspberry Pi!):
eksportuj ROS_MASTER_URI=https://192.168.0.108:11311
eksport ROS_IP=192.168.0.108
roslaunch freenect_launch freenect.launch depth_registration:=true
Zobaczysz dane wyjściowe jak na zrzucie ekranu 1. „Zatrzymywanie opróżniania strumienia RGB i głębokości urządzenia”. wskazuje, że sensor Kinect jest gotowy, ale nic nie jest jeszcze subskrybowane do jego tematów.
Na komputerze stacjonarnym z zainstalowanym ROS Melodic wykonaj:
eksport ROS_MASTER_URI=https://192.168.0.108:11311
export ROS_IP=[adres-ip-komputera-komputera] rviz
Teraz powinieneś być w stanie zobaczyć strumienie obrazu RGB i Depth w RVIZ, jak na zrzucie 2 powyżej… ale nie w tym samym czasie.
Dobra, tutaj zaczynają się hacky. Spędziłem 3 dni, próbując różnych sterowników i podejść i nic nie działało - jak tylko spróbowałem uzyskać dostęp do dwóch strumieni jednocześnie, Kinect zacząłby odliczać czas, jak widać na zrzucie ekranu 3. Próbowałem wszystkiego: lepszego zasilania, starszych wersji libfreenect i freenect_stack, zatrzymanie usb_autosuspend, wstrzyknięcie wybielacza do portów USB (no dobrze, nie ostatni! nie rób tego, to żart i nie powinien stanowić porady technicznej:)). Następnie w jednym z wydań Github zobaczyłem konto osoby, która twierdziła, że ich Kinect jest niestabilny, dopóki nie „załaduje magistrali USB” przez podłączenie klucza WiFi. Próbowałem tego i zadziałało. Z jednej strony cieszę się, że się udało. Z drugiej strony ktoś naprawdę powinien to naprawić. Cóż, w międzyczasie (w pewnym sensie) naprawiliśmy to, przejdźmy do następnego kroku.
Krok 3: Instalacja samodzielnej RTAB MAP
Najpierw musimy zainstalować kilka zależności:
Pomimo tego, że istnieje gotowy pakiet armhf dostępny dla PCL, będziemy musieli skompilować go ze źródeł z powodu tego problemu. Skonsultuj się z repozytorium PCL GitHub, aby zobaczyć, jak skompilować je ze źródła.
sudo apt-get zainstaluj libvtk6-dev libvtk6-qt-dev libvtk6-java libvtk6-jni
sudo apt-get zainstaluj libopencv-dev cmake libopenni2-dev libsqlite3-dev
Teraz sklonujmy samodzielny pakiet git z repozytorium rtab do naszego folderu domowego i zbudujmy je. Użyłem najnowszej wersji (0.18.0).
klon git
cd rtabmap/kompilacja
cmak..
make -j2
sudo dokonać instalacji
sudo ldconfig rtabmap
Teraz, gdy skompilowaliśmy samodzielny RTAB MAP, możemy przejść do ostatniego kroku - kompilacji i instalacji wrappera ROS dla RTAB MAP, rtabmap_ros.
Krok 4: Instalacja Rtabmap_ros
Jeśli dotarłeś tak daleko, prawdopodobnie znasz już ćwiczenie:) Sklonuj repozytorium rtabmap_ros do folderu src catkin workspace. (Wykonaj następne polecenie z folderu src catkin workspace!)
klon git
Będziemy potrzebować również tych pakietów ROS, od których rtabmap_ros zależy:
klon git
klon git
klon git
klon git
klon git
Przed rozpoczęciem kompilacji możesz upewnić się, że nie brakuje żadnych zależności za pomocą następującego polecenia:
rosdep install --from-paths src --ignore-src
Zainstaluj więcej zależności z ap-get (nie zakłócą one linkowania, ale spowodują błąd podczas kompilacji)
sudo apt-get zainstaluj libsdl-image1.2-dev
Następnie przejdź do folderu obszaru roboczego kotki i rozpocznij kompilację:
Płyta CD..
catkin_make -j2
Mam nadzieję, że nie umieściłeś swojego ulubionego napoju kompilacyjnego nigdzie za daleko. Po zakończeniu kompilacji jesteśmy gotowi do mapowania!
Krok 5: Pokaż czas
Zrób ten chwytliwy trik, dodając coś takiego jak klucz WiFi lub Bluetooth do portu USB – używałem 2 portów USB 2.0, jednego dla Kinecta, drugiego dla klucza WiFi.
Na Raspberry Pi wykonaj (Zmień adres IP na adres IP swojego Raspberry Pi!): 1. terminal:
eksport ROS_MASTER_URI=https://192.168.0.108:11311
eksport ROS_IP=192.168.0.108
roslaunch freenect_launch freenect.launch depth_registration:=true data_skip:=2
Drugi terminal:
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/MaxSize 1000-Decimapadom:=fałsz
Zobaczysz dane wyjściowe jak na zrzucie ekranu 1. „Zatrzymywanie opróżniania strumienia RGB i głębokości urządzenia”. wskazuje, że Kinect jest gotowy, ale nic nie jest jeszcze subskrybowane do jego tematów. W drugim terminalu powinieneś widzieć komunikaty o jakości odom. Jeśli przesuniesz Kinect zbyt szybko, jakość odomu spadnie do 0 i będziesz musiał przejść do poprzedniej lokalizacji lub zacząć od czystej bazy danych.
Na komputerze stacjonarnym z zainstalowanym ROS Melodic i pakietem rtab_map (polecam używać do tego komputera Ubuntu, ponieważ gotowe pakiety są dostępne dla architektury amd64) wykonaj:
eksport ROS_MASTER_URI=https://192.168.0.108:11311
export ROS_IP=[adres-ip-komputera-komputera]
rviz
Dodaj wyświetlacze MapGraph i MapCloud do rviz i wybierz odpowiednie tematy pochodzące z rtab_map. Cóż, to jest to, słodki smak zwycięstwa! Śmiało i zrób trochę mapowania:)
Krok 6: Referencje
Podczas pisania tego artykułu konsultowałem się z wieloma zasobami, głównie z forami i problemami z GitHub. Zostawię je tutaj.
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
Dodaj mnie na LinkedIn, jeśli masz jakieś pytania i zasubskrybuj mój kanał na YouTube, aby otrzymywać powiadomienia o ciekawszych projektach związanych z uczeniem maszynowym i robotyką.
Zalecana:
ROS Melodic na Raspberry Pi 4[Debian Buster] + RPLIDAR A1M8: 6 kroków
ROS Melodic na Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8: W tym artykule omówimy proces instalacji ROS Melodic Morenia na Raspberry Pi 4 z najnowszym Debian Buster i jak używać RPLIDAR A1M8 w naszej instalacji. Ponieważ Debian Buster został oficjalnie wydany zaledwie kilka tygodni temu (na chwilę obecną
Zainstaluj ROS Kinetic, TurtleBot3, Raspicam na Raspberry Pi 4b: 5 kroków
Zainstaluj ROS Kinetic, TurtleBot3, Raspicam na Raspberry Pi 4b: TurtleBot3 Burger jest dostarczany z Raspberry Pi 3 B/B+ i nie obsługuje nowego (stan na 9/2019) Raspberry Pi 4b. Postępuj zgodnie z poniższymi krokami, aby TurtleBot3 działał na Raspberry Pi 4b, w tym budowanie ROS Kinetic ze źródeł na Raspberry Pi 4b Raspbian
Pierwsze kroki z ROS Melodic na Raspberry Pi 4 Model B: 7 kroków
Pierwsze kroki z ROS Melodic na Raspberry Pi 4 Model B: System operacyjny robota (ROS) to zestaw bibliotek oprogramowania i narzędzi używanych do tworzenia systemów i aplikacji robotów. Obecna długoterminowa wersja usługi ROS to Melodic Morenia. ROS Melodic jest kompatybilny tylko z Ubuntu 18.04 Bionic Beaver
Instalowanie Raspbian Buster na Raspberry Pi 3 - Pierwsze kroki z Raspbian Buster z Raspberry Pi 3b / 3b+: 4 kroki
Instalowanie Raspbian Buster na Raspberry Pi 3 | Pierwsze kroki z Raspbian Buster z Raspberry Pi 3b / 3b+: Witajcie, niedawno organizacja Raspberry pi uruchomiła nowy system operacyjny Raspbian o nazwie Raspbian Buster. Jest to nowa wersja Raspbian dla Raspberry pi. Więc dzisiaj w tej instrukcji dowiemy się, jak zainstalować Raspbian Buster OS na twoim Raspberry pi 3
Roomblock: platforma do nauki nawigacji ROS z Roomba, Raspberry Pi i RPLIDAR: 9 kroków (ze zdjęciami)
Roomblock: platforma do nauki nawigacji ROS z Roomba, Raspberry Pi i RPLIDAR: Co to jest? to platforma robota składająca się z Roomby, Raspberry Pi 2, czujnika laserowego (RPLIDAR) i mobilnej baterii. Ramkę montażową można wykonać na drukarkach 3D. System nawigacji ROS umożliwia wykonanie mapy pomieszczeń i korzystanie z