VPN аркылуу ROS 1 темалары: жарыяланган акыркы чекитти ээрчиңиз
ROS 1 master каттоосу тема маалыматтарын ташыбайт. Жарыяланган түйүн URI ачкычын окугула, ал даректи маршрутталган кылып, анан жарыялоочунун портун уруксат кылыңыз.
Иш станцияңыз туннель аркылуу ROS 1 masterге жетет, бирок темалардын тизмеси дагы эле бош көрүнөт. Бул үлгү кеңири таралган, анткени master каттоосу менен тема ташуу эки башка сүйлөшүү, жана master аркылуу биринчиси гана өтөт. Төмөнкү текшерүү тизмеси экинчи сүйлөшүүнү жүргүзөт: жарыялоочу жарыялаган акыркы чекит, жазылуучу жетиши керек болгон дарек, жана экөөнү сүйлөшүүгө мүмкүндүк берген уруксат. Бул жердегинин баары эски ROS 1ге гана тиешелүү, анын Noetic колдоо терезеси 2025-жылдын майында аяктаган.
1-кадам: master байланышы тема байланышы эмес экенин далилдеңиз
Эмне иштегенин эмне иштебегенин ажыратуудан баштаңыз. Ийгиликтүү rostopic list shellиңиз masterдин XMLRPC портуна жете аларын жана master темаларды билерин далилдейт; ал жазылуучунун жарыялоочуга жете алары тууралуу эч нерсе айтпайт. Төмөнкү үч буйрук бул айырманы көрүнүктүү кылат, жана баары тема окууга гана арналган.
echo "$ROS_MASTER_URI"
rostopic list
rostopic info /chatter
rostopic info чыгарылышы жарыялоочунун түйүн URIн атайт, ал жарыялоочунун хостундагы XMLRPC дареги. Ошол даректи жазылуучуңуз кийинки чакырат, ошондуктан ал жазылуучу иштеген кайсы жерден болсо да жеткиликтүү болушу керек. Эгер ал роботтун өз LANында гана бар интерфейске шилтесе, master издөөсү ийгиликтүү аяктайт, ал эми маалыматтар эч качан келбейт.
2-кадам: жарыяланган акыркы чекитти түйүндүн өзүнөн окуңуз
ROS 1 өзүнүн жарыяланган хост инсандыгын ROS_IP же ROS_HOSTNAME ичинен тандайт, эгер алардын бири коюлган болсо, болбосо хосттун өз аталышын чечүүгө кайтат. Чындыгында иштетилген процесстин чөйрөсүн текшериңиз, анткени systemd бирдиги, контейнер же экинчи терминал сынагыңыз иштеген shellден башка маанини алып жүрүшү мүмкүн.
echo "$ROS_IP" "$ROS_HOSTNAME"
rosnode info /talker
getent hosts robot-host
Хост атын жарыялоо ар бир шерик ошол атты көздөлгөн жеткиликтүү дарекке чечкенде гана иштейт. Эгер бул ат роботтун өз тармагынын ичинде гана чечилсе, туннелдин аркы тарабындагы иш станциясынын аны колдонууга жолу жок, ал эми DNS уландысын түртпөгөн VPN дал келбестикти ого бетер начарлатат. Топология маршрутталган кезде ROS_IP параметрин туннелдин дарегине коюу кичине өзгөртүү. Кайсынысын тандасаңыз да, аны эки учун тең жазып койгула, анткени инсандык боюнча макулдашпаган жарыялоочу менен жазылуучу сүйлөшүп, анан туташа албайт.
Эгер жарыяланган URI эч бир шерик маршруттай албаган даректи колдонсо, ушул жерде токтоңуз. Туура эмес интерфейске чечилген атты эч кандай firewall иши оңдобойт.
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 бул тармакта түзөтүүлөрдү албайт, ошондуктан жазуу — адамдар алмашкандан кийин да иштешин уланткан бөлүк.