Divi ROS 2 mezgli VPN pretējos galos var uzskaitīt viens otra tēmas un tomēr nenogādāt nevienu ziņojumu. Atklāšana un lietotāja dati ir atsevišķas apmaiņas ar atsevišķiem ceļiem, un atklāšanas serveris nepārsūta lietderīgo slodzi. Pārbaudīt vienu un pieņemt otru ir tas, kā komandas nonāk pie starpprogrammatūras maiņas, kad tunelis vienkārši nekad nav nesis datus. Tālāk aprakstītā procedūra atdala abus rezultātus pirms kaut kā maiņas.

Ko atklāšanas serveris patiešām pārvadā

Fast DDS Discovery Server izplata informāciju par galapunktiem: kas publicē, kas abonē un kādu QoS katrs sagaida. Kad vienaudži zina viens otru, lietotāja dati ceļo tieši starp tiem, nevis caur šo serveri. Servera sasniegšana pierāda, ka iepazīšanās starpnieks atbild, un neko vairāk. Maršrutētam VPN joprojām ir vajadzīgs darba ceļš abos virzienos starp adresēm, ko izziņo vienaudži.

Šī atšķirība izskaidro arī daļējas kļūmes, kad esošie vienaudži turpina apmainīties ar datiem, bet jaunā atklāšana pārstāj darboties. Uztveriet tās kā divas atsevišķas izmeklēšanas.

Lasiet RMW, ko mezgli patiešām izmanto

ROS 2 var ielādēt dažādu starpprogrammatūru, un jūsu čaulā eksportētais mainīgais nesasniedz citur palaistus procesus. Jautājiet darbojošajai sistēmai, nevis termināļa vēsturei.

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

Neiestatīts mainīgais parasti nozīmē instalēto noklusējumu, kas tajā pašā eksperimentā var atšķirties starp mašīnām. Pārskats nosauc arī izmantoto distribūciju un starpprogrammatūru, tāpēc salīdziniet tos abās tuneļa pusēs, pirms pieņemat, ka tie sakrīt. ROS komandrindas dēmons kešatmiņā saglabā stāvokli, tāpēc pēc vides maiņas restartējiet to, nevis ļaujiet novecojušam dēmonam atbildēt par veco konfigurāciju. Ierakstiet abu resursdatoru distribūciju un RMW testa piezīmēs, kamēr sesija ir atvērta.

Pārbaudiet atklāšanu un datus kā divus rezultātus

Izvēlieties nekaitīgu tēmu un mēriet iepazīšanos atsevišķi no piegādes. Komanda info uzskaita galapunktus un QoS, bet echo pierāda, vai viens ziņojums tiešām šķērso saiti.

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

Galapunktu parādīšanās info izvadē ir atklāšanas rezultāts. Ziņojuma nonākšana pie abonenta ir transportēšanas rezultāts, un tikai otrais pārbauda ceļu, kas vajadzīgs lietojumprogrammai. Kad atklāšana darbojas un echo beidzas ar taimautu, pārbaudiet izziņotās adreses un atgriešanās maršrutu, nevis atklāšanas pakalpojumu. Palaidiet abas komandas no katra resursdatora, jo asimetrisks VPN maršruts bieži atklājas tikai no vienas puses.

Mainiet vienu atkarību vienlaikus

Kad datu ceļš neizdodas, izvairieties tajā pašā sesijā mainīt starpprogrammatūru, atklāšanas režīmu un ziņojuma lielumu, jo pēc tam nevienu rezultātu nevarēs attiecināt. Zenoh RMW ir likumīga alternatīva, bet tā maršrutētājs kļūst par vēl vienu atkarību, kas jāsasniedz caur tuneli.

export RMW_IMPLEMENTATION=rmw_zenoh_cpp
ros2 run rmw_zenoh_cpp rmw_zenohd

Šajā RMW maršrutētājs nes atklāšanu Jazzy noklusējuma izkārtojumā, un tur multicast atklāšana ir izslēgta, tāpēc atkarība pieder jūsu piezīmēm, nevis pieņēmumam, kas aizgūts no citas starpprogrammatūras. Turiet darba slodzi fiksētu, kamēr maināt vienu iestatījumu, pēc tam atkārtojiet echo testu un pierakstiet virzienu, ziņojumu ātrumu un saites apstākļus. Atkārtojiet salīdzinājumu divreiz, lai atdalītu reālu uzlabojumu no laimīgas atkārtotas savienošanas. Ja izmaiņas uzlabo atklāšanu, bet piegāde paliek tāda pati, jūs esat pārvietojuši iepazīšanās pakalpojumu, nevis datu ceļu.

Saistītie raksti