Verteilter ROS-Bohrer, Konfiguration der Kommunikation zwischen mehreren Geräten

1. Übersicht

Die vorherigen Vorgänge, die wir durchgeführt haben, wurden alle auf einem einzigen Gerät ausgeführt, d. h. das Öffnen mehrerer Terminals, das Starten von Knoten auf verschiedenen Terminals und andere damit verbundene Vorgänge. Hier verwenden wir zwei Geräte zur Steuerung, eine virtuelle Maschine und ein unbemanntes Fahrzeug. (Verwenden Sie VNC Viewer zum Verbinden, es kann auch als virtuelle Linux-Maschine betrachtet werden)
VNC Viewer Wenn Sie interessiert sind, können Sie sich Folgendes ansehen: Remote-Verbindung VNC-Viewer und WinSCP-Software für sichere Übertragung

2. Installieren Sie das Chrony-Paket und den SSH-Server

2.1. Einführung

Chrony ist ein Ersatz für das Netzwerkzeitprotokoll NTP (Network Time Protocol) , mit dem Uhren genauer und schneller synchronisiert werden können. Herkömmliches NTP benötigt mehrere Stunden, Chrony benötigt jedoch nur Sekunden oder Millisekunden, um die Zeitsynchronisierung abzuschließen.
Die Installation dieses Zeitsynchronisierungsdienstes ist sehr sinnvoll, da die Betriebsumgebung jedes Geräts unterschiedlich ist und die lokale Uhr möglicherweise inkonsistent ist. Obwohl dies korrigiert wurde, kann es nach einiger Zeit wieder inkonsistent werden. Dies gilt beispielsweise für verteilte Architekturen , es wird zu schlechten Ergebnissen führen. Wir benötigen unterschiedliche Geräte, um zusammenzuarbeiten, also müssen wir die Zeit vereinheitlichen.

Chrony besteht aus zwei Programmen, chronyd und chronyc.
chronyd
ist ein Daemon-Prozess, der im Hintergrund läuft. Er wird verwendet, um die Systemuhr und den Uhrenserver im Kernel zu synchronisieren, die Geschwindigkeit zu bestimmen, mit der der Computer die Zeit erhöht oder verkürzt, und dies auszugleichen.
chronyc bietet eine Benutzeroberfläche zur Überwachung der Leistung und zur Durchführung verschiedener Konfigurationen. Es kann auf dem von der Chronyd-Instanz gesteuerten Computer oder auf einem anderen Remote-Computer ausgeführt werden.

OpenSSH ist eine kostenlose Open-Source-Implementierung des SSH-Protokolls. Zu seinen Funktionen gehören: Implementierung des SSH-Protokolls, das eine sichere Verbindung zwischen dem lokalen Computer und dem Remote-Server herstellen, einen sicheren Übertragungskanal bereitstellen und die Sicherheit der Datenübertragung schützen kann .

2.2. Installation

Installieren Sie das Chrony-Paket und den SSH-Server jeweils auf den beiden Geräten, um eine Synchronisierung zu erreichen.
Sudo apt-get install chrony openssh-server

Geben Sie die Befehle ifconfig bzw. hostname ein, um die IP-Adresse und den Hostnamen der virtuellen Maschine (Host) herauszufinden.

192.168.1.128 HERR

Unbemanntes Fahrzeug (Sklave)

192.168.1.11 jetson-desktop

 2.3. Hosts ändern

Ändern Sie die Hosts-Datei und schreiben Sie sowohl IPs als auch Hostnamen hinein.
Fügen Sie allen Benutzern Schreibberechtigungen hinzu: sudo chmod a+w /etc/hosts.
Ändern Sie die Hosts-Datei: gedit /etc/hosts

192.168.1.128 YAB
192.168.1.11 jetson-desktop

Geben Sie nach der Änderung die folgenden Befehle auf beiden Geräten ein, um das Netzwerk neu zu starten und die Kommunikation zwischen den beiden Geräten herzustellen:
sudo /etc/init.d/networking restart
Bestätigen Sie, ob der Dienst gestartet ist
ps -e | grep ssh
kann auch den Host des anderen anpingen Namen Testen Sie, ob es gepingt werden kann. Wenn es gepingt werden kann, gibt es kein Problem.

