VPN üzərindən ROS 1 mövzuları: elan edilmiş son nöqtəni izləyin
ROS 1 master qeydiyyatı mövzu məlumatını daşımır. Elan edilmiş node URI-ni oxuyun, o ünvanı marşrutlaşdırıla bilən edin, sonra yayımlayanın portuna icazə verin.
İş stansiyanız tunel üzərindən ROS 1 master-ə çatır və yenə də boş mövzu siyahısı göstərir. Bu hal tez-tez olur, çünki master qeydiyyatı və mövzu daşıması iki fərqli söhbətdir və yalnız birincisi master-dən keçir. Aşağıdakı yoxlama siyahısı ikinci söhbəti izləyir: yayımlayanın elan etdiyi son nöqtə, abunəçinin çatmalı olduğu ünvan və cütlüyün danışmasına imkan verən icazə. Buradakı hər şey Noetic dəstək pəncərəsi 2025-ci ilin mayında bitən köhnə ROS 1-ə aiddir.
Addım 1: master bağlantısının mövzu bağlantısı olmadığını sübut edin
İşləyəni işləməyəndən ayırmaqla başlayın. Uğurlu rostopic list sizin shell-inizin master-in XMLRPC portuna çata bildiyini və master-in mövzuları bildiyini sübut edir; abunəçinin yayımlayana çata biləcəyi barədə heç nə demir. Aşağıdakı üç əmr fərqi görünən edir və hamısı yalnız oxumaq üçündür.
echo "$ROS_MASTER_URI"
rostopic list
rostopic info /chatter
rostopic info çıxışı yayımlayanın node URI-ni göstərir, bu da yayımlayanın host-undakı XMLRPC ünvanıdır. Bu ünvan abunəçinizin sonra çağıracağı ünvandır, ona görə abunəçinin işlədiyi hər yerdən əlçatan olmalıdır. Əgər o, yalnız robotun öz LAN-ında mövcud olan interfeysə işarə edirsə, master axtarışı uğurlu olur və məlumat heç vaxt gəlmir.
Addım 2: elan edilmiş son nöqtəni node-un özündən oxuyun
ROS 1 elan etdiyi host kimliyini ROS_IP və ya ROS_HOSTNAME dəyişənlərindən birinin təyin olunduğu halda seçir, əks halda host-un öz ad həllinə qayıdır. Faktiki olaraq başladılmış prosesin mühitini yoxlayın, çünki systemd vahidi, konteyner və ya ikinci terminal testinizin işlədiyi shell-dən fərqli dəyər daşıya bilər.
echo "$ROS_IP" "$ROS_HOSTNAME"
rosnode info /talker
getent hosts robot-host
Host adı elanı yalnız hər peer həmin adı nəzərdə tutulan əlçatan ünvana həll etdikdə işləyir. Əgər o ad yalnız robotun öz şəbəkəsi daxilində həll olunursa, tunelin o biri tərəfindəki iş stansiyası ondan istifadə edə bilməz və heç bir DNS suffix-i itələməyən VPN uyğunsuzluğu daha da pisləşdirir. Topologiya marşrutlaşdırıldıqda ROS_IP dəyişənini tunel ünvanına qoymaq daha kiçik dəyişiklikdir. Hansını seçsəniz də, onu hər iki tərəf üçün qeyd edin, çünki kimlik barədə razılaşmayan yayımlayan və abunəçi danışıq aparacaq, sonra isə qoşula bilməyəcək.
Elan edilmiş URI heç bir peer-in marşrutlaşdıra bilmədiyi ünvanı istifadə edirsə, burada dayanın. Səhv interfeysə həll olunan adı heç bir firewall işi düzəltməyəcək.
Addım 3: elan edilmiş ünvanı həll oluna bilən və marşrutlaşdırılmış edin
URI əldə olduqdan sonra əlçatanlığı robotdan deyil, abunəçinin host-undan yoxlayın. TCPROS portu danışıq zamanı seçilir, ona görə faydalı erkən test XMLRPC portudur, faydalı gec test isə qurulmuş soketdir. Yalnız bir istiqamətdə mövcud olan marşrut marşrutlaşdırılmış VPN-lərdə geniş yayılmış nasazlıqdır və geri yol da irəli yol qədər vacibdir.
ip route get 10.70.0.2
nc -vz 10.70.0.2 33911
ss -tnp dst 10.70.0.2
Marşrutlaşdırılmış TUN interfeysi bu IP söhbətlərini robotun Ethernet seqmentini genişləndirmədən daşıyır, bu da adətən uzaq operatorun istədiyi şeydir. Əgər stack-də nəsə əvəzinə broadcast və ya multicast-dan asılıdırsa, bu tələb ayrıca qiymətləndirilməlidir; bir aləti təmin etmək üçün tuneli TAP-a çevirmək şəbəkəni hər iştirakçı üçün genişləndirir.
Marşrut və ya geri yol yoxdursa, burada dayanın. Öz host-unda cavab verən, lakin iş stansiyasından əlçatan olmayan yayımlayanın marşrut problemi var, ROS problemi yox.
Addım 4: peer söhbətinə icazə verin və bir mövzunu izləyin
Yalnız danışıqda razılaşdırılmış söhbətin ehtiyac duyduğu portları açın və hər qaydanı elan edilmiş iştirakçılarla məhdudlaşdırın. Master-in dinləyicisi mövzu yükləri üçün relay deyil, ona görə yalnız ona icazə vermək yayımlayanın son nöqtəsini bağlı saxlayır. ROS dinləyicilərini ictimai internetə açmaq əvəzinə özəl VPN sərhədində saxlayın.
rostopic hz /chatter
rostopic echo -n1 /chatter
rosnode ping /talker
Həqiqi yayımlayandan həqiqi abunəçiyə bir zərərsiz mövzunu izləyin və həm elan edilmiş son nöqtəni, həm də cavab yolunu təsdiqləyin. Tək mesaj yolun işlədiyini sübut edir; sabit sürət onun açıq qaldığını sübut edir. Aktuator idarəsini və təhlükəsizlik yoxlamalarını bu yalnız şəbəkə testindən kənarda saxlayın, çünki işləyən mövzu işləyən robotu təsdiqləmir. ROS versiyasını və müşahidə etdiyiniz son nöqtə cütünü qeyd edin ki, növbəti şəxs topologiya dəyişikliyini reqressiyadan ayıra bilsin.
Yoxlama siyahısı elan edilmiş URI abunəçidən əlçatan olduqda, danışıqda razılaşdırılmış port yalnız həmin peer üçün açıq olduqda, bir elan edilmiş mövzu axdıqda və mühit dəyərləri hər iki host üçün yazıldıqda tamamlanır. Köhnə ROS 1 bu sahədə düzəlişlər almayacaq, ona görə qeyd insanlar dəyişdikdən sonra da işləməyə davam edən hissədir.