ROS 2 VPN-i kaudu: avastamine ei ole andmetee
See, et avastamine leiab partnerid, ei tõesta, et kasulik koormus kohale jõuab. Enne DDS-i vahetamist või marsruuteri lisamist kontrollige RMW-d, teatatud lõpp-punkte ja üht töökoormust.
Kaks ROS 2 sõlme VPN-i vastaskülgedel võivad üksteise teemasid loetleda ja ikkagi mitte ühtegi sõnumit kohale toimetada. Avastamine ja kasutajaandmed on eraldi vahetused eraldi teedega ning avastamisserver ei edasta kasulikku koormust. Ühe kontrollimine ja teise eeldamine ongi see, kuidas meeskonnad hakkavad vahevara välja vahetama, kui tunnel lihtsalt ei vedanud andmeid kunagi. Alljärgnev protseduur eraldab kaks tulemust enne, kui midagi välja vahetatakse.
Mida avastamisserver tegelikult kannab
Fast DDS-is jaotab Discovery Server teavet lõpp-punktide kohta: kes avaldab, kes tellib ja millist QoS-i igaüks ootab. Kui partnerid on teineteisest teadlikud, liiguvad kasutajaandmed otse nende vahel, mitte selle serveri kaudu. Serverini jõudmine tõestab, et tutvuste vahendaja vastab, ja mitte rohkem. Marsruuditud VPN vajab endiselt toimivat teed mõlemas suunas partnerite teatatud aadresside vahel.
See erinevus selgitab ka osalisi tõrkeid, kus olemasolevad partnerid vahetavad andmeid edasi, samal ajal kui uus avastamine lakkab töötamast. Käsitlege neid kahe eraldi uurimisena.
Lugege RMW-d, mida sõlmed tegelikult kasutavad
ROS 2 võib laadida erinevat vahevara ja teie kestas eksporditud muutuja ei jõua mujal käivitatud protsessideni. Küsige töötava süsteemi käest, mitte terminali ajaloo käest.
printenv RMW_IMPLEMENTATION
ros2 doctor --report | head -n 20Seadmata muutuja tähendab tavaliselt paigaldatud vaikeväärtust, mis võib samas katses masinate vahel erineda. Aruanne nimetab ka distributsiooni ja kasutatava vahevara, seega võrrelge neid tunneli mõlemal küljel enne, kui eeldate nende ühtimist. ROS-i käsureadaemon salvestab oleku vahemällu, seega taaskäivitage see pärast keskkonna muutmist, selle asemel et lasta vananenud daemonil vana konfiguratsiooni eest vastata. Kirjutage mõlema hosti distributsioon ja RMW testimärkmetesse, kuni sessioon on avatud.
Testige avastamist ja andmeid kahe tulemusena
Valige kahjutu teema ja mõõtke tutvustamist eraldi kohaletoimetamisest. Käsk info loetleb lõpp-punktid ja QoS-i, samas kui echo tõestab, kas üks sõnum tõesti lingi ületab.
ros2 topic info /chatter --verbose
ros2 topic echo /chatter --onceLõpp-punktide ilmumine info väljundisse on avastamise tulemus. Sõnumi jõudmine tellijani on transpordi tulemus ja ainult teine neist proovib teed, mida rakendus vajab. Kui avastamine töötab ja echo aegub, uurige teatatud aadresse ja tagasiteed, mitte avastamisteenust. Käivitage mõlemad käsud igast hostist, sest asümmeetriline VPN-marsruut paljastab end sageli ainult ühelt poolt.
Muutke korraga üht sõltuvust
Kui andmetee ebaõnnestub, vältige vahevara, avastamisrežiimi ja sõnumi suuruse muutmist samas sessioonis, sest hiljem ei saa ühtegi tulemust omistada. Zenoh RMW on legitiimne alternatiiv, kuid selle marsruuter muutub veel üheks sõltuvuseks, mis peab olema tunneli kaudu kättesaadav.
export RMW_IMPLEMENTATION=rmw_zenoh_cpp
ros2 run rmw_zenoh_cpp rmw_zenohdSelle RMW all kannab marsruuter avastamist vaikimisi Jazzy paigutuses ja multicast-avastamine on seal välja lülitatud, seega kuulub sõltuvus teie märkmetesse, mitte teisest vahevarast laenatud eeldusse. Hoidke töökoormus muutumatuna, kui muudate üht seadet, seejärel korrake echo-testi ja registreerige suund, sõnumite sagedus ja lingi tingimused. Korrake võrdlust kaks korda, et eraldada tegelik paranemine õnnelikust taasühendumisest. Kui muudatus parandab avastamist, kuid kohaletoimetamine jääb samaks, olete liigutanud tutvustamisteenust, mitte andmeteed.