Vaša radna stanica doseže ROS 1 master kroz tunel i još uvijek prikazuje prazan popis tema. Taj je uzorak čest jer su master registracija i prijenos tema dva različita razgovora, a samo prvi prolazi kroz master. Kontrolni popis u nastavku prolazi kroz drugi razgovor: završnu točku koju izdavač oglašava, adresu do koje pretplatnik mora doći i dopuštenje koje paru omogućuje razgovor. Sve se ovdje odnosi samo na stariji ROS 1, čije je razdoblje podrške za Noetic završilo u svibnju 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 izdavača. Tri naredbe u nastavku č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 izdavača, a to je XMLRPC adresa na hostu izdavača. Ta je adresa ona koju će vaš pretplatnik sljedeće pozvati, pa mora biti dostupna odakle god pretplatnik radi. Ako pokazuje na sučelje koje postoji samo na LAN-u samog robota, pretraga mastera uspijeva, a podaci nikada ne stižu.

Korak 2: pročitajte oglašenu završnu toč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. Što god odaberete, zapišite to za oba kraja, jer izdavač i pretplatnik koji se ne slažu oko identiteta pregovarat ć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 vatrozidu neće popraviti ime koje se razrješava na pogrešno sučelje.

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

S URI-jem u ruci, testirajte dostupnost s pretplatnikova hosta, a ne s robota. TCPROS port se bira tijekom 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

Usmjereno TUN sučelje prenosi ove IP razgovore bez proširenja Ethernet segmenta robota, što udaljeni operater obično i želi. Ako nešto u stogu umjesto toga ovisi o broadcastu ili multicastu, taj zahtjev treba zasebno procijeniti; pretvaranje tunela u TAP da bi se zadovoljio jedan alat proširuje mrežu za svakog sudionika.

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

Korak 4: dopustite razgovor peerova i gledajte jednu temu

Otvorite samo portove koje pregovorani razgovor treba i ograničite svako pravilo na oglašene sudionike. Masterov slušač nije relej za sadržaj tema, pa dopuštenje samo za njega ostavlja završnu točku izdavača zatvorenom. Držite ROS slušače na granici privatnog VPN-a umjesto da ih izlažete javnom internetu.

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

Gledajte jednu bezopasnu temu od stvarnog izdavača do stvarnog pretplatnika i potvrdite i oglašenu završnu toč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 završnih točaka koji ste primijetili, da sljedeća osoba može razlikovati promjenu topologije od regresije.

Kontrolni je popis dovršen kada je oglašeni URI dostupan s pretplatnika, pregovorani 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 dobivati ispravke u ovom području, pa je zapis onaj dio koji nastavlja raditi nakon što se ljudi promijene.

Povezani članci