ROS 2 í gegnum VPN: uppgötvun er ekki gagnaleiðin
Að uppgötvun finni jafningja sannar ekki að gagnapakkar berist. Athugaðu RMW, tilkynnta endapunkta og eitt vinnuálag áður en þú skiptir um DDS eða bætir við beini.
Tveir ROS 2 hnútar á gagnstæðum endum VPN geta listað umræðuefni hvors annars og samt ekki skilað einni einustu skilaboðum. Uppgötvun og notendagögn eru aðskilin skipti með aðskildum leiðum, og uppgötvunarþjónn endurvarpar ekki gagnapökkum. Að athuga annað og gera ráð fyrir hinu er hvernig teymi enda með að skipta um millihugbúnað þegar göngin báru einfaldlega aldrei gögnin. Aðferðin hér að neðan aðskilur niðurstöðurnar tvær áður en nokkuð er skipt út.
Hvað uppgötvunarþjónninn ber í raun
Í Fast DDS dreifir Discovery Server upplýsingum um endapunkta: hver birtir, hver gerist áskrifandi og hvaða QoS hver væntir. Þegar jafningjar þekkja hver annan ferðast notendagögn beint á milli þeirra frekar en gegnum þann þjón. Að ná í þjóninn sannar að miðill kynninganna svarar, og ekkert meira. Beint VPN þarf samt virka leið í báðar áttir milli þeirra vistfanga sem jafningjar tilkynna.
Þessi greinarmunur útskýrir líka hluta bilana, þar sem núverandi jafningjar halda áfram að skiptast á gögnum á meðan ný uppgötvun hættir að virka. Meðhöndlaðu þau sem tvær aðskildar rannsóknir.
Lestu RMW sem hnútarnir nota í raun
ROS 2 getur hlaðið mismunandi millihugbúnaði, og breyta sem flutt er út í skelinni þinni nær ekki ferlum sem ræst eru annars staðar. Spurðu kerfið sem er í gangi frekar en ferilssögu flugstöðvarinnar.
printenv RMW_IMPLEMENTATION
ros2 doctor --report | head -n 20Ósett breyta þýðir venjulega uppsetta sjálfgefið gildi sem getur verið mismunandi milli véla í sama tilraun. Skýrslan nefnir einnig dreifinguna og millihugbúnaðinn sem notaður er, svo samanberðu þau á báðum hliðum ganganna áður en þú gerir ráð fyrir að þau passi. ROS-dæmonn skipanalínunnar skyggir á stöðu, svo endurræstu hann eftir að umhverfinu er breytt í stað þess að láta úreltan dæmon svara fyrir gömlu stillinguna. Skrifaðu dreifingu og RMW beggja hýsla í prófunarnóturnar meðan lotan er opin.
Prófaðu uppgötvun og gögn sem tvær niðurstöður
Veldu hættulaust umræðuefni og mældu kynningu aðskilda frá afhendingu. Skipunin info listar endapunkta og QoS, en echo sannar hvort ein skilaboð fari í raun yfir tenginguna.
ros2 topic info /chatter --verbose
ros2 topic echo /chatter --onceAð endapunktar birtist í úttaki info er uppgötvunarniðurstaða. Að skilaboð berist til áskrifandans er flutningsniðurstaða, og aðeins sú seinni prófar leiðina sem forritið þarf. Þegar uppgötvun virkar og echo rennur út á tíma, skoðaðu tilkynntu vistföngin og afturleiðina í stað uppgötvunarþjónustunnar. Keyrðu báðar skipanir frá hverjum hýsil, því ósamhverf VPN-leið opinberar sig oft aðeins frá annarri hlið.
Skiptu um eina ósjálfstæði í einu
Þegar gagnaleiðin bregst, forðastu að breyta millihugbúnaði, uppgötvunarham og skilaboðastærð í sömu lotu, þar sem enga niðurstöðu er hægt að rekja eftir á. Zenoh RMW er löglegur valkostur, en beinir þess verður önnur ósjálfstæði sem verður að vera aðgengileg gegnum göngin.
export RMW_IMPLEMENTATION=rmw_zenoh_cpp
ros2 run rmw_zenoh_cpp rmw_zenohdUndir þeim RMW ber beinirinn uppgötvun í sjálfgefnu Jazzy-fyrirkomulagi, og multicast-uppgötvun er óvirk þar, svo ósjálfstæðið á heima í nótunum þínum frekar en í forsendu sem lánuð er frá öðrum millihugbúnaði. Haltu vinnuálaginu föstu meðan þú breytir einni stillingu, endurtaktu síðan echo-prófið og skráðu átt, skilaboðatíðni og tengiskilyrði. Keyrðu samanburðinn tvisvar til að aðskilja raunverulega endurbót frá heppilegri endurtengingu. Ef breyting bætir uppgötvun á meðan afhending er sú sama hefur þú fært kynningarþjónustuna, ekki gagnaleiðina.