ROS 2 dros VPN: nid canfod yw'r llwybr data
Nid yw canfod cymheiriaid yn profi bod y llwythi'n cyrraedd. Gwiriwch yr RMW, y terfynbwyntiau a hysbysebir ac un llwyth gwaith cyn newid DDS neu ychwanegu llwybrydd.
Gall dau nod ROS 2 ar bennau cyferbyniol VPN restru topigau ei gilydd ac eto fethu â chyflwyno unrhyw neges. Mae canfod a data defnyddwyr yn gyfnewidiadau ar wahân â llwybrau ar wahân, ac nid yw gweinydd canfod yn trosglwyddo llwythi. Gwirio'r naill a chymryd y llall yn ganiataol yw sut mae timau'n bwrw ymlaen i ddisodli'r middleware pan na chludodd y twnnel y data o gwbl. Mae'r rhestr waith isod yn gwahanu'r ddau ganlyniad cyn i unrhyw beth gael ei newid.
Beth mae gweinydd canfod yn ei gludo mewn gwirionedd
Yn Fast DDS mae Discovery Server yn dosbarthu gwybodaeth am derfynbwyntiau: pwy sy'n cyhoeddi, pwy sy'n tanysgrifio a pha QoS y mae pob un yn ei ddisgwyl. Unwaith y bydd cymheiriaid yn gwybod am ei gilydd, mae data defnyddwyr yn teithio'n uniongyrchol rhyngddynt yn hytrach nag drwy'r gweinydd hwnnw. Mae cyrraedd y gweinydd yn profi bod brocer y cyflwyniadau'n ateb, dim mwy. Mae angen llwybr gweithredol o hyd ar VPN a lwybrir i'r ddau gyfeiriad rhwng y cyfeiriadau a hysbysebir gan y cymheiriaid.
Mae'r gwahaniaeth hwnnw hefyd yn egluro methiannau rhannol, lle mae cymheiriaid presennol yn parhau i gyfnewid data tra bo canfod newydd yn peidio â gweithio. Trin y rheini fel dau ymchwiliad.
Darllenwch yr RMW y mae'r nodau'n ei ddefnyddio mewn gwirionedd
Gall ROS 2 lwytho middleware gwahanol, ac nid yw newidyn a allforir yn eich cragen yn cyrraedd prosesau a gychwynnir yn rhywle arall. Gofynnwch i'r system sy'n rhedeg yn hytrach nag i hanes eich terfynell.
printenv RMW_IMPLEMENTATION
ros2 doctor --report | head -n 20Mae newidyn heb ei osod fel arfer yn golygu'r diofyn a osodwyd, a all amrywio rhwng peiriannau yn yr un arbrawf. Mae'r adroddiad hefyd yn enwi'r dosbarthiad a'r middleware sy'n cael eu defnyddio, felly cymharwch nhw ar ddwy ochr y twnnel cyn tybio eu bod yn cyfateb. Mae daemon llinell orchymyn ROS yn cadw'r cyflwr mewn storfa dros dro, felly ailgychwynnwch ef ar ôl newid yr amgylchedd yn hytrach na gadael i hen daemon ateb ar gyfer yr hen ffurfweddiad. Rhowch ddosbarthiad ac RMW y ddau westeiwr yn nodiadau'r prawf tra bo'r sesiwn ar agor.
Profwch ganfod a data fel dau ganlyniad
Dewiswch dopig diniwed a mesurwch yr adnabyddiaeth ar wahân i'r danfoniad. Mae'r gorchymyn info yn rhestru terfynbwyntiau a QoS, tra bo echo yn profi a yw un neges yn croesi'r ddolen mewn gwirionedd.
ros2 topic info /chatter --verbose
ros2 topic echo /chatter --onceMae terfynbwyntiau'n ymddangos yn allbwn info yn ganlyniad canfod. Mae neges yn cyrraedd y tanysgrifydd yn ganlyniad cludiant, a dim ond yr ail sy'n rhoi prawf ar y llwybr sydd ei angen ar y rhaglen. Pan fydd canfod yn gweithio ac echo yn treiglo, archwiliwch y cyfeiriadau a hysbysebir a'r llwybr dychwelyd yn hytrach na'r gwasanaeth canfod. Rhedeg y ddau orchymyn o bob gwesteiwr, oherwydd mae llwybr VPN anghymesur yn aml yn datgelu ei hun o un ochr yn unig.
Newidiwch un ddibyniaeth ar y tro
Pan fydd y llwybr data'n methu, osgoi newid middleware, modd canfod a maint neges yn yr un sesiwn, gan na ellir priodoli unrhyw ganlyniad wedyn. Mae RMW Zenoh yn ddewis cyfreithlon, ond daw ei lwybrydd yn ddibyniaeth arall y mae'n rhaid ei gyrraedd drwy'r twnnel.
export RMW_IMPLEMENTATION=rmw_zenoh_cpp
ros2 run rmw_zenoh_cpp rmw_zenohdO dan yr RMW hwnnw mae'r llwybrydd yn cludo canfod yn nhrefniant diofyn Jazzy, ac mae canfod multicast yn anabl yno, felly mae'r ddibyniaeth yn perthyn i'ch nodiadau yn hytrach nag i dybiaeth a fenthycwyd o middleware arall. Cadwch y llwyth gwaith yn sefydlog wrth newid un gosodiad, yna ailadroddwch y prawf echo a chofnodwch gyfeiriad, cyfradd negeseuon ac amodau'r ddolen. Rhedeg y gymhariaeth ddwywaith i wahanu gwelliant go iawn oddi wrth ailgysylltiad lwcus. Os yw newid yn gwella canfod tra bo cyflenwi yr un fath, rydych wedi symud y gwasanaeth adnabyddiaeth, nid y llwybr data.