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 odvojene su razmjene s odvojenim putevima, a poslužitelj za otkrivanje ne prenosi teret. Provjeriti jedno i pretpostaviti drugo jest način na koji timovi završavaju mijenjajući middleware kad tunel jednostavno nikada nije prenosio podatke. Postupak u nastavku razdvaja dva rezultata prije nego što se bilo što zamijeni.

Što poslužitelj za otkrivanje zapravo nosi

U Fast DDS-u Discovery Server distribuira informacije o krajnjim točkama: tko objavljuje, tko se pretplaćuje i koji QoS svatko očekuje. Kad partneri saznaju jedan za drugoga, korisnički podaci putuju izravno između njih, a ne kroz taj poslužitelj. Dolazak do poslužitelja dokazuje da posrednik upoznavanja odgovara, i ništa više. Usmjereni VPN i dalje treba radni put u oba smjera između adresa koje partneri objavljuju.

Ta razlika objašnjava i djelomič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 stvarno 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 sustav, a ne povijest terminala.

printenv RMW_IMPLEMENTATION
ros2 doctor --report | head -n 20

Nepostavljena varijabla obično znači instalirani zadani izbor, koji se može razlikovati između strojeva u istom eksperimentu. Izvještaj navodi i distribuciju i middleware koji se koriste, pa ih usporedite s obje strane tunela prije nego što pretpostavite da se podudaraju. ROS-ov demon naredbenog retka kešira stanje, pa ga ponovno 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 točke i QoS, dok echo dokazuje prelazi li jedna poruka zaista vezu.

ros2 topic info /chatter --verbose
ros2 topic echo /chatter --once

Pojavljivanje krajnjih točaka u izlazu info jest rezultat otkrivanja. Dolazak poruke do pretplatnika jest transportni rezultat, i samo drugi ispituje put koji aplikacija treba. Kad 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 ovisnost po put

Kad 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 legitimna je alternativa, ali njegov usmjerivač postaje još jedna ovisnost koja mora biti dostupna kroz tunel.

export RMW_IMPLEMENTATION=rmw_zenoh_cpp
ros2 run rmw_zenoh_cpp rmw_zenohd

Pod tim RMW-om usmjerivač nosi otkrivanje u zadanom Jazzy rasporedu, a multicast otkrivanje tamo je onemogućeno, pa ovisnost 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 uvjete veze. Ponovite usporedbu dvaput da biste stvarno poboljšanje odvojili od sretnog ponovnog povezivanja. Ako promjena poboljša otkrivanje, a isporuka ostane ista, premjestili ste uslugu upoznavanja, ne put podataka.

Povezani članci