ROS2 vs ROS1. Instalación de ROS2 en Ubuntu 18.04

ROS (sistema de operación robótica) con confianza ocupa una posición de liderazgo en los estándares de la robótica. En palabras de un político famoso, "no solo todo" ya lo está usando.
En este artículo, intentaremos echar un vistazo a la siguiente etapa del desarrollo de ROS: el sistema ROS2, adecuado para desarrolladores más "elegantes". Comparemos ambos sistemas en términos generales y, al mismo tiempo, instale ROS2 en Ubuntu 18.04.



* imagen de www.theconstructsim.com
Se utilizará un modelo ligeramente desactualizado como configuración básica de la PC: Intel NUC (5i5RYK), 4 GB de RAM, SSD M.2 120 Gb. El rendimiento de NUC es suficiente "para los ojos" para propósitos de ROS, pero las tarjetas de un solo tablero (frambuesa, odroid, jetson) no se consideran deliberadamente, porque cada una de ellas tiene sus propios detalles. Se supone que Ubuntu 18.04 (recomendado para usar con ROS) ya está instalado.

Introducción.


En la última década, ROS (ROS1) ha crecido y ha crecido varias veces. Actualmente,
tiene una enorme lista de paquetes, donde cada paquete resuelve el problema parcial o
completamente, lo que elimina el concepto de la invención de la rueda nuevamente. Los paquetes creados por la comunidad han llevado a la creación de un enfoque completamente nuevo de la robótica y al llenado inteligente propuesto para los sistemas existentes.

Limitaciones de ROS1.


A pesar de que ROS1 dio cierta libertad de comunicación con componentes complejos de hardware y software, existen algunas dificultades asociadas con el uso de ROS1 en el producto final. Estas dificultades comienzan a aparecer cuando hay toda una flota de robots heterogéneos (robots móviles, manipuladores robóticos, etc.).
Establecer una relación entre ellos es bastante difícil debido a las limitaciones arquitectónicas de ROS1.
La primera limitación es que ROS1 no es compatible con el concepto multimaestro.
La segunda limitación de ROS1 es que, a pesar del hecho de que los nodos pueden comunicarse entre sí sin problemas, no hay una forma segura en esta comunicación. Cualquier persona que tenga la capacidad de conectarse al maestro (nodo maestro) puede acceder a los temas y luego explotarlos o modificarlos. Por lo tanto, el objetivo principal de ROS1 es probar el concepto o prototipo con fines científicos.
Y el tercero, quizás la principal limitación de ROS1 es que este sistema no es un sistema en tiempo real. Esto lleva a retrasos en la recepción de datos y su pérdida.
Todas las desventajas anteriores empujaron a la creación de ROS2.

¿Cuáles son los beneficios de ROS2?


- le permite establecer conexiones seguras entre los componentes del sistema (nodos)
- la interacción es en tiempo real
- se simplifica la conexión de varios robots en una red
- se mejora la calidad de la comunicación entre nodos
- el nivel de arquitectura ROS se implementa directamente en el hardware
- se utilizan los paquetes más recientes actualizaciones (ROS1 no se actualiza con tanta frecuencia).

ROS2 sigue el estándar de la industria e implementa la interacción en tiempo real a través del llamado concepto DDS (Servicios de datos distribuidos).

Versiones de ROS2

.
La primera versión estable oficial de ROS2 se lanzó en diciembre de 2017. La distribución se llamaba "Apalone ardiente". Luego hubo un lanzamiento en junio de 2018, con el nombre "Bouncy Bolson". Crystal Clemmys apareció en diciembre de 2018. Dashing Diademata (versión actual) en mayo de 2019. Como puede ver, las distribuciones se actualizan con bastante alegría y, con suerte, el alfabeto es suficiente por primera vez.

Soporte del sistema operativo

.
ROS2 admite (si hablamos de soporte oficial) Linux, Windows, macOS y capas del sistema operativo de sistemas operativos en tiempo real (RTOS), ROS1 solo Linux y macOS.
Soporte de sistema operativo más detallado:


Entonces, ¿por qué necesitas ROS2?


ROS2 utiliza los mismos principios operativos que ROS1. Al mismo tiempo, ROS2 no es parte de ROS1. ROS2 fue creado para superar los límites de sus compañeros mediante el uso de nuevas dependencias y herramientas.
A diferencia de ROS1, cuya pila está escrita en C ++, y las bibliotecas cliente en C ++ y Python, ROS-2 también usa el lenguaje C. Se introduce un nivel independiente escrito en C que interactúa con las bibliotecas cliente ROS2 como rclcpp, rclpy y rcljava.

ROS2 admite mejor las configuraciones de red e implementa conexiones confiables.
ROS2 también ya no utiliza el concepto de nodelets (http://wiki.ros.org/nodelet) y admite la capacidad de inicializar múltiples nodos al mismo tiempo (inicialización multinodo). A diferencia de ROS1, otra característica distintiva de ROS2 es la capacidad de rastrear el estado de un nodo y recibir mensajes si se ha agregado o eliminado un nodo o tema. Esto se puede usar para crear sistemas tolerantes a fallas.

Cambios que han ocurrido en ROS2 en comparación con ROS1:


Instalar ROS2

.
Entonces, instalaremos desde las fuentes la distribución actual de Dashing Diademata (dashing) en Ubuntu 18.04

Establecer el medio ambiente.


$ 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


Añadir repositorios 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'


Instale las herramientas de desarrollador 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


Cree un espacio de trabajo 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

Tomará un poco de tiempo.

Instalar dependencias usando 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 todo salió bien y aparece la entrada "Todos los rosdeps necesarios instalados con éxito" en el terminal, puede continuar con el siguiente paso.

Recopilamos el código, instalamos colcon.


En ROS1, los paquetes fueron recolectados usando la herramienta catkin. ROS2 usa colcon (una utilidad que incluye catkin_make, catkin_make_isolated, catkin_tools y ament_tools). colcon puede recolectar paquetes ROS1 y paquetes ROS2. Después del último comando, puedes ir a tomar té con seguridad, porque La instalación puede demorar aproximadamente una hora. Una vez que se complete con éxito, aproximadamente la siguiente información sobre la instalación exitosa aparecerá en el terminal:
$ sudo apt install python3-colcon-common-extensions
$ cd ~/ros2_ws/
$ colcon build --symlink-install






Configuración del entorno para ROS2 (entorno).


Para no ingresar el comando largo 'source ~ / ros2_ws / install / local_setup.bash' cada vez que inicie ROS en el terminal, agregue alias a bashrc:
$ sudo gedit ~/.bashrc

Luego, agregue la línea al final del archivo:
alias initros2='source ~/ros2_ws/install/local_setup.bash

Guardar, salga del archivo y vuelva a leerlo con el comando (para no Reiniciar el sistema):
$ source ~/.bashrc

Verifique el funcionamiento de ROS2.


1er terminal: Estos comandos inician el nodo parlante. 2do terminal: Aquí, respectivamente, se inicia el nodo de "escucha". Visualmente, ambos nodos se ven más o menos así: También puede ver los temas generados por los nodos en el tercer terminal: Para resumir. ROS2 se revisó en comparación con ROS1, se demostró el procedimiento de instalación de ROS2 (Dashing Diademata (dashing)) en Ubuntu 18.04.
$ initros2
$ ros2 run demo_nodes_cpp talker




$ initros2
$ ros2 run demo_nodes_py listener










All Articles