Arbeidsstasjonen din når ROS 1-masteren gjennom tunnelen og viser framleis ei tom emneliste. Det mønsteret er vanleg fordi masterregistrering og emnetransport er to ulike samtalar, og berre den første går gjennom masteren. Sjekklista nedanfor går gjennom den andre samtalen: endepunktet ein utgjevar annonserer, adressa ein abonnent må kunne nå, og løyvet som lèt paret snakke saman. Alt her gjeld berre den gamle ROS 1, der Noetic-støttevindauget vart avslutta i mai 2025.

Steg 1: prov at mastertilkoplinga ikkje er emnetilkoplinga

Byrja med å skilje det som verkar frå det som ikkje verkar. Ein vellukka rostopic list provar at skalet ditt når XMLRPC-porten til masteren og at masteren kjenner emna; det seier ingenting om ein abonnent kan nå utgjevaren. Dei tre kommandoane nedanfor gjer skilnaden synleg, og alle er skriveverna.

echo "$ROS_MASTER_URI"
rostopic list
rostopic info /chatter

Utdataa frå rostopic info namngjev node-URI-en til utgjevaren, som er ei XMLRPC-adresse på verten til utgjevaren. Det er adressa abonnenten din vil kalle neste gong, så ho må vere nåbar frå kvar abonnenten enn køyrer. Viss ho peikar på eit grensesnitt som berre finst på roboten sitt eige LAN, lukkast mastersøket, og dataa kjem aldri fram.

Steg 2: les det annonserte endepunktet frå noden sjølv

ROS 1 vel den annonserte vertsidentiteten sin frå ROS_IP eller ROS_HOSTNAME når ein av dei er sett, og fell elles tilbake på verten sitt eige namneoppslag. Undersøk miljøet til prosessen som faktisk vart starta, fordi ei systemd-eining, ein container eller ein annan terminal kan bere ein annan verdi enn skalet der testen din verka.

echo "$ROS_IP" "$ROS_HOSTNAME"
rosnode info /talker
getent hosts robot-host

Ei vertsnamnannonsering verkar berre viss kvar peer slår opp det namnet til den tiltenkte nåbare adressa. Viss det namnet berre blir slått opp inne i roboten sitt eige nettverk, har ein arbeidsstasjon på den andre sida av tunnelen ingen måte å bruke det på, og eit VPN som ikkje skyv noko DNS-suffiks gjer avviket verre. Å setje ROS_IP til tunneladressa er den minste endringa når topologien er ruta. Uansett kva du vel, skriv det ned for båe endar, fordi ein utgjevar og ein abonnent som er usamde om identitet vil forhandle og deretter ikkje kunne kople til.

Stopp her viss den annonserte URI-en brukar ei adresse som ingen peer kan rute til. Ingen mengd brannmurarbeid rettar eit namn som blir slått opp til feil grensesnitt.

Steg 3: gjer den annonserte adressa oppslåeleg og ruta

Med URI-en i handa testar du nåbarheit frå verten til abonnenten i staden for frå roboten. TCPROS-porten blir vald under forhandlinga, så den nyttige tidlege testen er XMLRPC-porten, og den nyttige seine testen er den etablerte sockelen. Ei rute som berre finst i éi retning er ein vanleg feil på ruta VPN-ar, og returvegen tel like mykje som vegen fram.

ip route get 10.70.0.2
nc -vz 10.70.0.2 33911
ss -tnp dst 10.70.0.2

Eit ruta TUN-grensesnitt ber desse IP-samtalane utan å utvide Ethernet-segmentet til roboten, som vanlegvis er det ein fjernoperatør ønskjer. Viss noko i stakken i staden er avhengig av kringkasting eller multicast, må det kravet vurderast separat; å gjere tunnelen om til TAP for å tilfredsstille eitt verktøy utvidar nettverket for kvar deltakar.

Stopp her viss ruta eller returvegen manglar. Ein utgjevar som svarar på sin eigen vert, men ikkje kan nåast frå arbeidsstasjonen, har eit ruteproblem, ikkje eit ROS-problem.

Steg 4: tillat peer-samtalen og sjå på eitt emne

Opne berre dei portane den forhandla samtalen treng, og avgrens kvar regel til dei erklærte deltakarane. Lyttaren til masteren er ikkje ein videresendar for emnenyttelast, så å tillate berre han lèt endepunktet til utgjevaren vere lukka. Hald ROS-lyttarane på grensa til det private VPN-et i staden for å eksponere dei mot det opne internettet.

rostopic hz /chatter
rostopic echo -n1 /chatter
rosnode ping /talker

Sjå på eitt ufarleg emne frå den verkelege utgjevaren til den verkelege abonnenten og stadfest både det annonserte endepunktet og svarvegen. Éi melding provar at vegen verkar; eit jamt tempo provar at han held seg open. Hald aktuatorstyring og tryggleikskontrollar utanfor denne testen som berre handlar om nettverket, fordi eit fungerande emne ikkje sertifiserer ein fungerande robot. Skriv ned ROS-versjonen og endepunktparet du observerte, slik at neste person kan skilje ei topologiendring frå ein regresjon.

Sjekklista er ferdig når den annonserte URI-en er nåbar frå abonnenten, den forhandla porten er open berre for den peeren, eitt erklært emne flyt, og miljøverdiane er skrivne ned for båe vertane. Gammal ROS 1 vil ikkje få rettingar på dette området, så registreringa er den delen som held fram med å verke etter at folk blir bytte ut.

Relaterte artiklar