VPN-нің қарама-қарсы ұштарындағы екі ROS 2 түйіні бір-бірінің тақырыптарын тізімдей алады, бірақ бірде-бір хабарламаны жеткізе алмайды. Анықтау мен пайдаланушы деректері — бөлек жолдары бар бөлек алмасулар, ал анықтау сервері жүктемені таратпайды. Бірін тексеріп, екіншісін болжау — туннель деректерді ешқашан тасымаған кезде командалардың аралық бағдарламаны ауыстыруына әкеледі. Төмендегі процедура бірдеңені ауыстырмас бұрын екі нәтижені ажыратады.

Анықтау сервері шын мәнінде нені тасымалдайды

Fast DDS ішінде Discovery Server соңғы нүктелер туралы ақпарат таратады: кім жариялайды, кім жазылады және әрқайсысы қандай QoS күтеді. Серіктестер бір-бірін білгеннен кейін пайдаланушы деректері сол сервер арқылы емес, тікелей олардың арасында жүреді. Серверге жету таныстыру делдалының жауап беретінін дәлелдейді, одан артық емес. Маршрутталған VPN әлі де серіктестер жариялаған мекенжайлар арасында екі бағытта жұмыс жолын қажет етеді.

Бұл айырмашылық ішінара ақауларды да түсіндіреді: бұрыннан бар серіктестер деректер алмасуды жалғастырады, ал жаңа анықтау жұмысын тоқтатады. Оларды екі жеке зерттеу ретінде қарастырыңыз.

Түйіндер шын мәнінде қолданатын RMW-ді оқыңыз

ROS 2 әртүрлі аралық бағдарламаларды жүктей алады, ал сіздің қабықшаңызда экспортталған айнымалы басқа жерде іске қосылған процестерге жетпейді. Терминал тарихынан емес, жұмыс істеп тұрған жүйеден сұраңыз.

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

Орнатылмаған айнымалы әдетте орнатылған әдепкі мәнді білдіреді, ол бір эксперименттегі машиналар арасында өзгеше болуы мүмкін. Есеп пайдаланылатын дистрибутив пен аралық бағдарламаны да атайды, сондықтан олардың сәйкес келеді деп болжамас бұрын туннельдің екі жағында салыстырыңыз. ROS пәрмен жолының демоны күйді кэштейді, сондықтан ортаны өзгерткеннен кейін оны қайта іске қосыңыз, ескі конфигурация үшін ескірген демонның жауап беруіне жол бермеңіз. Сессия ашық кезде екі хосттың дистрибутиві мен RMW-ін тест жазбаларына жазыңыз.

Анықтау мен деректерді екі нәтиже ретінде сынаңыз

Зиянсыз тақырып таңдап, таныстыруды жеткізуден бөлек өлшеңіз. info пәрмені соңғы нүктелер мен QoS-ті тізімдейді, ал echo бір хабарламаның шын мәнінде байланыстан өтетінін дәлелдейді.

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

info шығысында соңғы нүктелердің пайда болуы — анықтау нәтижесі. Хабарламаның жазылушыға жетуі — тасымал нәтижесі, және тек екіншісі қолданбаға қажет жолды тексереді. Анықтау жұмыс істеп, echo уақыты бітсе, анықтау қызметін емес, жарияланған мекенжайлар мен қайтару маршрутын тексеріңіз. Екі пәрменді де әр хосттан іске қосыңыз, өйткені асимметриялық VPN маршруты жиі тек бір жағынан ғана байқалады.

Бір уақытта бір тәуелділікті өзгертіңіз

Деректер жолы істемесе, бір сессияда аралық бағдарламаны, анықтау режимін және хабарлама өлшемін өзгертуден аулақ болыңыз, өйткені кейін ешбір нәтижені оған телу мүмкін болмайды. Zenoh RMW — заңды балама, бірақ оның маршрутизаторы туннель арқылы қолжетімді болуы тиіс тағы бір тәуелділікке айналады.

export RMW_IMPLEMENTATION=rmw_zenoh_cpp
ros2 run rmw_zenoh_cpp rmw_zenohd

Сол RMW кезінде маршрутизатор анықтауды Jazzy әдепкі орналасуында тасымалдайды, ал онда multicast анықтау өшірілген, сондықтан бұл тәуелділік басқа аралық бағдарламадан алынған болжамға емес, жазбаларыңызға тиесілі. Бір параметрді өзгерткенде жұмыс жүктемесін тұрақты ұстаңыз, содан кейін echo сынағын қайталап, бағытты, хабарлама жиілігін және байланыс шарттарын жазыңыз. Нақты жақсартуды кездейсоқ қайта қосылудан ажырату үшін салыстыруды екі рет орындаңыз. Егер өзгеріс анықтауды жақсартып, жеткізу сол күйінде қалса, сіз таныстыру қызметін жылжыттыңыз, деректер жолын емес.

Қатысты мақалалар