Vaša radna stanica doseže ROS 1 master kroz tunel i još uvijek prikazuje praznu listu tema. Taj obrazac je čest jer su master registracija i prijenos tema dva različita razgovora, a samo prvi ide kroz master. Kontrolna lista ispod prolazi kroz drugi razgovor: krajnju tačku koju objavljivač oglašava, adresu do koje pretplatnik mora doći i dozvolu koja paru omogućava razgovor. Sve ovdje odnosi se samo na stariji ROS 1, čiji je period podrške za Noetic završio u maju 2025.

Korak 1: dokažite da veza s masterom nije veza s temom

Počnite odvajanjem onoga što radi od onoga što ne radi. Uspješan rostopic list dokazuje da vaš shell doseže XMLRPC port mastera i da master zna za teme; ne govori ništa o tome može li pretplatnik doći do objavljivača. Tri naredbe ispod čine tu razliku vidljivom, i sve su samo za čitanje.

echo "$ROS_MASTER_URI"
rostopic list
rostopic info /chatter

Izlaz naredbe rostopic info navodi URI čvora objavljivača, a to je XMLRPC adresa na hostu objavljivača. Ta adresa je ona koju će vaš pretplatnik sljedeće pozvati, pa mora biti dostupna odakle god pretplatnik radi. Ako pokazuje na interfejs koji postoji samo na LAN-u samog robota, pretraga mastera uspijeva, a podaci nikada ne stižu.

Korak 2: pročitajte oglašenu krajnju tačku iz samog čvora

ROS 1 bira svoj oglašeni identitet hosta iz ROS_IP ili ROS_HOSTNAME kada je jedan od njih postavljen, a inače se vraća na vlastito razrješavanje imena hosta. Pregledajte okruženje procesa koji je stvarno pokrenut, jer systemd jedinica, kontejner ili drugi terminal mogu nositi drugačiju vrijednost od shella u kojem je vaš test radio.

echo "$ROS_IP" "$ROS_HOSTNAME"
rosnode info /talker
getent hosts robot-host

Oglašavanje imena hosta radi samo ako svaki peer razrješava to ime na namjeravanu dostupnu adresu. Ako se to ime razrješava samo unutar robotove vlastite mreže, radna stanica s druge strane tunela nema načina da ga koristi, a VPN koji ne šalje DNS sufiks čini nesklad još gorim. Postavljanje ROS_IP na adresu tunela manja je promjena kada je topologija usmjerena. Šta god odaberete, zapišite to za oba kraja, jer objavljivač i pretplatnik koji se ne slažu oko identiteta pregovaraće, a zatim se neće moći povezati.

Zaustavite se ovdje ako oglašeni URI koristi adresu do koje nijedan peer ne može usmjeriti. Nikakav rad na firewallu neće popraviti ime koje se razrješava na pogrešan interfejs.

Korak 3: učinite oglašenu adresu razrješivom i usmjerenom

S URI-jem u ruci, testirajte dostupnost s pretplatnikovog hosta, a ne s robota. TCPROS port se bira tokom pregovora, pa je koristan rani test XMLRPC port, a koristan kasniji test uspostavljeni socket. Ruta koja postoji samo u jednom smjeru čest je kvar na usmjerenim VPN-ovima, a povratni put je jednako važan kao i put naprijed.

ip route get 10.70.0.2
nc -vz 10.70.0.2 33911
ss -tnp dst 10.70.0.2

Usmjereni TUN interfejs prenosi ove IP razgovore bez proširenja Ethernet segmenta robota, što udaljeni operater obično i želi. Ako nešto u steku umjesto toga zavisi od broadcasta ili multicasta, taj zahtjev treba posebno procijeniti; pretvaranje tunela u TAP da bi se zadovoljio jedan alat proširuje mrežu za svakog učesnika.

Zaustavite se ovdje ako ruta ili povratni put nedostaje. Objavljivač koji odgovara na svom hostu, ali nije dostupan s radne stanice, ima problem s usmjeravanjem, a ne problem s ROS-om.

Korak 4: dozvolite razgovor peerova i gledajte jednu temu

Otvorite samo portove koje pregovoreni razgovor treba i ograničite svako pravilo na oglašene učesnike. Masterov slušalac nije relej za sadržaj tema, pa dozvola samo za njega ostavlja krajnju tačku objavljivača zatvorenom. Držite ROS slušaoce na granici privatnog VPN-a umjesto da ih izlažete javnom internetu.

rostopic hz /chatter
rostopic echo -n1 /chatter
rosnode ping /talker

Gledajte jednu bezazlenu temu od stvarnog objavljivača do stvarnog pretplatnika i potvrdite i oglašenu krajnju tačku i povratni put. Jedna poruka dokazuje da put radi; stabilna stopa dokazuje da ostaje otvoren. Držite upravljanje aktuatorima i sigurnosne provjere izvan ovog testa koji se tiče samo mreže, jer radna tema ne potvrđuje radnog robota. Zapišite verziju ROS-a i par krajnjih tačaka koji ste primijetili, da sljedeća osoba može razlikovati promjenu topologije od regresije.

Kontrolna lista je završena kada je oglašeni URI dostupan s pretplatnika, pregovoreni port otvoren samo za taj peer, jedna oglašena tema teče, a vrijednosti okruženja zapisane za oba hosta. Stariji ROS 1 neće dobijati ispravke u ovoj oblasti, pa je zapis onaj dio koji nastavlja raditi nakon što se ljudi promijene.

Povezani članci