ROS 1 teemad VPN-i kaudu: järgige teatatud lõpp-punkti
ROS 1 master-registreerimine ei kanna teemaandmeid. Lugege teatatud sõlme URI, muutke see aadress marsruuditavaks ja seejärel lubage avaldaja port.
Teie tööjaam jõuab ROS 1 masterini tunnelit mööda ja näitab ikkagi tühja teemaloendit. See muster on tavaline, sest master-registreerimine ja teemade transport on kaks erinevat vestlust ning ainult esimene käib masterist läbi. Allolev kontroll-loend käib läbi teise vestluse: lõpp-punkti, mille avaldaja teatab, aadressi, milleni tellija peab jõudma, ja loa, mis laseb paaril rääkida. Kõik siin kehtib ainult vana ROS 1 kohta, mille Noetic-toe aken lõppes mais 2025.
Samm 1: tõestage, et masteri ühendus ei ole teema ühendus
Alustage selle eraldamisest, mis töötab, sellest, mis ei tööta. Edukas rostopic list tõestab, et teie shell jõuab masteri XMLRPC-pordini ja et master teab teemadest; see ei ütle midagi selle kohta, kas tellija jõuab avaldajani. Kolm allolevat käsku teevad selle vahe nähtavaks ja kõik need on ainult lugemiseks.
echo "$ROS_MASTER_URI"
rostopic list
rostopic info /chatter
rostopic info väljund nimetab avaldaja sõlme URI, mis on XMLRPC-aadress avaldaja hostis. See aadress on see, millele teie tellija järgmisena helistab, seega peab see olema kättesaadav kõikjalt, kus tellija töötab. Kui see osutab liidesele, mis eksisteerib ainult roboti enda LAN-is, õnnestub masteri otsing ja andmed ei jõua kunagi kohale.
Samm 2: lugege teatatud lõpp-punkt sõlmest endast
ROS 1 valib oma teatatud hosti identiteedi ROS_IP või ROS_HOSTNAME järgi, kui üks neist on seatud, ja muidu langeb tagasi hosti enda nimelahendusele. Uurige protsessi keskkonda, mis tegelikult käivitati, sest systemd-üksus, konteiner või teine terminal võib kanda teistsugust väärtust kui shell, kus teie test töötas.
echo "$ROS_IP" "$ROS_HOSTNAME"
rosnode info /talker
getent hosts robot-host
Hostinime teade töötab ainult siis, kui iga peer lahendab selle nime kavandatud kättesaadavaks aadressiks. Kui see nimi lahendatakse ainult roboti enda võrgus, ei saa tunnelist teisel pool olev tööjaam seda kuidagi kasutada, ja VPN, mis ei suru ühtegi DNS-järelliidet, teeb lahknevuse hullemaks. ROS_IP seadmine tunneli aadressile on väiksem muudatus, kui topoloogia on marsruuditud. Mida iganes te valite, kirjutage see mõlema otsa jaoks üles, sest avaldaja ja tellija, kes ei ole identiteedi osas ühel meelel, peavad läbirääkimisi ja ei suuda siis ühenduda.
Peatuge siin, kui teatatud URI kasutab aadressi, kuhu ükski peer ei saa marsruutida. Mingi tulemüüritöö ei paranda nime, mis lahendatakse vale liidese vastu.
Samm 3: tehke teatatud aadress lahendatavaks ja marsruudituks
URI käes, testige kättesaadavust tellija hostist, mitte robotist. TCPROS-port valitakse läbirääkimiste käigus, seega kasulik varajane test on XMLRPC-port ja kasulik hilisem test on loodud pesa. Marsruut, mis eksisteerib ainult ühes suunas, on marsruuditud VPN-ide tavaline viga, ja tagasitee loeb sama palju kui teetee.
ip route get 10.70.0.2
nc -vz 10.70.0.2 33911
ss -tnp dst 10.70.0.2
Marsruuditud TUN-liides kannab neid IP-vestlusi roboti Ethernet-segmenti laiendamata, mida kaugoperaator tavaliselt soovib. Kui midagi virnas sõltub selle asemel edastusest või multicastist, tuleb seda nõuet eraldi hinnata; tunneli TAP-iks muutmine ühe tööriista rahuldamiseks laiendab võrku iga osaleja jaoks.
Peatuge siin, kui marsruut või tagasitee puudub. Avaldajal, kes vastab oma hostis, kuid keda tööjaamast kätte ei saa, on marsruutimisprobleem, mitte ROS-i probleem.
Samm 4: lubage peer-vestlus ja jälgige ühte teemat
Avage ainult need pordid, mida läbi räägitud vestlus vajab, ja piirake iga reegel deklareeritud osalejatega. Masteri kuulaja ei ole teemade kandevõime relee, seega ainult selle lubamine jätab avaldaja lõpp-punkti suletuks. Hoidke ROS-i kuulajad privaatse VPN-i piiril, selle asemel et neid avalikku internetti paljastada.
rostopic hz /chatter
rostopic echo -n1 /chatter
rosnode ping /talker
Jälgige ühte kahjutut teemat päris avaldajalt päris tellijani ja kinnitage nii teatatud lõpp-punkt kui ka vastusetee. Üks sõnum tõestab, et tee töötab; püsiv sagedus tõestab, et see jääb avatuks. Hoidke ajamite juhtimine ja ohutuskontrollid sellest ainult võrku puudutavast testist väljas, sest töötav teema ei tõenda töötavat robotit. Kirjutage üles ROS-i versioon ja vaadeldud lõpp-punktide paar, et järgmine inimene saaks topoloogia muutust regressioonist eristada.
Kontroll-loend on valmis, kui teatatud URI on tellijast kättesaadav, läbi räägitud port on avatud ainult sellele peerile, üks deklareeritud teema voolab ja keskkonna väärtused on mõlema hosti jaoks üles kirjutatud. Vana ROS 1 ei saa selles valdkonnas parandusi, seega on kirje see osa, mis jätkab tööd pärast seda, kui inimesed vahetuvad.