Jūsu darbstacija sasniedz ROS 1 master caur tuneli un joprojām rāda tukšu tēmu sarakstu. Šis modelis ir izplatīts, jo master reģistrācija un tēmu pārsūtīšana ir divas dažādas sarunas, un tikai pirmā iet caur master. Zemāk esošais kontrolsaraksts iziet otro sarunu: galapunktu, ko paziņo izdevējs, adresi, kurai abonentam jāspēj piekļūt, un atļauju, kas ļauj pārim runāt. Viss šeit attiecas tikai uz veco ROS 1, kura Noetic atbalsta logs beidzās 2025. gada maijā.

1. solis: pierādiet, ka master savienojums nav tēmas savienojums

Sāciet ar to, kas darbojas, atdalīšanu no tā, kas nedarbojas. Veiksmīgs rostopic list pierāda, ka jūsu čaula sasniedz master XMLRPC portu un ka master zina tēmas; tas neko nesaka par to, vai abonents var sasniegt izdevēju. Trīs zemāk esošās komandas padara šo atšķirību redzamu, un visas ir tikai lasāmas.

echo "$ROS_MASTER_URI"
rostopic list
rostopic info /chatter

rostopic info izvade nosauc izdevēja mezgla URI, kas ir XMLRPC adrese izdevēja resursdatorā. Šo adresi jūsu abonents izsauks nākamo, tāpēc tai jābūt sasniedzamai no jebkurienes, kur darbojas abonents. Ja tā norāda uz saskarni, kas pastāv tikai paša robota LAN tīklā, master meklēšana izdodas, un dati nekad neienāk.

2. solis: izlasiet paziņoto galapunktu no paša mezgla

ROS 1 izvēlas savu paziņoto resursdatora identitāti no ROS_IP vai ROS_HOSTNAME, ja kāds no tiem ir iestatīts, un pretējā gadījumā atgriežas pie paša resursdatora nosaukumu izšķiršanas. Pārbaudiet tā procesa vidi, kas faktiski tika palaists, jo systemd vienība, konteiners vai otra termināļa sesija var saturēt citu vērtību nekā čaula, kurā jūsu tests darbojās.

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

Resursdatora nosaukuma paziņošana darbojas tikai tad, ja katrs partneris izšķir šo nosaukumu uz paredzēto sasniedzamo adresi. Ja šis nosaukums tiek izšķirts tikai paša robota tīklā, darbstacijai tuneļa otrā pusē nav nekāda veida to izmantot, un VPN, kas neiespiež nevienu DNS sufiksu, padara neatbilstību vēl sliktāku. Kad topoloģija ir maršrutēta, ROS_IP iestatīšana uz tuneļa adresi ir mazāka izmaiņa. Ko vien izvēlaties, pierakstiet to abiem galiem, jo izdevējs un abonents, kas nepiekrīt identitātei, apspriedīsies un pēc tam nevarēs savienoties.

Apstājieties šeit, ja paziņotais URI izmanto adresi, uz kuru neviens partneris nevar maršrutēt. Nekāds ugunsmūra darbs nelabos nosaukumu, kas tiek izšķirts uz nepareizo saskarni.

3. solis: padariet paziņoto adresi izšķiramu un maršrutētu

Ar URI rokā pārbaudiet sasniedzamību no abonenta resursdatora, nevis no robota. TCPROS ports tiek izvēlēts sarunu laikā, tāpēc noderīgais agrīnais tests ir XMLRPC ports, un noderīgais vēlīnais tests ir izveidotā ligzda. Maršruts, kas pastāv tikai vienā virzienā, ir izplatīta kļūme maršrutētos VPN, un atgriešanās ceļš ir tikpat svarīgs kā ceļš uz priekšu.

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

Maršrutēta TUN saskarne pārvadā šīs IP sarunas, nepaplašinot robota Ethernet segmentu, ko parasti vēlas attālināts operators. Ja kaut kas stekā ir atkarīgs no apraides vai multicast, šī prasība ir jāizvērtē atsevišķi; tuneļa pārvēršana par TAP, lai apmierinātu vienu rīku, paplašina tīklu katram dalībniekam.

Apstājieties šeit, ja trūkst maršruta vai atgriešanās ceļa. Izdevējam, kas atbild savā resursdatorā, bet nav sasniedzams no darbstacijas, ir maršrutēšanas problēma, nevis ROS problēma.

4. solis: atļaujiet partneru sarunu un novērojiet vienu tēmu

Atveriet tikai tos portus, kas nepieciešami apspriestajai sarunai, un ierobežojiet katru noteikumu ar paziņotajiem dalībniekiem. Master klausītājs nav tēmu kravas retranslators, tāpēc atļaujot tikai to, izdevēja galapunkts paliek aizvērts. Turiet ROS klausītājus privātā VPN robežā, nevis pakļaujiet tos publiskajam internetam.

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

Novērojiet vienu nekaitīgu tēmu no īstā izdevēja līdz īstajam abonentam un apstipriniet gan paziņoto galapunktu, gan atbildes ceļu. Viens ziņojums pierāda, ka ceļš darbojas; stabils ātrums pierāda, ka tas paliek atvērts. Turiet izpildmehānismu vadību un drošības pārbaudes ārpus šā tikai tīkla testa, jo darbojoša tēma nesertificē darbojošu robotu. Pierakstiet ROS versiju un novēroto galapunktu pāri, lai nākamā persona varētu atšķirt topoloģijas izmaiņu no regresijas.

Kontrolsaraksts ir pabeigts, kad paziņotais URI ir sasniedzams no abonenta, apspriestais ports ir atvērts tikai tam partnerim, viena paziņota tēma plūst un vides vērtības ir pierakstītas abiem resursdatoriem. Vecā ROS 1 šajā jomā nesaņems labojumus, tāpēc pieraksts ir tā daļa, kas turpina darboties pēc tam, kad cilvēki nomainās.

Saistītie raksti