Δύο κόμβοι ROS 2 στα αντίθετα άκρα ενός VPN μπορούν να απαριθμούν τα θέματα του άλλου και παρ' όλα αυτά να μην παραδίδουν ούτε ένα μήνυμα. Η ανακάλυψη και τα δεδομένα χρήστη είναι ξεχωριστές ανταλλαγές με ξεχωριστές διαδρομές, και ένας διακομιστής ανακάλυψης δεν αναμεταδίδει ωφέλιμα φορτία. Το να ελέγξετε το ένα και να υποθέσετε το άλλο είναι πώς οι ομάδες καταλήγουν να αντικαθιστούν το middleware όταν η σήραγγα απλώς δεν μετέφερε ποτέ τα δεδομένα. Η παρακάτω διαδικασία χωρίζει τα δύο αποτελέσματα πριν αντικατασταθεί οτιδήποτε.

Τι μεταφέρει πραγματικά ο διακομιστής ανακάλυψης

Στο Fast DDS ένα Discovery Server διανέμει πληροφορίες για τελικά σημεία: ποιος δημοσιεύει, ποιος εγγράφεται και τι QoS περιμένει το καθένα. Μόλις οι ομότιμοι γνωριστούν, τα δεδομένα χρήστη ταξιδεύουν απευθείας μεταξύ τους αντί μέσω εκείνου του διακομιστή. Το να φτάσετε στον διακομιστή αποδεικνύει ότι ο μεσολαβητής των γνωριμιών απαντά, τίποτα παραπάνω. Ένα δρομολογημένο VPN εξακολουθεί να χρειάζεται λειτουργική διαδρομή και προς τις δύο κατευθύνσεις μεταξύ των διευθύνσεων που διαφημίζουν οι ομότιμοι.

Αυτή η διάκριση εξηγεί και τις μερικές αποτυχίες, όπου οι υπάρχοντες ομότιμοι συνεχίζουν να ανταλλάσσουν δεδομένα ενώ η νέα ανακάλυψη σταματά να λειτουργεί. Αντιμετωπίστε τις ως δύο ξεχωριστές έρευνες.

Διαβάστε το RMW που χρησιμοποιούν πραγματικά οι κόμβοι

Το ROS 2 μπορεί να φορτώσει διαφορετικό middleware, και μια μεταβλητή που εξάγεται στο κέλυφός σας δεν φτάνει σε διεργασίες που ξεκίνησαν αλλού. Ρωτήστε το σύστημα που εκτελείται αντί για το ιστορικό του τερματικού σας.

printenv RMW_IMPLEMENTATION
ros2 doctor --report | head -n 20

Μια μη ορισμένη μεταβλητή συνήθως σημαίνει την εγκατεστημένη προεπιλογή, η οποία μπορεί να διαφέρει μεταξύ μηχανημάτων στο ίδιο πείραμα. Η αναφορά ονομάζει επίσης τη διανομή και το middleware που χρησιμοποιούνται, οπότε συγκρίνετέ τα και στις δύο πλευρές της σήραγγας πριν υποθέσετε ότι ταιριάζουν. Ο δαίμονας γραμμής εντολών του ROS αποθηκεύει προσωρινά την κατάσταση, οπότε επανεκκινήστε τον μετά την αλλαγή του περιβάλλοντος αντί να αφήσετε έναν παλιό δαίμονα να απαντά για την παλιά διαμόρφωση. Καταγράψτε τη διανομή και το RMW και των δύο κεντρικών υπολογιστών στις σημειώσεις δοκιμής όσο η συνεδρία είναι ανοιχτή.

Δοκιμάστε την ανακάλυψη και τα δεδομένα ως δύο αποτελέσματα

Επιλέξτε ένα ακίνδυνο θέμα και μετρήστε τη γνωριμία ξεχωριστά από την παράδοση. Η εντολή info απαριθμεί τελικά σημεία και QoS, ενώ η echo αποδεικνύει αν ένα μήνυμα περνά πράγματι τον σύνδεσμο.

ros2 topic info /chatter --verbose
ros2 topic echo /chatter --once

Η εμφάνιση τελικών σημείων στην έξοδο του info είναι αποτέλεσμα ανακάλυψης. Η άφιξη ενός μηνύματος στον συνδρομητή είναι αποτέλεσμα μεταφοράς, και μόνο το δεύτερο ασκεί τη διαδρομή που χρειάζεται η εφαρμογή. Όταν η ανακάλυψη λειτουργεί και η echo λήγει, εξετάστε τις διαφημιζόμενες διευθύνσεις και τη διαδρομή επιστροφής αντί για την υπηρεσία ανακάλυψης. Εκτελέστε και τις δύο εντολές από κάθε κεντρικό υπολογιστή, επειδή μια ασύμμετρη διαδρομή VPN συχνά αποκαλύπτεται μόνο από τη μία πλευρά.

Αλλάξτε μία εξάρτηση κάθε φορά

Όταν αποτυγχάνει η διαδρομή δεδομένων, αποφύγετε να αλλάξετε middleware, λειτουργία ανακάλυψης και μέγεθος μηνύματος στην ίδια συνεδρία, αφού κανένα αποτέλεσμα δεν μπορεί να αποδοθεί μετά. Το Zenoh RMW είναι μια νόμιμη εναλλακτική, αλλά ο δρομολογητής του γίνεται άλλη μια εξάρτηση που πρέπει να είναι προσβάσιμη μέσω της σήραγγας.

export RMW_IMPLEMENTATION=rmw_zenoh_cpp
ros2 run rmw_zenoh_cpp rmw_zenohd

Υπό αυτό το RMW ο δρομολογητής μεταφέρει την ανακάλυψη στην προεπιλεγμένη διάταξη Jazzy, και η ανακάλυψη multicast είναι απενεργοποιημένη εκεί, οπότε η εξάρτηση ανήκει στις σημειώσεις σας και όχι σε μια υπόθεση δανεισμένη από άλλο middleware. Κρατήστε το φορτίο εργασίας σταθερό ενώ αλλάζετε μία ρύθμιση, μετά επαναλάβετε τη δοκιμή echo και καταγράψτε κατεύθυνση, ρυθμό μηνυμάτων και συνθήκες συνδέσμου. Εκτελέστε τη σύγκριση δύο φορές για να ξεχωρίσετε μια πραγματική βελτίωση από μια τυχερή επανασύνδεση. Αν μια αλλαγή βελτιώνει την ανακάλυψη ενώ η παράδοση μένει ίδια, μετακινήσατε την υπηρεσία γνωριμιών, όχι τη διαδρομή δεδομένων.

Σχετικά άρθρα