Nastavenie komunikácie medzi viacerými zariadeniami
Po inštalácii Ubuntu VM na váš hostiteľský PC je ďalším krokom konfigurácia komunikácie medzi viacerými zariadeniami - medzi vašim hostiteľským VM a Jetson Nano. To umožňuje vášmu vývojovému počítaču diaľkovo komunikovať s JetRacerom.
Prehľad
ROS (Robot Operating System) je navrhnutý tak, aby fungoval naprieč viacerými zariadeniami, čo vám umožňuje:
- Spúšťať výpočtovo náročné operácie na vašom výkonnejšom hostiteľskom PC
- Diaľkovo ovládať JetRacer
- Vizualizovať údaje zo senzorov a ladiace informácie na vašom vývojovom počítači
- Bezproblémovo nasadzovať kód medzi vývojovým a robotickým prostredím
V tomto návode sa naučíte:
- Konfigurovať sieťové nastavenia na oboch zariadeniach
- Nastaviť premenné prostredia ROS
- Otestovať komunikáciu medzi viacerými zariadeniami
- Riešiť bežné problémy
Predpoklady
- Jetson Nano s nainštalovaným ROS a pripojený k vašej sieti
- Ubuntu VM bežiace na vašom hostiteľskom PC
- Obe zariadenia pripojené k rovnakej sieti
Krok 1: Zistenie IP adries
Najprv potrebujete poznať IP adresy oboch zariadení:
Na Jetson Nano:
Pozrite sa na OLED displej základnej dosky, kde uvidíte IP adresu (napr. 192.168.1.100).
Na Ubuntu VM:
ifconfig
Hľadajte rozhranie ens33 alebo podobné a poznamenajte si IP adresu (napr. 192.168.1.200).
Krok 2: Konfigurácia súboru hosts na oboch zariadeniach
Na oboch zariadeniach budete musieť upraviť súbor hosts, aby ste umožnili rozlíšenie hostiteľských mien:
Na Jetson Nano:
sudo nano /etc/hosts
Pridajte nasledujúce riadky:
127.0.0.1 localhost
127.0.1.1 jetson
192.168.1.100 jetson # IP adresa vášho Jetson Nano
192.168.1.200 ubuntu # IP adresa vašej Ubuntu VM
Uložte a ukončite (Ctrl+X, potom Y, potom Enter).
Na Ubuntu VM:
sudo nano /etc/hosts
Pridajte nasledujúce riadky:
127.0.0.1 localhost
127.0.1.1 ubuntu
192.168.1.100 jetson # IP adresa vášho Jetson Nano
192.168.1.200 ubuntu # IP adresa vašej Ubuntu VM
Uložte a ukončite.
Krok 3: Konfigurácia premenných prostredia ROS
ROS potrebuje vedieť, ktoré zariadenie je master a ako komunikovať medzi zariadeniami:
Na Jetson Nano (ROS Master):
Upravte súbor .bashrc:
nano ~/.bashrc
Pridajte tieto riadky na koniec:
export ROS_MASTER_URI=http://jetson:11311
export ROS_HOSTNAME=jetson
Aplikujte zmeny:
source ~/.bashrc
Na Ubuntu VM:
Upravte súbor .bashrc:
nano ~/.bashrc
Pridajte tieto riadky na koniec:
export ROS_MASTER_URI=http://jetson:11311
export ROS_HOSTNAME=ubuntu
Aplikujte zmeny:
source ~/.bashrc
Krok 4: Test komunikácie
Teraz otestujeme, či komunikácia medzi viacerými zariadeniami funguje:
Na Jetson Nano:
Spustite ROS master:
roscore
Na Ubuntu VM:
Skontrolujte, či vidíte ROS master:
rostopic list
Ak vidíte zoznam tém (aj keby to bolo len /rosout a /rosout_agg), komunikácia funguje!
Krok 5: Spustenie testovacieho príkladu
Spustime jednoduchý príklad publisher/subscriber na overenie komunikácie:
Na Jetson Nano:
Spustite príklad prijímacieho uzla:
rosrun rospy_tutorials listener
Na Ubuntu VM:
Spustite príklad publikujúceho uzla:
rosrun rospy_tutorials talker
Mali by ste vidieť správy "hello world", ktoré sa opakovane zobrazujú na strane Jetsonu.
Riešenie problémov
Nie je možné pripojiť sa k ROS Master
-
Overte, či sa zariadenia navzájom pingujú:
ping jetson # Z Ubuntu VM
ping ubuntu # Z Jetson Nano -
Overte premenné prostredia ROS:
echo $ROS_MASTER_URI
echo $ROS_HOSTNAME
Časové limity pripojenia
- Uistite sa, že obe zariadenia sú v rovnakej sieti
- Skontrolujte, či sa nezmenili IP adresy (bežné pri DHCP)
- Aktualizujte súbor hosts, ak sa IP adresy zmenili
Referencie
Pre podrobnejšie inštrukcie si pozrite oficiálny návod Waveshare JetRacer ROS AI Kit Tutorial IV.