ROS2 vs ROS1. Installation von ROS2 unter Ubuntu 18.04

ROS (Robotic Operation System) nimmt in den Standards der Robotik sicher eine führende Position ein. Nach den Worten eines berühmten Politikers wird es bereits von „nicht nur allem“ verwendet.
In diesem Artikel werden wir versuchen, einen Blick auf die nächste Stufe der ROS-Entwicklung zu werfen - das ROS2-System, das für „schlankere“ Entwickler geeignet ist. Vergleichen wir beide Systeme allgemein und installieren gleichzeitig ROS2 unter Ubuntu 18.04.



* Bild von www.theconstructsim.com
Als Basis-PC-Konfiguration wird ein leicht veraltetes Modell verwendet - Intel NUC (5i5RYK), 4 GB RAM, SSD M.2 120 GB. Die NUC-Leistung reicht für ROS-Zwecke "für die Augen" aus, aber Single-Board-Karten (Himbeere, Odroid, Jetson) werden bewusst nicht berücksichtigt, da jede von ihnen ihre eigenen Besonderheiten hat. Es wird davon ausgegangen, dass Ubuntu 18.04 (empfohlen für die Verwendung mit ROS) bereits installiert ist.

Einführung.


In den letzten zehn Jahren ist ROS (ROS1) gewachsen und mehrmals gewachsen. Derzeit hat
er eine riesige Liste von Paketen, in denen jedes Paket das Problem entweder teilweise oder
vollständig löst , wodurch das Konzept der Erfindung des Rades wieder entfällt. Die von der Community erstellten Pakete haben zur Schaffung eines völlig neuen Ansatzes für die Robotik und der vorgeschlagenen intelligenten Befüllung bestehender Systeme geführt.

Einschränkungen von ROS1.


Trotz der Tatsache, dass ROS1 eine gewisse Kommunikationsfreiheit mit komplexen Hardware- und Softwarekomponenten bietet, sind mit der Verwendung von ROS1 im Endprodukt einige Schwierigkeiten verbunden. Diese Schwierigkeiten treten auf, wenn es eine ganze Flotte heterogener Roboter gibt (mobile Roboter, Robotermanipulatoren usw.).
Aufgrund der architektonischen Einschränkungen von ROS1 ist es ziemlich schwierig, eine Beziehung zwischen ihnen herzustellen.
Die erste Einschränkung besteht darin, dass ROS1 das Multimaster-Konzept nicht unterstützt.
Die zweite Einschränkung von ROS1 besteht darin, dass es trotz der Tatsache, dass Knoten problemlos miteinander kommunizieren können, keinen sicheren Weg in dieser Kommunikation gibt. Jeder, der die Möglichkeit hat, eine Verbindung zum Master (Master-Knoten) herzustellen, kann auf die Themen zugreifen und sie dann entweder ausnutzen oder ändern. Daher besteht der Hauptzweck von ROS1 darin, das Konzept oder den Prototyp für wissenschaftliche Zwecke zu testen.
Und die dritte, vielleicht Hauptbeschränkung von ROS1 besteht darin, dass dieses System kein Echtzeitsystem ist. Dies führt zu Verzögerungen beim Empfang von Daten und deren Verlust.
Alle oben genannten Nachteile haben zur Schaffung von ROS2 geführt.

Was sind die Vorteile von ROS2?


- Ermöglicht den Aufbau sicherer Verbindungen zwischen Systemkomponenten (Knoten)
- Die Interaktion erfolgt in Echtzeit
- Die Verbindung mehrerer Roboter zu einem Netzwerk wird vereinfacht
- Die Qualität der Kommunikation zwischen Knoten
wird verbessert - Die ROS-Architekturebene wird direkt auf der Hardware implementiert
- Die neuesten Pakete werden verwendet Updates (ROS1 wird nicht so oft aktualisiert).

ROS2 folgt dem Industriestandard und implementiert Echtzeitinteraktion über das sogenannte DDS-Konzept (Data Distributed Services).

ROS2-Versionen

.
Die erste offizielle stabile Version von ROS2 wurde im Dezember 2017 veröffentlicht. Die Distribution wurde "Ardent Apalone" genannt. Dann gab es im Juni 2018 eine Veröffentlichung mit dem Namen "Bouncy Bolson". Crystal Clemmys erschien im Dezember 2018. Dashing Diademata (aktuelle Version) im Mai 2019. Wie Sie sehen können, werden die Distributionen recht fröhlich aktualisiert, und hoffentlich reicht das Alphabet zum ersten Mal aus.

Betriebssystemunterstützung

.
ROS2 unterstützt (wenn wir über offizielle Unterstützung sprechen) Linux-, Windows-, MacOS- und RTOS-Betriebssystemebenen (Real-Time Operating Systems), ROS1 nur Linux und MacOS.
Detailliertere Betriebssystemunterstützung:


Warum brauchst du ROS2?


