ROS2 vs ROS1. Installation de ROS2 sur Ubuntu 18.04

ROS (Robotic operation system) occupe en toute confiance une position de leader dans les standards de la robotique. Pour reprendre les mots d'un célèbre politicien, «non seulement tout» l'utilise déjà.
Dans cet article, nous allons essayer de jeter un œil à la prochaine étape du développement de ROS - le système ROS2, adapté aux développeurs plus «élégants». Comparons les deux systèmes en termes généraux et installons en même temps ROS2 sur Ubuntu 18.04.



* image de www.theconstructsim.com
Un modèle légèrement obsolète sera utilisé comme configuration de base du PC - Intel NUC (5i5RYK), 4 Go de RAM, SSD M.2 120 Go. Les performances NUC sont suffisantes "pour les yeux" aux fins de ROS, mais les cartes à carte unique (framboise, odroid, jetson) ne sont délibérément pas prises en compte, car chacune a ses propres spécificités. Il est supposé qu'Ubuntu 18.04 (recommandé pour une utilisation avec ROS) est déjà installé.

Introduction.


Au cours de la dernière décennie, le ROS (ROS1) a augmenté et a augmenté à plusieurs reprises. Actuellement,
il a une énorme liste de packages, où chaque package résout le problème partiellement ou
complètement, ce qui élimine à nouveau le concept de l'invention de la roue. Les packages créés par la communauté ont conduit à la création d'une toute nouvelle approche de la robotique et du remplissage intelligent proposé pour les systèmes existants.

Limitations de ROS1.


Malgré le fait que ROS1 a donné une certaine liberté de communication avec des composants matériels et logiciels complexes, il y a quelques difficultés associées à l'utilisation de ROS1 dans le produit final. Ces difficultés commencent à apparaître lorsqu'il existe toute une flotte de robots hétérogènes (robots mobiles, manipulateurs robotiques, etc.).
L'établissement d'une relation entre eux est assez difficile en raison des limites architecturales de ROS1.
La première limitation est que ROS1 ne prend pas en charge le concept multimaître.
La deuxième limitation de ROS1 est que, malgré le fait que les nœuds peuvent communiquer entre eux sans problème, il n'y a aucun moyen sûr dans cette communication. Toute personne ayant la possibilité de se connecter au maître (maître-nœud) peut accéder aux rubriques et ensuite les exploiter ou les modifier. Par conséquent, l'objectif principal de ROS1 est de tester le concept ou le prototype à des fins scientifiques.
Et le troisième, peut-être la principale limitation de ROS1 est que ce système n'est pas un système en temps réel. Cela entraîne des retards dans la réception des données et leur perte.
Tous les inconvénients ci-dessus ont poussé à la création de ROS2.

Quels sont les avantages de ROS2?


