VPN аркылуу ROS 2: аныктоо маалымат жолу эмес
Аныктоо шериктерди тапканы пайдалуу жүктүн жеткенин далилдебейт. DDS-ти алмаштыруудан же маршрутизатор кошуудан мурун RMW, жарыяланган акыркы чекиттерди жана бир жумуш жүктөмүн текшериңиз.
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 --onceinfo чыгарылышында акыркы чекиттердин пайда болушу — аныктоо натыйжасы. Билдирүүнүн жазылуучуга жетүүсү — ташуу натыйжасы, жана экинчиси гана колдонмого керектүү жолду текшерет. Аныктоо иштеп, echo убактысы бүтсө, аныктоо кызматын эмес, жарыяланган даректерди жана кайтуу маршрутун текшериңиз. Эки буйрукту тең ар бир хосттон иштетиңиз, анткени асимметриялык VPN маршруту көбүнчө бир тараптан гана билинет.
Бир убакта бир көз карандылыкты өзгөртүңүз
Маалымат жолу иштебей калганда, ошол эле сессияда орто программалык камсыздоону, аныктоо режимин жана билдирүү өлчөмүн өзгөртүүдөн баш тартыңыз, анткени кийин эч бир натыйжаны ага таандык кылуу мүмкүн эмес. Zenoh RMW — мыйзамдуу альтернатива, бирок анын маршрутизатору туннель аркылуу жеткиликтүү болушу керек болгон дагы бир көз карандылыкка айланат.
export RMW_IMPLEMENTATION=rmw_zenoh_cpp
ros2 run rmw_zenoh_cpp rmw_zenohdОшол RMW астында маршрутизатор аныктоону Jazzy демейки жайгашуусунда ташыйт, жана ал жерде multicast аныктоо өчүрүлгөн, ошондуктан бул көз карандылык башка орто программалык камсыздоодон алынган божомолго эмес, сиздин жазууларыңызга таандык. Бир параметрди өзгөрткөндө жумуш жүктөмүн туруктуу кармаңыз, анан echo сынагын кайталап, багытты, билдирүү ылдамдыгын жана байланыш шарттарын жазыңыз. Чыныгы жакшыртууну туш келди кайра туташуудан ажыратуу үчүн салыштырууну эки жолу аткарыңыз. Эгер өзгөртүү аныктоону жакшыртып, жеткирүү ошол бойдон калса, сиз тааныштыруу кызматын жылдырдыңыз, маалымат жолун эмес.