Vaša radna stanica dosegne ROS 1 master kroz tunel i još uvek prikazuje prazan spisak tema. Takav je obrazac čest jer su master registracija i prenos tema dva različita razgovora, a samo prvi prolazi kroz master. Kontrolna lista ispod prolazi kroz drugi razgovor: krajnju tačku koju izdavalac oglašava, adresu do koje pretplatnik mora stići i dozvolu koja paru omogućuje razgovor. Sve ovde odnosi se samo na stariji ROS 1, čiji je period podrške za Noetic završen u maju 2025.

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

Počnite odvajanjem onoga što radi od onoga što ne radi. Uspeš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 izdavaoca. 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 izdavaoca, a to je XMLRPC adresa na hostu izdavaoca. Ta adresa je ona koju će vaš pretplatnik sledeće pozvati, pa mora biti dostupna odakle god pretplatnik radi. Ako pokazuje na interfejs koji postoji samo na LAN-u samog robota, pretraga mastera uspeva, 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 sopstveno razrešavanje imena hosta. Pregledajte okruženje procesa koji je stvarno pokrenut, jer systemd jedinica, kontejner ili drugi terminal mogu nositi drugačiju vrednost 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 razrešava to ime na nameravanu dostupnu adresu. Ako se to ime razrešava samo unutar robotove sopstvene mreže, radna stanica sa 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 promena kada je topologija rutirana. Šta god odaberete, zapišite to za oba kraja, jer izdavalac i pretplatnik koji se ne slažu oko identiteta pregovaraće, a zatim se neće moći povezati.

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

Korak 3: učinite oglašenu adresu razrešivom i rutiranom

Sa URI-jem u ruci, testirajte dostupnost sa pretplatnikovog hosta, a ne sa 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 smeru čest je kvar na rutiranim VPN-ovima, a povratni put je jednako važan kao i put napred.

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

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

Zaustavite se ovde ako ruta ili povratni put nedostaje. Izdavalac koji odgovara na svom hostu, ali nije dostupan sa radne stanice, ima problem sa rutiranjem, a ne problem sa ROS-om.

Korak 4: dozvolite razgovor peerova i gledajte jednu temu

Otvorite samo portove koje pregovarani 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 izdavaoca zatvorenom. Držite ROS slušaoce na granici privatnog VPN-a umesto da ih izlažete javnom internetu.

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

Gledajte jednu bezazlenu temu od stvarnog izdavaoca 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 provere 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 primetili, da sledeća osoba može razlikovati promenu topologije od regresije.

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

Povezani članci