- vous permet d'établir des connexions sécurisées entre les composants du système (nœuds)
- l'interaction est en temps réel
- la connexion de plusieurs robots en un seul réseau est simplifiée
- la qualité de la communication entre les nœuds
est améliorée - le niveau de l'architecture ROS est implémenté directement sur le matériel
- les derniers packages sont utilisés mises à jour (ROS1 n'est pas mis à jour aussi souvent).

ROS2 suit la norme de l'industrie et met en œuvre une interaction en temps réel via le concept dit DDS (Data Distributed Services).

Versions de ROS2

.
La première version officielle stable de ROS2 est sortie en décembre 2017. La distribution a été nommée "Ardent Apalone". Puis il y a eu une sortie en juin 2018, sous le nom de "Bouncy Bolson". Crystal Clemmys est apparu en décembre 2018. Dashing Diademata (version actuelle) en mai 2019. Comme vous pouvez le voir, les distributions sont mises à jour assez gaiement et, espérons-le, l'alphabet est suffisant pour la première fois.

Prise en charge du système d'exploitation

.
ROS2 prend en charge (si nous parlons de prise en charge officielle) les couches OS Linux, Windows, macOS et systèmes d'exploitation en temps réel (RTOS), ROS1 uniquement Linux et macOS.
Prise en charge du système d'exploitation plus détaillée:


Alors pourquoi avez-vous besoin de ROS2?


ROS2 utilise les mêmes principes de fonctionnement que ROS1. Dans le même temps, ROS2 ne fait pas partie de ROS1. ROS2 a été créé pour dépasser les limites de ses collègues en utilisant des dépendances et des outils plus récents.
Contrairement à ROS1, dont la pile est écrite en C ++ et les bibliothèques clientes en C ++ et Python, ROS-2 utilise également le langage C. Un niveau indépendant écrit en C est introduit qui interagit avec les bibliothèques clientes ROS2 telles que rclcpp, rclpy et rcljava.

ROS2 prend mieux en charge les configurations réseau et implémente des connexions fiables.
ROS2 n'utilise plus non plus le concept de nodelets (http://wiki.ros.org/nodelet) et prend en charge la possibilité d'initialiser plusieurs nœuds en même temps (initialisation multi-nœuds). Contrairement à ROS1, une autre caractéristique distinctive de ROS2 est la possibilité de suivre l'état d'un nœud et de recevoir des messages si un nœud ou un sujet a été ajouté ou supprimé. Cela peut être utilisé pour créer des systèmes tolérants aux pannes.

Changements survenus dans ROS2 par rapport à ROS1:


Installer ROS2

.
Nous allons donc installer à partir des sources la distribution actuelle de Dashing Diademata (dashing) sur Ubuntu 18.04

Configurez l'environnement.


$ 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


Ajoutez des référentiels ROS2.


$ 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'


Installez les outils de développement ROS.


$ 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


Créez un espace de travail 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

Cela prendra du temps.

Installez les dépendances à l'aide de 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"

Si tout s'est bien passé et que l'entrée «Toutes les rosdeps requises ont été installées avec succès» apparaît dans le terminal, vous pouvez passer à l'étape suivante.

Nous collectons le code, installons colcon.


Dans ROS1, les colis ont été collectés à l'aide de l'outil catkin. ROS2 utilise colcon (un utilitaire qui inclut catkin_make, catkin_make_isolated, catkin_tools et ament_tools). colcon peut collecter à la fois des paquets ROS1 et des paquets ROS2. Après la dernière commande, vous pouvez aller boire du thé en toute sécurité, car L'installation peut prendre environ une heure. Une fois l'opération terminée, les informations suivantes sur l'installation réussie apparaîtront dans le terminal:
$ sudo apt install python3-colcon-common-extensions
$ cd ~/ros2_ws/
$ colcon build --symlink-install






Configuration de l'environnement pour ROS2 (environnement).


Afin de ne pas entrer la commande longue 'source ~ / ros2_ws / install / local_setup.bash' à chaque fois pour lancer ROS dans le terminal, ajoutez un alias à bashrc:
$ sudo gedit ~/.bashrc

Ensuite, ajoutez la ligne à la fin du fichier:
alias initros2='source ~/ros2_ws/install/local_setup.bash

Enregistrer, quittez le fichier et relisez-le avec la commande (afin de ne pas redémarrer le système):
$ source ~/.bashrc

Vérifiez le fonctionnement de ROS2.


1er terminal: Ces commandes démarrent le nœud parlant. 2ème terminal: Ici, respectivement, le nœud «écoute» est lancé. Visuellement, les deux nœuds ressemblent à ceci: Vous pouvez également consulter les rubriques générées par les nœuds dans le 3ème terminal: Pour résumer. ROS2 a été révisé par rapport à ROS1, la procédure d'installation de ROS2 (Dashing Diademata (dashing)) sur Ubuntu 18.04 a été démontrée.
$ initros2
$ ros2 run demo_nodes_cpp talker




$ initros2
$ ros2 run demo_nodes_py listener










All Articles