2.4. Umgebungsvariablen festlegen 

Als nächstes legen Sie die Umgebungsvariablen fest. Am besten fügen Sie sie der
virtuellen Maschine (Host) der .bashrc-Datei hinzu.

echo "export ROS_HOSTNAME=YAB" >> ~/.bashrc
echo "export ROS_MASTER_URI=http://YAB:11311" >>~/.bashrc
source ~/.bashrc

Unbemanntes Fahrzeug (Sklave)

echo "export ROS_HOSTNAME=jetson-desktop" >> ~/.bashrc
echo "export ROS_MASTER_URI=http://YAB:11311" >>~/.bashrc
source ~/.bashrc

2.5. Starten Sie den Knoten

Die virtuelle Maschine (Host) startet den ROS-Verwaltungsknoten Master: Roscore

Das unbemannte Fahrzeug (Slave)
startet die Schildkröte
Rosrun Turtlesim Turtlesim_node
startet die Tastatursteuerung
Rosrun Turtlesim Turtle_teleop_key 

Auf diese Weise kann die Schildkröte auf der Slave-Maschine gesteuert werden. Hier sehen wir auch die Vorteile der Verteilung, die es unabhängigen Knoten ermöglicht, miteinander zu kommunizieren, was großartig ist. Wie nachfolgend dargestellt:

Natürlich kann der oben genannte URI auch IP-Adressen verwenden. Dies hängt von den individuellen Umständen des Einzelnen ab.

3. Bearbeitung verschiedener Netzwerksegmente

Hier kann es vorkommen, dass sie sich nicht im selben Netzwerksegment befinden und daher nicht miteinander kommunizieren können. Hier ist mein Beispiel, wie man das IP-Netzwerksegment in der Virtualisierung ändert.
Mein Computer befindet sich in einem kabelgebundenen Netzwerk und die IP befindet sich im Netzwerksegment 192.168.3.xx.
Virtuelle Maschinen sind im Allgemeinen direkt mit dem physischen Netzwerk verbunden, daher befindet sich die IP-Adresse auch im Netzwerksegment 192.168.3.xx. Die Das unbemannte Fahrzeug verwendet eine drahtlose USB-Netzwerkkarte (Realtek 8188GU Wireless LAN 802.11n USB NIC) , die IP-Adresse lautet 192.168.1.11

Da sich die virtuelle Maschine und das autonome Fahrzeug nicht im selben Netzwerksegment befinden, können sie nicht miteinander kommunizieren. Zu diesem Zeitpunkt müssen wir den „Virtual Network Editor“ verwenden , wie unten gezeigt: 

Klicken Sie nach dem Klicken unten rechts auf „Einstellungen ändern“, wie unten gezeigt:

Es erscheint eine neue VMnet0- Auswahl. Wir klicken auf „Bridge-Modus (Direkte Verbindung der virtuellen Maschine mit dem externen Netzwerk) (B)“ , um Folgendes zu überbrücken: Wählen Sie die drahtlose USB-Netzwerkkarte des unbemannten Fahrzeugs aus . Wie nachfolgend dargestellt: 

Schließlich kommen wir zu den Einstellungen der virtuellen Maschine, klicken auf „Netzwerkadapter“ , „Netzwerkverbindung“, hier wählen wir „Benutzerdefiniert (U): Spezifisches virtuelles Netzwerk“ und wählen das oben konfigurierte VMnet0 aus . Wie nachfolgend dargestellt:

 

Starten Sie das Netzwerk neu: sudo /etc/init.d/networking restart
Wir haben uns gegenseitig auf den beiden Geräten angepingt. Wie erwartet können wir uns gegenseitig anpingen, wie unten gezeigt: 

Supongo que te gusta

Origin blog.csdn.net/weixin_41896770/article/details/134200784
Recomendado
Clasificación