ROS2 verwendet dieselben Funktionsprinzipien wie ROS1. Gleichzeitig ist ROS2 nicht Teil von ROS1. ROS2 wurde entwickelt, um mithilfe neuerer Abhängigkeiten und Tools die Grenzen seines Kollegen zu überschreiten.
Im Gegensatz zu ROS1, dessen Stapel in C ++ geschrieben ist, und Client-Bibliotheken in C ++ und Python verwendet ROS-2 auch die C-Sprache. Es wird eine in C geschriebene unabhängige Ebene eingeführt, die mit ROS2-Client-Bibliotheken wie rclcpp, rclpy und interagiert rcljava.

ROS2 unterstützt Netzwerkkonfigurationen besser und implementiert zuverlässige Verbindungen.
ROS2 verwendet auch nicht mehr das Konzept der Knoten (http://wiki.ros.org/nodelet) und unterstützt die Möglichkeit, mehrere Knoten gleichzeitig zu initialisieren (Multinode-Initialisierung). Im Gegensatz zu ROS1 ist ein weiteres Unterscheidungsmerkmal von ROS2 die Möglichkeit, den Status eines Knotens zu verfolgen und Nachrichten zu empfangen, wenn ein Knoten oder ein Thema hinzugefügt oder gelöscht wurde. Dies kann verwendet werden, um fehlertolerante Systeme zu erstellen.

Änderungen, die in ROS2 im Vergleich zu ROS1 aufgetreten sind:


Installieren Sie ROS2

.
Daher installieren wir aus den Quellen die aktuelle Distribution von Dashing Diademata (dashing) unter Ubuntu 18.04

Richten Sie die Umgebung ein.


$ sudo locale-gen en_US en_US.UTF-8
$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
$ export LANG=en_US.UTF-8


Fügen Sie ROS2-Repositorys hinzu.


$ sudo apt update && sudo apt install curl gnupg2 lsb-release
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc |
sudo apt-key add -
$ sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'


Installieren Sie die ROS Developer Tools.


$ sudo apt update && sudo apt install -y build-essential cmake git
python3-colcon-common-extensions python3-lark-parser python3-pip
python-rosdep python3-vcstool wget
$ python3 -m pip install -U argcomplete flake8 flake8-blind-except
flake8-builtins flake8-class-newline flake8-comprehensions flake8-
deprecated flake8-docstrings flake8-import-order flake8-quotes
pytest-repeat pytest-rerunfailures pytest pytest-cov pytest-runner
setuptools
$ sudo apt install --no-install-recommends -y libasio-dev libtinyxml2-dev


Erstellen Sie einen Arbeitsbereich ROS2.


$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws
$ wget https://raw.githubusercontent.com/ros2/ros2/release-latest/ros2.repos
$ vcs import src < ros2.repos

Es wird einige Zeit in Anspruch nehmen.

Installieren Sie Abhängigkeiten mit rosdep.


$ sudo rosdep init
$ rosdep update
$ rosdep install --from-paths src --ignore-src --rosdistro dashing -y --skip-keys "console_bridge fastcdr fastrtps libopensplice67 libopensplice69
rti-connext-dds-5.3.1 urdfdom_headers"

Wenn alles gut gegangen ist und der Eintrag "Alle erforderlichen Rosdeps erfolgreich installiert" im Terminal angezeigt wird, können Sie mit dem nächsten Schritt fortfahren.

Wir sammeln den Code, installieren colcon.


In ROS1 wurden Pakete mit dem Catkin-Tool gesammelt. ROS2 verwendet colcon (ein Dienstprogramm, das catkin_make, catkin_make_isolated, catkin_tools und ament_tools enthält). colcon kann sowohl ROS1-Pakete als auch ROS2-Pakete sammeln. Nach dem letzten Befehl können Sie sicher Tee trinken gehen, weil Die Installation kann ungefähr eine Stunde dauern. Nach erfolgreichem Abschluss werden im Terminal ungefähr die folgenden Informationen zur erfolgreichen Installation angezeigt:
$ sudo apt install python3-colcon-common-extensions
$ cd ~/ros2_ws/
$ colcon build --symlink-install






Einrichten der Umgebung für ROS2 (Umgebung).


Um den langen Befehl 'source ~ / ros2_ws / install / local_setup.bash' nicht jedes Mal einzugeben, um ROS im Terminal zu initiieren, fügen Sie einen Alias ​​zu bashrc hinzu: Fügen Sie als
$ sudo gedit ~/.bashrc

Nächstes die Zeile am Ende der Datei hinzu:
alias initros2='source ~/ros2_ws/install/local_setup.bash

Speichern, beenden Sie die Datei und lesen Sie sie erneut mit dem Befehl (um dies nicht zu tun) System neu starten):
$ source ~/.bashrc

Überprüfen Sie den Betrieb von ROS2.


1. Terminal: Diese Befehle starten den sprechenden Knoten. 2. Terminal: Hier wird jeweils der "Abhör" -Knoten gestartet. Optisch sehen beide Knoten ungefähr so ​​aus: Sie können sich auch die Themen ansehen, die von den Knoten im 3. Terminal generiert wurden: Zusammenfassend. ROS2 wurde im Vergleich zu ROS1 überprüft, das Installationsverfahren für ROS2 (Dashing Diademata (dashing)) unter Ubuntu 18.04 wurde demonstriert.
$ initros2
$ ros2 run demo_nodes_cpp talker




$ initros2
$ ros2 run demo_nodes_py listener










All Articles