ROS 2 preko VPN-a: otkrivanje nije put podataka
To što otkrivanje pronalazi partnere ne dokazuje da teret stiže. Provjerite RMW, objavljene krajnje tačke i jedan radni zadatak prije nego što zamijenite DDS ili dodate ruter.
Dva ROS 2 čvora na suprotnim krajevima VPN-a mogu jedan drugome izlistati teme i ipak ne isporučiti ni jednu poruku. Otkrivanje i korisnički podaci su odvojene razmjene s odvojenim putevima, a poslužitelj za otkrivanje ne prenosi teret. Provjeriti jedno i pretpostaviti drugo jest način na koji timovi zamjenjuju middleware kad tunel jednostavno nikada nije prenosio podatke. Procedura ispod razdvaja dva rezultata prije nego što se bilo šta zamijeni.
Šta poslužitelj za otkrivanje zapravo nosi
U Fast DDS-u Discovery Server distribuira informacije o krajnjim tačkama: ko objavljuje, ko se pretplaćuje i koji QoS svako očekuje. Kad partneri saznaju jedan za drugoga, korisnički podaci putuju direktno između njih, a ne kroz taj poslužitelj. Dolazak do poslužitelja dokazuje da posrednik upoznavanja odgovara, i ništa više. Rutirani VPN i dalje treba radni put u oba smjera između adresa koje partneri objavljuju.
Ta razlika objašnjava i djelimične kvarove, gdje postojeći partneri nastavljaju razmjenjivati podatke dok novo otkrivanje prestaje raditi. Tretirajte ih kao dvije odvojene istrage.
Pročitajte RMW koji čvorovi zaista koriste
ROS 2 može učitati različite middleware, a varijabla izvezena u vašoj ljusci ne stiže do procesa pokrenutih negdje drugdje. Pitajte pokrenuti sistem, a ne historiju terminala.
printenv RMW_IMPLEMENTATION
ros2 doctor --report | head -n 20Nepostavljena varijabla obično znači instalirani zadani izbor, koji se može razlikovati između mašina u istom eksperimentu. Izvještaj navodi i distribuciju i middleware koji se koriste, pa ih uporedite s obje strane tunela prije nego što pretpostavite da se podudaraju. ROS-ov demon komandne linije kešira stanje, pa ga ponovo pokrenite nakon promjene okruženja, umjesto da pustite zastarjeli demon da odgovara za staru konfiguraciju. Zapišite distribuciju i RMW oba hosta u bilješke testa dok je sesija otvorena.
Testirajte otkrivanje i podatke kao dva rezultata
Odaberite bezopasnu temu i mjerite upoznavanje odvojeno od isporuke. Naredba info navodi krajnje tačke i QoS, dok echo dokazuje da li jedna poruka zaista prelazi vezu.
ros2 topic info /chatter --verbose
ros2 topic echo /chatter --oncePojavljivanje krajnjih tačaka u izlazu info jest rezultat otkrivanja. Dolazak poruke do pretplatnika jest transportni rezultat, i samo drugi ispituje put koji aplikacija treba. Kada otkrivanje radi, a echo istekne, pregledajte objavljene adrese i povratnu rutu umjesto usluge otkrivanja. Pokrenite obje naredbe sa svakog hosta, jer asimetrična VPN ruta često se otkrije samo s jedne strane.
Mijenjajte jednu zavisnost po put
Kada put podataka zakaže, izbjegavajte da u istoj sesiji mijenjate middleware, način otkrivanja i veličinu poruke, jer se poslije nijedan rezultat ne može pripisati. Zenoh RMW je legitimna alternativa, ali njegov ruter postaje još jedna zavisnost koja mora biti dostupna kroz tunel.
export RMW_IMPLEMENTATION=rmw_zenoh_cpp
ros2 run rmw_zenoh_cpp rmw_zenohdPod tim RMW-om ruter nosi otkrivanje u zadanom Jazzy rasporedu, a multicast otkrivanje je tamo onemogućeno, pa zavisnost spada u vaše bilješke, a ne u pretpostavku posuđenu od drugog middlewarea. Držite radni zadatak fiksnim dok mijenjate jednu postavku, zatim ponovite echo test i zabilježite smjer, brzinu poruka i uslove veze. Ponovite poređenje dvaput da biste stvarno poboljšanje odvojili od srećnog ponovnog povezivanja. Ako promjena poboljša otkrivanje, a isporuka ostane ista, premjestili ste uslugu upoznavanja, ne put podataka.