Este repositorio contiene un ejemplo de un sistema ROS 2 desarrollado como trabajo final para la asignatura de Sistemas Operativos de Robots en la Universidad Carlos III de Madrid (UC3M). El proyecto está estructurado en el workspace ros2_ws
y la carpeta rosbag_files
. A continuación, se detallan los nodos y la funcionalidad del sistema, así como las instrucciones para ejecutarlo.
ros2_ws
: Contiene el espacio de trabajo ROS 2 con los paquetes necesarios.rosbag_files
: Carpeta para almacenar archivos de registro ROSBag.
-
interaccion: Contiene el paquete principal con todos los nodos y launchers necesarios.
-
interaccion_interfaces: Contiene los mensajes y servicios personalizados utilizados en el sistema.
- Clona este repositorio en tu sistema:
git clone https://github.com/fervh/ROS-2-example-workspace.git
- Navega al directorio del workspace:
cd ROS-2-example-workspace/ros2_ws
- Compila el workspace usando colcon desde la carpeta del workspace:
colcon build
- Recarga las variables de entorno:
source install/setup.bash
-
Ejecuta los nodos con el launcher de tu elección: a. launcher.py (Ventana única):
ros2 launch interaccion launcher.py
b. launcher_all.py (Ventanas separadas)
Nota: Se ha utilizado la aplicación Konsole en el launcher. Asegúrate de tenerla instalada en tu sistema.
ros2 launch interaccion launcher_all.py
-
informacion_personal_nodo:
- Solicita por teclado el nombre, la edad y los posibles idiomas que habla un usuario inventado. Puede introducirse información de varios usuarios.
-
emocion_usuario_nodo:
- Similar al anterior, solicita indefinidamente por teclado y en bucle la emoción expresada por el usuario.
-
posicion_usuario_nodo:
- Pide por teclado las coordenadas del usuario en el espacio. Se pueden introducir tantas veces como se desee.
-
empaquetador_nodo:
- Combina la información recibida por los tres nodos anteriores en un único mensaje de ROS. No enviará el mensaje hasta que se reciban todos los campos necesarios. Si se reciben varios mensajes de un tipo antes de recibir todos los campos, se utilizará el último mensaje recibido.
-
dialogo_nodo:
- Muestra por la terminal cada mensaje recibido del nodo empaquetador.