ROS 1-temoj tra VPN: sekvu la anoncitan finpunkton
Registrado ĉe la ROS 1-mastro ne portas temajn datumojn. Legu la anoncitan URI-on de la nodo, faru tiun adreson enkursigebla, poste permesu la pordon de la eldonanto.
Via laborejo atingas la ROS 1-mastron tra la tunelo kaj ankoraŭ montras malplenan liston de temoj. Tiu ŝablono oftas ĉar mastra registrado kaj tema transporto estas du malsamaj konversacioj, kaj nur la unua iras tra la mastro. La kontrol-liston sube trairas la duan konversacion: la finpunkto, kiun eldonanto anoncas, la adreso, kiun abonanto devas povi atingi, kaj la permeso, kiu lasas la paron paroli. Ĉio ĉi rilatas nur al la malnova ROS 1, kies subtena fenestro por Noetic finiĝis en majo 2025.
Paŝo 1: pruvu, ke la mastra konekto ne estas la tema konekto
Komencu apartigante tion, kio funkcias, disde tio, kio ne funkcias. Sukcesa rostopic list pruvas, ke via ŝelo povas atingi la XMLRPC-pordon de la mastro kaj ke la mastro scias pri temoj; ĝi diras nenion pri tio, ĉu abonanto povas atingi la eldonanton. La tri komandoj sube videbligas la distingon, kaj ĉiuj estas nurlegaj.
echo "$ROS_MASTER_URI"
rostopic list
rostopic info /chatter
La eligo de rostopic info nomas la nodan URI-on de la eldonanto, kiu estas XMLRPC-adreso sur la gastiganto de la eldonanto. Tiu adreso estas tiu, kiun via abonanto vokos poste, do ĝi devas esti atingebla de kie ajn la abonanto funkcias. Se ĝi montras al interfaco, kiu ekzistas nur en la propra LAN de la roboto, la mastra serĉo sukcesas kaj la datumoj neniam alvenas.
Paŝo 2: legu la anoncitan finpunkton el la nodo mem
ROS 1 elektas sian anoncitan gastigantan identecon el ROS_IP aŭ ROS_HOSTNAME kiam unu el ili estas agordita, kaj alie reiras al la propra nomresolvo de la gastiganto. Ekzamenu la medion de la procezo, kiu efektive estis lanĉita, ĉar systemd-unuo, ujo aŭ dua terminalo povas porti alian valoron ol la ŝelo, en kiu via testo funkciis.
echo "$ROS_IP" "$ROS_HOSTNAME"
rosnode info /talker
getent hosts robot-host
Anonco de gastigantnomo funkcias nur se ĉiu samtavolano solvas tiun nomon al la celata atingebla adreso. Se tiu nomo solviĝas nur ene de la propra reto de la roboto, laborejo aliflanke de la tunelo tute ne povas uzi ĝin, kaj VPN, kiu puŝas neniun DNS-sufikson, plimalbonigas la malkongruon. Agordi ROS_IP al la tunela adreso estas la pli malgranda ŝanĝo, kiam la topologio estas enkursigita. Kion ajn vi elektas, registru ĝin por ambaŭ finoj, ĉar eldonanto kaj abonanto, kiuj malkonsentas pri identeco, intertraktos kaj poste malsukcesos konekti.
Haltu ĉi tie, se la anoncita URI uzas adreson, al kiu neniu samtavolano povas enkursigi. Neniu kvanto da fajroŝirmila laboro riparos nomon, kiu solviĝas al la malĝusta interfaco.
Paŝo 3: faru la anoncitan adreson solviva kaj enkursigita
Kun la URI en la mano, testu atingeblon el la gastiganto de la abonanto anstataŭ el la roboto. La TCPROS-pordo elektiĝas dum intertraktado, do la utila frua testo estas la XMLRPC-pordo kaj la utila posta testo estas la establita ingo. Itinero, kiu ekzistas nur en unu direkto, estas ofta fiasko en enkursigitaj VPN-oj, kaj la revena vojo gravas same kiel la antaŭa.
ip route get 10.70.0.2
nc -vz 10.70.0.2 33911
ss -tnp dst 10.70.0.2
Enkursigita TUN-interfaco portas ĉi tiujn IP-konversaciojn sen etendi la Ethernet-segmenton de la roboto, kion kutime volas fora operatoro. Se io en la stako dependas anstataŭe de elsendo aŭ multicast, tiu postulo devas esti taksita aparte; konverti la tunelon al TAP por kontentigi unu ilon larĝigas la reton por ĉiu partoprenanto.
Haltu ĉi tie, se la itinero aŭ la revena vojo mankas. Eldonanto, kiu respondas sur sia propra gastiganto sed ne estas atingebla el la laborejo, havas enkursigan problemon, ne ROS-problemon.
Paŝo 4: permesu la samtavolan konversacion kaj observu unu temon
Malfermu nur la pordojn, kiujn la intertraktita konversacio bezonas, kaj limigu ĉiun regulon al la deklaritaj partoprenantoj. La aŭskultanto de la mastro ne estas relajso por temaj ŝarĝoj, do permesi nur ĝin lasas la finpunkton de la eldonanto fermita. Tenu la ROS-aŭskultantojn sur la limo de la privata VPN anstataŭ elmeti ilin al la publika interreto.
rostopic hz /chatter
rostopic echo -n1 /chatter
rosnode ping /talker
Observu unu senriskan temon de la vera eldonanto al la vera abonanto kaj konfirmu kaj la anoncitan finpunkton kaj la respondan vojon. Unu mesaĝo pruvas, ke la vojo funkcias; stabila indico pruvas, ke ĝi restas malfermita. Tenu la agordadon de funkciigiloj kaj la sekurecajn kontrolojn ekster ĉi tiu nurreta testo, ĉar funkcianta temo ne atestas funkciantan roboton. Registru la ROS-version kaj la finpunktan paron, kiun vi observis, por ke la sekva persono povu distingi topologian ŝanĝon disde regreso.
La kontrol-listo finiĝas, kiam la anoncita URI atingeblas el la abonanto, la intertraktita pordo malfermiĝas nur por tiu samtavolano, unu deklarita temo fluas, kaj la mediaj valoroj estas skribitaj por ambaŭ gastigantoj. Malnova ROS 1 ne ricevos riparojn en ĉi tiu areo, do la registro estas la parto, kiu daŭre funkcias post kiam la homoj ŝanĝiĝas.