ROS 2 преко VPN-а: откривање није пут података
То што откривање проналази партнере не доказује да терет стиже. Проверите RMW, објављене крајње тачке и један радни задатак пре него што замените DDS или додате рутер.
Два ROS 2 чвора на супротним крајевима VPN-а могу један другоме излистати теме и ипак не испоручити ни једну поруку. Откривање и кориснички подаци су одвојене размене са одвојеним путевима, а сервер за откривање не преноси терет. Проверити једно и претпоставити друго је начин на који тимови завршавају мењајући middleware кад тунел једноставно никада није преносио податке. Поступак у наставку раздваја два резултата пре него што се било шта замени.
Шта сервер за откривање заправо преноси
У Fast DDS-у Discovery Server дистрибуира информације о крајњим тачкама: ко објављује, ко се претплаћује и који QoS свако очекује. Кад партнери сазнају један за другога, кориснички подаци путују директно између њих, а не кроз тај сервер. Долазак до сервера доказује да посредник упознавања одговара, и ништа више. Рутирани VPN и даље треба радни пут у оба смера између адреса које партнери објављују.
Та разлика објашњава и делимичне кварове, где постојећи партнери настављају да размењују податке док ново откривање престаје да ради. Третирајте их као две одвојене истраге.
Прочитајте RMW који чворови заиста користе
ROS 2 може да учита различите middleware, а променљива извезена у вашој љусци не стиже до процеса покренутих негде другде. Питајте систем који ради, а не историју терминала.
printenv RMW_IMPLEMENTATION
ros2 doctor --report | head -n 20Непостављена променљива обично значи инсталирану подразумевану вредност, која се може разликовати између машина у истом експерименту. Извештај такође наводи дистрибуцију и middleware који се користе, па их упоредите са обе стране тунела пре него што претпоставите да се подударају. Демон командне линије ROS кешира стање, па га поново покрените након промене окружења, уместо да пустите застарели демон да одговара за стару конфигурацију. Запишите дистрибуцију и RMW оба хоста у белешке теста док је сесија отворена.
Тестирајте откривање и податке као два резултата
Изаберите безопасну тему и мерите упознавање одвојено од испоруке. Команда info наводи крајње тачке и QoS, док echo доказује да ли једна порука заиста прелази везу.
ros2 topic info /chatter --verbose
ros2 topic echo /chatter --onceПојављивање крајњих тачака у излазу info је резултат откривања. Долазак поруке до претплатника је транспортни резултат и само други испитује пут који је апликацији потребан. Кад откривање ради, а echo истекне, прегледајте објављене адресе и повратну руту уместо услуге откривања. Покрените обе команде са сваког хоста, јер асиметрична VPN рута често се открије само са једне стране.
Мењајте једну зависност по пут
Кад пут података закаже, избегавајте да у истој сесији мењате middleware, начин откривања и величину поруке, јер се после ниједан резултат не може приписати. Zenoh RMW је легитимна алтернатива, али његов рутер постаје још једна зависност која мора бити доступна кроз тунел.
export RMW_IMPLEMENTATION=rmw_zenoh_cpp
ros2 run rmw_zenoh_cpp rmw_zenohdПод тим RMW-ом рутер носи откривање у подразумеваном Jazzy распореду, а multicast откривање је тамо онемогућено, па зависност припада вашим белешкама, а не претпоставци позајмљеној од другог middleware-а. Држите радни задатак фиксним док мењате једну поставку, затим поновите echo тест и забележите смер, брзину порука и услове везе. Поновите поређење двапут да бисте стварно побољшање одвојили од срећног поновног повезивања. Ако промена побољша откривање, а испорука остане иста, преместили сте услугу упознавања, не пут података.