This tutorial is created by Rosbotics Ambassador 025 Miguel
Rosbotics Ambassador Program https://www.theconstruct.ai/rosbotics-ambassador/)
Que vamos a aprender
- Como crear un launch file
- Como importar nuestros archivos de tipo launch en un paquete de C++ usando buenas practicas
- Como compilar nuestro entorno de ROS 2 Humble
- Como ejecutar nuestros launch files
Lista de recursos usados en este post
- Usa este rosject: https://api.robotigniteacademy.com/l/5f308d0d/
- The Construct: https://app.theconstructsim.com/
- Cursos de ROS 2:
- 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(TARGETSpublisherDESTINATION lib/${PROJECT_NAME})add_executable(subscriber src/subscriber.cpp)ament_target_dependencies(subscriber rclcpp std_msgs)install(TARGETSsubscriberDESTINATION lib/${PROJECT_NAME})
import osfrom launch import LaunchDescriptionfrom launch_ros.actions import Nodedef 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’,)])
install(DIRECTORYlaunchDESTINATION 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
0 Comments