W tym samouczku wyjaśniamy, jak używać ArduSimple Odbiorniki RTK do uzyskiwania precyzyjnych danych pozycjonowania w ROS. Poprowadzimy Cię przez kolejne etapy integracji ArduSimple Odbiornik RTK do swojego projektu ROS, umożliwiając wykorzystanie mocy dokładnych danych GPS.
Niezależnie od tego, czy jesteś entuzjastą robotyki, badaczem czy programistą, w tym samouczku dowiesz się, jak uzyskać dostęp do danych pozycjonowania w aplikacjach ROS.
Jeśli jesteś nowy w ROS, przygotowaliśmy krótki tsamouczek, który pomoże rozpocząć pracę z ROS aby dowiedzieć się więcej o kluczowych pojęciach związanych z ROS, jaką platformę i środowisko programistyczne lepiej wybrać itp.
Wymagany sprzęt:
- simpleRTK2B odbiornik szeregowy (w tym samouczku używamy simpleRTK2B Budget)
- Antena wielopasmowa RTK (w tym samouczku używamy u-blox GNSS Antena wielopasmowa ANN-MB-00 (IP67))
- kabel USB kompatybilny z portem USB odbiornika do podłączenia do komputera PC lub platformy wbudowanej
- Komputer lub platforma wbudowana z dostępem do Internetu (w tym samouczku używamy komputera PC)
Wymagane oprogramowanie:
- Ubuntu 18 lub 20 (w tym samouczku używamy Ubuntu 20) instalowane natywnie na komputerze PC
- ROS (używamy ROS Noetic).
- Możesz skorzystać z tych samouczków, aby zainstalować system ROS:
- użyj ROS Melodic dla Ubuntu 18 (sprawdź instrukcja instalacji ROS Melodic)
- użyj ROS Noetic dla Ubuntu 20 (sprawdź instrukcja instalacji dla ROS Noetic)
Jak używać ArduSimple Odbiorniki RTK i uzyskać dane GPS w ROS?
Najpierw podłącz i skonfiguruj odbiornik RTK w systemie Ubuntu.
- Podłącz Antena RTK dla Twojej odbiorca. Miejsce antena w miejscu z dobrym widokiem na niebo lub w pobliżu okna w celu sprawdzenia działania.
- Podłącz odbiorca do komputera poprzez port USB oznaczony „POWER+GPS".
- Odbiornik powinien zostać skonfigurowany automatycznie. Aby to sprawdzić, otwórz terminal i wpisz polecenie:
ls /dev/tty*
- Zobaczysz „/dev/ttyACM0” został utworzony automatycznie.
- Aby zweryfikować strumień z Twojego Odbiornik RTK, użyj polecenia:
sudo cat /dev/ttyACM0
- Strumień wejściowy GPS wygląda podobnie do poniższego:
- Naciśnij przycisk Ctrl + C aby anulować oglądanie strumienia.
- Aby zapobiec Odbiornik RTK od rozpoczęcia w innymttyACM*” za każdym razem, gdy jest zasilany, utwórz regułę udev (dynamiczne łącze), która tworzy wpis o określonej nazwie, dodając następujący plik przed podłączeniem Odbiornik RTK.
sudo nano /etc/udev/rules.d/50-ardusimple.rules
- Wprowadź następujący tekst do reguły:
KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a9", SYMLINK="tty_Ardusimple", GROUP="dialout", MODE="0666"
- Naciśnij przycisk Ctrl + X aby wyjść z pliku i naciśnij Y aby zapisać zmodyfikowany bufor.
- Teraz, gdy np Odbiornik RTK jest podłączony, będzie dostępny z „/dev/tty_Ardusimple" połączyć. Aby to sprawdzić, odłącz Odbiornik RTK (wyłącz i ponownie włącz zasilanie) i wprowadź komendy:
sudo service udev reload
sudo service udev restart
sudo udevadm trigger
ls /dev/
- Teraz możesz to zobaczyć „tty_ArduSimple" został stworzony.
- Aby użyć programu U-center w Ubuntu, zainstaluj Wine. Jest to zbiór bibliotek Linuksa, które umożliwiają uruchamianie wielu aplikacji Windows na dystrybucjach Linuksa (między innymi na Ubuntu).
Nie czyni to oprogramowania U-center w pełni kompatybilnym, ale można go użyć, jeśli chcesz sprawdzić stan lub konfigurację swojego urządzenia. Odbiornik RTK.
Aby zainstalować Wine (instalacja może trwać 2-3 minuty), użyj polecenia:
sudo apt install wine64 //if Ubuntu is installed natively
sudo apt install wine32 //if you run Ubuntu on a virtual machine
- Po zainstalowaniu Wine można zainstalować U-Center w Ubuntu, tak jakby był to Windows. Otwórz przeglądarkę Firefox Web Browser i pobierz program U-Center z oficjalnej strony internetowej: https://www.u-blox.com/en/product/u-center.
- Pewnego razu u-center zostanie pobrany, przejdź do folderu Pobrane i wyodrębnij plik u-center na pulpicie.
- Aby rozpocząć instalację u-center oprogramowanie, wpisz polecenie:
cd ~/Desktop/
wine ./u-center_v22.07.exe
- Zainstalować u-center jak w systemie Windows, wykonując kroki instalacji.
- Aby utworzyć COM1 Port, otwarty terminal i wprowadź następujące polecenie, aby utworzyć łącze Odbiornik RTK w folderze „~/.wine/dosurządzenie”.
ln -sf /dev/tty_Ardusimple ~/.wine/dosdevices/com1
- Zamknij u-center jeśli masz je otwarte. otwarty u-center.
- Połącz się ze swoim Odbiornik RTK in u-center naciskając Ctrl + 1 .
- Zobaczysz zielone światło w lewym rogu i dane z odbiornika RTK podobne do poniższych.
Po drugie, uruchom odbiornik RTK w ROS.
- Utwórz folder z obszarami roboczymi. Jeśli go nie masz, możesz to zrobić za pomocą poleceń:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
- Pobierz i zainstaluj pakiety ROS wewnątrz src. W tym samouczku pobierzemy pakiety z https://github.com/KumarRobotics/ublox który opublikuje informacje ROS. Działa to z tą wersją 1.1.4. Możesz korzystać z najnowszych wersji, ale niektóre kroki mogą wymagać modyfikacji. Wpisz polecenia:
cd ~/catkin_ws/src
git clone https://github.com/KumarRobotics/ublox
cd ~/catkin_ws
rosdep install --from-paths src --ignore-src -r -y
- Zobaczysz w Terminalu:
#Wszystkie wymagane rosdeps zostały pomyślnie zainstalowane
- Skompiluj program, aby móc go wykonać.
catkin_make
source ~/catkin_ws/devel/setup.bash
- Podczas wykonywania setup.bash wybieramy obszar roboczy pracy i aktualizujemy dostępne programy w ROS.
- Aby mieć kontrolę nad wiadomościami, które mają być publikowane w ArduSimple możesz zmodyfikować yaml (plik konfiguracyjny), którego węzeł będzie używał do komunikacji z ros.
Ten węzeł ma kilka testowych plików konfiguracyjnych, możesz zmodyfikować wartości tego pliku, modyfikując pliki znajdujące się w następującym katalogu:
cd ~/catkin_ws/src/ublox/ublox_gps/config
- Ponieważ u-blox model wewnątrz Ardusimple jest zed_f9p, modyfikujemy plik o tej samej nazwie. Aby otworzyć edytor, możemy użyć następującego polecenia:
nano zed_f9p.yaml
Zmień adres urządzenia na „/dev/tty_Ardusimple" aby upewnić się, że zawsze trafia do Odbiornik RTK:
device: /dev/tty_Ardusimple
frame_id: gps
uart1:
baudrate: 9600 //Change the baudrate value to the value set in U-Center.
config_on_startup: false
Zamknij u-center ponieważ ROS i u-center nie biegajcie razem.
- Aby uruchomić węzeł ROS, użyj programu uruchamiającego znajdującego się w następującym folderze:
cd ~/catkin_ws/src/ublox/ublox_gps/launch
- Aby sprawdzić, czy jest na liście, wpisz polecenie:
ls
- Pliki uruchamiania ROS uprościć proces uruchamiania wielu węzłów i konfigurowania ich parametrów. Plik uruchamiania to plik XML opisujący węzły do wykonania, ich parametry i połączenia między nimi. Korzystając z plików uruchamiania, możesz uruchamiać wiele węzłów za pomocą jednego polecenia, co ułatwia zarządzanie złożonymi systemami robotów. Te pliki mają rozszerzenie „.launch”, istnieją inne pliki, które są plikami konfiguracyjnymi, które mają rozszerzenie „.yaml”.
Aby uruchomić plik:
roslaunch
- Plik, który uruchomi nasz program to tzw „ublox_device.launch”.
Plik ten można zmienić w razie potrzeby.
Aby uruchomić program, użyj następującego polecenia:
roslaunch ublox_gps ublox_device.launch param_file_name:=zed_f9p
- Otwórz nowy Terminal i wprowadź polecenie:
source ~/catkin_ws/devel/setup.bash
- Węzły ROS podczas biegania mają unikalne nazwy. Aby zobaczyć listę nazw węzłów ROS, użyj polecenia w terminalu:
rosnode list
- Aby uzyskać informacje o węzłach ROS, takie jak tematy, które są przez nie subskrybowane lub publikowane, można użyć następującego polecenia:
rosnode info
Na przykład, aby uzyskać informacje o „informacje / ublox”, użyj polecenia:
rosnode info /ublox
- Aby wyświetlić listę aktywnych Tematy ROS które są aktualnie dostępne i są publikowane lub subskrybowane w systemie ROS, użyj polecenia.
rostopic list
Dane wyjściowe listy tematów ROS zazwyczaj zawierają nazwy tematów wraz z typami wiadomości. To polecenie jest przydatne do sprawdzania dostępnych tematów i sprawdzania, czy żądane tematy są publikowane lub subskrybowane w środowisku ROS.
- Aby wyświetlić informacje o tym, kto publikuje i subskrybuje tę wiadomość, wpisz wiadomość, użyj polecenia w formacie:
rostopic info
- Na przykład, aby otrzymywać informacje o typie wiadomości, wydawcy i subskrybenci tematu „/rosout”, wykonaj polecenie:
rostopic info /rosout
- Aby otrzymywać informacje o typie wiadomości, wydawcach i subskrybentach tematu /ublox/fix, npwykonaj polecenie:
rostopic info /ublox/fix
- Aby zobaczyć publikowane informacje, użyj polecenia w formacie:
rostopic echo
Aby sprawdzić, czy to działa, możemy subskrybować różne tematy tworzone przez węzeł.
Najważniejsze z nich to „/gps/poprawka” (są danymi w WGS64) i "/diagnostyka" (przekazuje nam informacje o statusie GPS). Inne dane mogą być publikowane zgodnie z konfiguracją, która została ustawiona z Odbiornik RTK.
Na przykład, aby obserwować i monitorować publikowane dane pozycji GPS „/ublox/poprawka” Temat (są to dane w WGS64), takie jak szerokość, długość geograficzna, wysokość i inne istotne informacje, użyj następującego polecenia, aby wyświetlić dane:
rostopic echo /ublox/fix
Aby zatrzymać przeglądanie tematu, naciśnij Ctrl + C.
- Aby wyświetlić dane, które są publikowane na "/diagnostyka" który podaje informacje o statusie GPS, takie jak dokładność między innymi, użyj polecenia:
rostopic echo /diagnostics
Aby zatrzymać przeglądanie danych, naciśnij Ctrl + C.
- Jeśli chcesz zapisać w pliku informacje opublikowane na Temat, użyj polecenia:
- do rejestrowania publikowanych danych pozycji GPS „/ublox/poprawka” Temat, taki jak szerokość, długość, wysokość i inne:
rostopic echo /ublox/fix > gps_fix_data.txt
- aby rejestrować dane o statusie GPS "/diagnostyka":
rostopic echo /diagnostics > gps_diagnostics.txt
Te polecenia tworzą pliki gps_fix_data.txt i gps_diagnostics.txt, gdzie temat zostanie zapisany. Aby zatrzymać nagrywanie, naciśnij Ctrl + C.
- Aby zobaczyć informacje zapisane w plikach, wykonaj:
nano gps_fix_data.txt
nano gps_diagnostics.txt
- Wiadomości ROS to struktury danych używane do komunikacji między węzłami ROS. Określają wymieniane informacje na dany temat. Wiadomości są definiowane przy użyciu formatu pliku .msg.
Aby zobaczyć listę typów komunikatów ROS, użyj polecenia:
rosmsg list
Aby wyświetlić strukturę wiadomości, użyj polecenia w formacie:
rosmsg show
- Na przykład, „sensor_msgs/NavSatFix” to typ wiadomości w ROS, który jest używany do reprezentowania danych GPS (Global Positioning System), takich jak szerokość, długość geograficzna, wysokość i inne parametry związane z pozycją GPS.
Aby zobaczyć strukturę „sensor_msgs/NavSatFix” wiadomość, użyj polecenia:
rosmsg show sensor_msgs/NavSatFix
- Aby wyświetlić listę aktywnych Usługi ROS które umożliwiają Nodom wysyłanie żądań i otrzymywanie odpowiedzi, użyj polecenia:
rosservice list
- Aby zadzwonić do serwisu, użyj polecenia w formacie:
rosservice call
Ta usługa odpowie z wynikiem.
Na przykład, aby uzyskać bieżącą konfigurację rejestratora u-blox Węzeł, który może być pomocny w debugowaniu i monitorowaniu, można uruchomić za pomocą polecenia:
rosservice info /ublox/get_loggers
Jeśli chcesz wykonać ten samouczek, mamy wszystkie produkty w magazynie i gotowe do wysyłki:
- simpleRTK2B odbiornik szeregowy (w tym samouczku używamy simpleRTK2B Budget)
- Antena wielopasmowa RTK (w tym samouczku używamy u-blox GNSS Multiband antenna ANN-MB-00 (IP67))
- kabel USB