ROS 1 теме преко VPN-а: пратите оглашену крајњу тачку
ROS 1 master регистрација не носи податке о темама. Прочитајте оглашени URI чвора, учините ту адресу рутабилном, а затим дозволите порт издаваоца.
Ваша радна станица достиже ROS 1 master кроз тунел и још увек приказује празан списак тема. Такав образац је чест јер су master регистрација и пренос тема два различита разговора, а само први пролази кроз master. Контролна листа испод пролази кроз други разговор: крајњу тачку коју издавалац оглашава, адресу до које претплатник мора стићи и дозволу која пару омогућава разговор. Све овде се односи само на стари ROS 1, чији је период подршке за Noetic завршен у мају 2025.
Корак 1: докажите да веза са master-ом није веза са темом
Почните одвајањем онога што ради од онога што не ради. Успешан rostopic list доказује да ваш shell достиже XMLRPC порт master-а и да master зна за теме; не говори ништа о томе може ли претплатник стићи до издаваоца. Три наредбе испод чине ту разлику видљивом, и све су само за читање.
echo "$ROS_MASTER_URI"
rostopic list
rostopic info /chatter
Излаз наредбе rostopic info наводи URI чвора издаваоца, а то је XMLRPC адреса на хосту издаваоца. Та адреса је она коју ће ваш претплатник следеће позвати, па мора бити доступна одакле год претплатник ради. Ако показује на интерфејс који постоји само на LAN-у самог робота, претрага master-а успева, а подаци никада не стижу.
Корак 2: прочитајте оглашену крајњу тачку из самог чвора
ROS 1 бира свој оглашени идентитет хоста из ROS_IP или ROS_HOSTNAME када је један од њих постављен, а иначе се враћа на сопствено разрешавање имена хоста. Прегледајте окружење процеса који је заиста покренут, јер systemd јединица, контејнер или други терминал могу да носе другачију вредност од љуске у којој је ваш тест радио.
echo "$ROS_IP" "$ROS_HOSTNAME"
rosnode info /talker
getent hosts robot-host
Оглашавање имена хоста ради само ако сваки партнер разреши то име на намеравану доступну адресу. Ако се то име разрешава само унутар сопствене мреже робота, радна станица са друге стране тунела нема начина да га користи, а VPN који не шаље DNS суфикс чини несклад још горим. Постављање ROS_IP на адресу тунела је мања промена када је топологија рутирана. Шта год да изаберете, запишите то за оба краја, јер издавалац и претплатник који се не слажу око идентитета ће преговарати и затим неће моћи да се повежу.
Зауставите се овде ако оглашени URI користи адресу до које ниједан партнер не може да рутира. Никакав рад на заштитном зиду неће поправити име које се разрешава на погрешан интерфејс.
Корак 3: учините оглашену адресу разрешивом и рутираном
Са URI-јем у руци, тестирајте доступност са хоста претплатника, а не са робота. TCPROS порт се бира током преговора, па је користан рани тест XMLRPC порт, а користан каснији тест успостављени сокет. Рута која постоји само у једном смеру чест је квар на рутираним VPN-овима, а повратни пут је једнако важан као и пут напред.
ip route get 10.70.0.2
nc -vz 10.70.0.2 33911
ss -tnp dst 10.70.0.2
Рутирани TUN интерфејс преноси ове IP разговоре без проширења Ethernet сегмента робота, што удаљени оператер обично и жели. Ако нешто у стек-у уместо тога зависи од broadcast-а или multicast-а, тај захтев треба посебно проценити; претварање тунела у TAP да би се задовољио један алат проширује мрежу за сваког учесника.
Зауставите се овде ако рута или повратни пут недостаје. Издавалац који одговара на свом хосту, али није доступан са радне станице, има проблем са рутирањем, а не проблем са ROS-ом.
Корак 4: дозволите разговор партнера и посматрајте једну тему
Отворите само портове који су потребни преговараном разговору и ограничите свако правило на оглашене учеснике. Слушалац master-а није релеј за садржај тема, па дозвола само за њега оставља крајњу тачку издаваоца затвореном. Држите ROS слушаоце на граници приватног VPN-а уместо да их излажете јавном интернету.
rostopic hz /chatter
rostopic echo -n1 /chatter
rosnode ping /talker
Посматрајте једну безопасну тему од стварног издаваоца до стварног претплатника и потврдите и оглашену крајњу тачку и повратни пут. Једна порука доказује да пут ради; стабилна стопа доказује да остаје отворен. Држите управљање актуаторима и безбедносне провере изван овог теста који се тиче само мреже, јер радна тема не потврђује радног робота. Запишите верзију ROS-а и пар крајњих тачака који сте приметили, да следећа особа може да разликује промену топологије од регресије.
Контролна листа је завршена када је оглашени URI доступан са претплатника, преговарани порт отворен само за тог партнера, једна оглашена тема тече, а вредности окружења записане за оба хоста. Стари ROS 1 неће добијати исправке у овој области, па је запис онај део који наставља да ради након што се људи промене.