Launch files en paquetes de C++ ROS 2 Humble – ROS Spainish Tutorial

This tutorial is created by Rosbotics Ambassador 025 Miguel

Rosbotics Ambassador Program https://www.theconstruct.ai/rosbotics-ambassador/)


Que vamos a aprender

  1. Como crear un launch file
  2. Como importar nuestros archivos de tipo launch en un paquete de C++ usando buenas practicas
  3. Como compilar nuestro entorno de ROS 2 Humble
  4. Como ejecutar nuestros launch files

Lista de recursos usados en este post

  1. Usa este rosject: https://api.robotigniteacademy.com/l/5f308d0d/
  2. The Construct: https://app.theconstructsim.com/
  3. Cursos de ROS 2:
    1. Fundamentos de ROS 2 en 5 dias (C++): https://api.robotigniteacademy.com/courses/133

Abrir el rosject:

Para poder seguir al pie de la letra este tutorial , necesitamos tener ROS 2 Humble instalado en nuestro equipo, ademas de un entorno de ROS 2 configurado. Para hacer nuestra vida mas fácil, ya tenemos preparado un rosject preparado: https://api.robotigniteacademy.com/l/5f308d0d/

Solo copiando el rosject (abriendo el enlace de arriba), vas a tener el entorno configurado.

Luego de que el rosject haya sido copiado sin problemas en tu área, podrás ver un botón en rojo que dice  ejecuta. Solo oprime ese botón para poder arrancar el entorno.

 

Crear un paquete de ROS 2 en C++:

Para crear un paquete de ROS 2, necesitas tener un entorno de ROS 2, y para eso, necesitamos una terminal.

Vamos a abrir una terminal oprimiendo el botón de abrir nueva terminal.

Ya estando en la terminal, para poder crear nuestro paquete debemos movernos a la carpeta src de nuestro entorno.

$ cd ros2_ws/src

Y ya estando en la carpeta, podemos crear nuestro paquete con compilación de tipo cmake:

$ ros2 pkg create launch_cmake –build-type ament_cmake –dependencies rclcpp std_msgs

Preparar nuestro paquete para usar archivos tipo launch

Ya que creamos nuestro paquete vamos a entrar y crear una carpeta launch donde vamos a crear nuestros launch files:

$ cd launch_cmake

$ mkdir launch

Ahora ya que no es el punto de este tutorial, vamos a copiar unos nodos que se encuentran en otro paquete de nuestro entorno clonado

$ cp ~/ros2_ws/src/paquete_cpp/src/* src/

y vamos a importar estos nodos en nuestro paquete, para eso debemos oprimir el botón de Editor de código, buscamos nuestro paquete y editamos el archivo CMakeLists.txt

Para poder que nuestro paquete reconozca los nodos vamos a añadir estas lineas de codigo justamente debajo de los find_package(…):

add_executable(publisher src/publisher.cpp)
ament_target_dependencies(publisher rclcpp std_msgs)
install(TARGETS
    publisher
    DESTINATION lib/${PROJECT_NAME}
)
add_executable(subscriber src/subscriber.cpp)
ament_target_dependencies(subscriber rclcpp std_msgs)
install(TARGETS
    subscriber
    DESTINATION lib/${PROJECT_NAME}
)
teniendo eso vamos a crear un archivo en la carpeta launch, el cual se va a llamar launchcpp.launch.py como pueden observar la extensión es .py ya que ROS 2 usa Python 3 como interprete de archivos tipo launch. Con el archivo creado, vamos a llenar de codigo nuestro launch:
import os
from launch import LaunchDescription
from launch_ros.actions import Node
def generate_launch_description():
    return LaunchDescription([
        Node(
            package=’launch_cmake’,
            executable=’publisher’,
            name=’publisher’,
            output=’screen’,
        ),
        Node(
            package=’launch_cmake’,
            executable=’subscriber’,
            output=’screen’,
            name=’subscriber’,
        )
    ])
Ya teniendo nuestro launch file que ejecuta nuestros dos nodos, debemos importarlo en el CMakeList.txt para poder permitir al paquete detectarlo, para eso inmediatamente debajo de lo que pusimos para nuestros nodos, vamos a poner la carpeta donde alojamos los launch files:
install(DIRECTORY
   launch
   DESTINATION share/${PROJECT_NAME}
)

como podemos observar, en este ultimo trozo de código estamos diciéndole a nuestro paquete que necesitamos tener disponible en la carpeta compartida share todos los archivos que se encuentren en la carpeta launch.

Compilar entorno y ejecutar launch file

Por ultimo, debemos comprobar que todo salió bien, para eso vamos a abrir de nuevo la terminal y compilamos nuestro entorno:

$ cd ~/ros2_ws

$ colcon build –packages-select launch_cmake

$ source install/setup.bash

Y ejecutamos nuestro launch file:

$ ros2 launch launch_cmake launchcpp.launch.py

Video Tutorial

 

Topics: C++ | ros2
Masterclass 2023 batch2 blog banner

Check Out These Related Posts

129. ros2ai

129. ros2ai

I would like to dedicate this episode to all the ROS Developers who believe that ChatGPT or...

read more

0 Comments

Submit a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Pin It on Pinterest

Share This