SinfonIA Robot Toolkit 🚀
Bienvenido al toolkit de SinfonIA, donde convertimos a tu robot en un verdadero héroe digital. 💡 Si alguna vez has soñado con un asistente robótico que escuche, vea, navegue y hasta hable contigo, este toolkit es justo lo que necesitas.
Este repositorio implementa un conjunto de herramientas diseñadas para facilitar la integración de robots Pepper con ROS. A través de distintos módulos, permite controlar visión, audio, navegación y movimiento de manera sencilla y eficiente. Todo está estructurado en C++ y organizado en carpetas para que puedas encontrar rápidamente lo que necesitas.
🔹 Código Fuente y Cabeceras: El corazón del toolkit, donde la magia sucede. Encontrarás la implementación principal en src y las definiciones en include. Se incluyen módulos para gestionar audio, visión, navegación y movimiento.
🔹 Construcción y Dependencias: Gracias a CMakeLists.txt y catkin, el toolkit se construye fácilmente y maneja dependencias como ROS y OpenCV.
🔹 Lanzamiento y Configuración: La carpeta launch contiene configuraciones listas para ejecutar el toolkit en distintas condiciones (Ethernet, WLAN, con o sin odometría).
🔹 Scripts y Automatización: ¿Necesitas configurar la red de tu robot o gestionar su conexión? La carpeta home_scripts y la documentación en Scripts.md tienen todo lo necesario.
En pocas palabras, este toolkit es la clave para desarrollar e implementar aplicaciones robóticas sin complicaciones. ¡Dale vida a tu robot con SinfonIA! 🤖✨
Servicios importantes del Toolkit!
El Toolkit de Pepper utiliza servicios ROS para activar, configurar y desactivar distintos módulos del robot. Cada servicio recibe una solicitud con parámetros específicos y responde con información sobre su estado o configuración.
Los mensajes utilizados en estos servicios están definidos en el repositorio 📂 robot_toolkit_msgs.
🎤 Servicio de Audio (audio_tools_srv)
🔊 Funcionalidad: Gestiona el micrófono, la transmisión de audio, el reconocimiento de voz y la síntesis de voz (TTS).
📩 Solicitudes (audio_tools_msg.msg):
"enable"/"enable_mic"→ Activa la transmisión del micrófono y/o la localización de sonido."disable_tts"→ Detiene la síntesis de voz."set_speech_params"→ Ajusta parámetros del reconocimiento o síntesis de habla.
📤 Respuesta: Estado del audio y parámetros actuales.
👀 Servicio de Visión (vision_tools_srv)
📸 Funcionalidad: Controla las cámaras de Pepper y permite configurar resolución, FPS y espacio de color.
📩 Solicitudes (vision_tools_msg.msg):
"enable"→ Inicia la publicación de imágenes con parámetros predeterminados."set_parameters"→ Ajusta configuraciones como resolución o detección de rostros.
📤 Respuesta: Configuración actual de la cámara.
🗺️ Servicio de Navegación (navigation_tools_srv)
🦿 Funcionalidad: Administra odometría, láser, navegación y planificación de rutas.
📩 Solicitudes (navigation_tools_msg.msg):
"enable_all"→ Activa odometría, láser, navegación y control de velocidad."disable_all"→ Desactiva la navegación."custom"→ Ajusta parámetros individuales, como la frecuencia del TF o la trayectoria (path).
📤 Respuesta: Estado de los módulos activados/desactivados.
🤖 Servicio de Movimiento (motion_tools_srv)
💃 Funcionalidad: Controla posturas, ángulos y animaciones del robot.
📩 Solicitudes (motion_tools_msg.msg):
"enable_all"→ Activa el control de movimiento."set_angles"→ Ajusta los ángulos de las articulaciones.
📤 Respuesta: Estado de las funciones de movimiento.
✨ Servicio Misceláneo (misc_tools_srv)
🔮 Funcionalidad: Administra LEDs, sensores táctiles y sonares.
📩 Solicitudes (misc_tools_msg.msg):
"enable_all"→ Activa todos los módulos misceláneos."custom"→ Configura elementos específicos.
📤 Respuesta: Estado de los sensores y LEDs.
📡 Tópicos del Toolkit
El nodo robot_toolkit_node gestiona la comunicación entre ROS y el robot Pepper publicando datos de sensores y procesando comandos a través de distintos tópicos.
🚀 Tópicos PUBLICADOS
El nodo publica información de visión, navegación, audio y eventos en los siguientes tópicos:
👀 Visión
📸 Imágenes de cámaras (convertidas por CameraConverters):
/camera/front/image_raw→ Cámara frontal/camera/bottom/image_raw→ Cámara inferior/camera/depth/image_raw→ Cámara de profundidad
🧑 Detección de rostros:
/face_publisher/front_camera/face_publisher/bottom_camera
🗺️ Navegación
📍 Odometría y láser:
/odom→ Odometría calculada (OdomPublisher)/laser→ Datos del láser (LaserPublisher)
🔄 Tópicos derivados:
/tf→ Transformaciones (TfPublisher)/depth_to_laser→ Conversión de profundidad a láser/merged_laser→ Combinación de datos láser
📌 Posición y trayectoria:
/navigation/robot_pose_publisher→ Posición del robot/navigation/path→ Trayectoria planeada o recorrida
🎤 Audio
🔊 Micrófono y procesamiento de audio:
Los mensajes se publican en un tópico determinado por el evento "mic" o "miclocalization", según la configuración del sistema.
✨ Otros / Eventos
📢 Eventos del sistema:
- Eventos de navegación (
navigation_result) - Eventos de toque (
touch) - Otros eventos especiales
📥 Tópicos SUSCRITOS
El nodo también se suscribe a varios tópicos para recibir comandos de navegación, movimiento y configuración de dispositivos.
🗺️ Navegación
🕹️ Control de movimiento:
/cmd_vel→ Comandos de velocidad/move_base_simple/goal→ Objetivos de navegación (moveto)/navigation/goal→ Comandos de meta o waypoint (NavigationGoalSubscriber)/free_zone→ Información sobre zonas libres (FreeZoneSubscriber)/navigation/robot_pose_subscriber→ Posición del robot (RobotPoseSubscriber)
🤖 Movimiento
🎭 Gestos y posturas:
/animations→ Animaciones y gestos (AnimationSubscriber)/set_angles→ Ajuste de ángulos y posturas (SetAnglesSubscriber)
✨ Misceláneos
💡 Configuración de LEDs:
/leds→ Control de LEDs (LedsSubscriber)
🔄 Otros
🔧 Configuraciones especiales:
/special_settings→ Parámetros adicionales- Suscripciones relacionadas con procesamiento de audio y reconocimiento de voz
🏗️ Resumen Integrado
El robot_toolkit_node actúa como orquestador de módulos, publicando datos de sensores y procesando comandos de control.
📤 Publica información de sensores y procesos, como imágenes, láser, odometría y detección de rostros.
📥 Se suscribe a tópicos de navegación, movimiento y configuración de dispositivos.
Esta estructura modular permite una integración eficiente entre ROS y NAOqi, facilitando el control del robot Pepper en diferentes escenarios. 🚀
🛠️ Arquitectura del Código
El código en la carpeta src/ es el núcleo del SinfonIA Robot Toolkit y está organizado en distintos módulos que permiten controlar las capacidades del robot Pepper mediante ROS y el framework naoqi.
Introducción al qi SDK
El qi SDK es un conjunto de herramientas proporcionado por Aldebaran para desarrollar aplicaciones que interactúan con los robots como Pepper. Este SDK permite crear servicios y clientes en varios lenguajes de programación, facilitando la comunicación y el control de las funcionalidades del robot. Puedes encontrar más información en la documentación oficial.
🧩 Módulo Central (robot_toolkit.cpp)
La clase principal RobotToolkit es la encargada de integrar todas las herramientas y servicios. Su función es:
- Gestionar los servicios ROS para visión, navegación, audio y movimiento.
- Recibir comandos a través de callbacks y activar/desactivar funcionalidades.
- Comunicar el sistema con el hardware y otros módulos.
Además, el archivo autoload_registration.cpp gestiona el registro de módulos en naoqi.
🗺️ Herramientas de Navegación (navigation_tools/)
Este módulo permite que el robot se oriente en su entorno, integrando datos de sensores y control de movimiento:
📡 Sensores y Localización
laser/→ Conversión y publicación de datos del sensor láser (laser_converter.cpp,laser_publisher.cpp).odom/→ Conversión y publicación de odometría (odom_converter.cpp,odom_publisher.cpp).robot_pose/→ Publicación y conversión de la posición del robot (robot_pose_converter.cpp,robot_pose_publisher.cpp).
⚙️ Control de Movimiento y Planificación
cmd_vel/→ Control de velocidad (cmd_vel_subscriber.cpp).move_to/→ Comandos de desplazamiento (move_to.cpp).navigation_goal/→ Suscripción a objetivos de navegación (navigation_goal_subscriber.cpp).path/→ Publicación y conversión de rutas de navegación (path_publisher.cpp).
🧭 Transformaciones y Resultados
tf/→ Conversión y publicación de transformaciones (tf_converter.cpp,tf_publisher.cpp).result/→ Eventos y publicaciones de resultados de navegación (result_event.cpp,result_publisher.cpp).
🎥 Herramientas de Visión (vision_tools/)
Este módulo gestiona las cámaras y el procesamiento de imágenes:
📷 Cámaras
camera_converter.cpp→ Conversión de datos de cámara.camera_publisher.cpp→ Publicación de imágenes capturadas.
🧑🤝🧑 Detección de Rostros
face_detector.cpp→ Procesamiento y detección de caras.face_publisher.cpp→ Publicación de datos de detección facial.
🎙️ Herramientas de Audio (audio_tools/)
El robot escucha y habla gracias a este módulo:
🎤 Entrada de Audio (mic/)
mic_converter.cpp→ Conversión de datos del micrófono.mic_event.cpp→ Eventos activados por el micrófono.mic_localization_event.cpp→ Eventos de localización de sonido.mic_localization_publisher.cpp→ Publicación de la localización de sonido.mic_publisher.cpp→ Publicación de datos del micrófono.
🗣️ Síntesis y Reconocimiento de Voz
speech/speech_subscriber.cpp→ Suscripción a comandos de síntesis de voz.speech_recognition/speech_recognition_event.cpp→ Eventos de reconocimiento de voz.
💥 Comentario Importante
- Las funcionalidades de speech recognition no funcionan correctamente desde el toolkit, por lo que solo se usan desde el py_toolkit.
🤖 Herramientas de Movimiento (motion_tools/)
Este módulo permite que el robot se mueva y adopte distintas posturas:
🕺 Control de Movimiento
animation_subscriber.cpp→ Control de animaciones.set_angles_subscriber.cpp→ Modificación de posturas y ángulos de las articulaciones.
🔧 Otros Módulos Útiles
🛠️ Sensores y Actuadores (misc_tools/)
leds_subscriber.cpp→ Control de LEDs.sonar/→ Gestión del sensor de ultrasonido (sonar_converter.cpp,sonar_publisher.cpp).touch/→ Detección de contacto táctil (touch_event.cpp,touch_publisher.cpp).special_settings/special_settings_subscriber.cpp→ Configuración especial del robot.
🔗 Funciones Auxiliares (helpers/)
toolkit_helpers.cpp→ Funciones de apoyo para la integración de módulos.
🔍 Configuración del Robot (tools/)
robot_description.cpp→ Gestión de la descripción del robot.
Con esta estructura modular, el SinfonIA Robot Toolkit ofrece una integración completa y flexible con Pepper, permitiendo su control avanzado a través de ROS. 🚀🤖✨
📂 Headers y Contratos en include/
La carpeta include/ define todos los contratos y estructuras necesarias para integrar y comunicar los distintos módulos del SinfonIA Robot Toolkit con naoqi y ROS.
🏗️ Estructura Modular y Jerárquica
La carpeta está organizada en subdirectorios que agrupan funcionalidades específicas:
📌 robot_toolkit/
Define la interfaz principal del toolkit mediante la clase RobotToolkit, la cual centraliza la comunicación con los distintos módulos.
- Gestiona navegación, visión, audio y movimiento mediante callbacks ROS.
- Contiene archivos clave como
message_actions.h(definición de acciones de mensajería) y headers de entorno (ros_environment.hpp,naoqi_environment.hpp).
📌 Módulos Funcionales:
audio_tools/🎙️ → Manejo de micrófono, síntesis de voz y reconocimiento de voz con naoqi.vision_tools/🎥 → Procesamiento de imágenes y detección facial (con OpenCV y cv_bridge).navigation_tools/🗺️ → Integración de datos de sensores (láser, odometría) y navegación.motion_tools/🕺 → Control de animaciones, posturas y movimientos.misc_tools/🔧 → Gestión de LEDs, sensores de proximidad (sonar) y configuración especial.
🔄 Conversores y Callbacks
Los headers en converter/ definen clases base para convertir y formatear datos de sensores.
📌 Ejemplo en visión:
camera_converter.hppyface_detector.hppprocesan imágenes y detectan rostros.- Callbacks como
faceDetectedCallbackpermiten respuestas en tiempo real.
📌 Ejemplo en navegación:
odom_converter.hppylaser_converter.hppgestionan datos de odometría y láser.
🤖 Integración con naoqi y ROS
Los archivos de cabecera utilizan la API de naoqi (qi::SessionPtr) para comunicarse con Pepper y los mecanismos de comunicación de ROS (servicios, mensajes y topics).
- La clase
RobotToolkitinicializa, configura y detiene los servicios. - Los módulos intercambian datos en tiempo real entre naoqi y ROS.
🛠️ Utilidades y Helpers
La carpeta helpers/ incluye funciones auxiliares para:
- Gestión del sistema de archivos.
- Manejo de parámetros de visión.
- Coordinación eficiente entre módulos.
💡 En resumen:
Los headers en include/ establecen la arquitectura de comunicación y conversión de datos para Pepper. Gracias a la integración de módulos especializados y la centralización en RobotToolkit, el toolkit permite un control avanzado del robot mediante naoqi y ROS. 🚀🤖✨
py_toolkit: Integración de ROS con NAOqi
py_toolkit es un nodo de ROS que actúa como puente entre el framework NAOqi y ROS, permitiendo la interacción con el robot mediante servicios y tópicos. Proporciona funcionalidades clave como control de movimiento, interacción con la tableta, navegación, reproducción de audio y seguimiento visual. Básicamente es una extensión de sinfonia_toolkit en Python que añade las funcionalidades que hacen falta en el original de manera sencilla
1. Estructura del Nodo
main.py
El bloque main realiza las siguientes acciones:
-
Inicialización
- Analiza los argumentos de línea de comandos (IP y puerto).
- Establece conexión con el robot mediante
qi.Session. - Inicializa el nodo ROS
pytoolkit.
-
Configuración Inicial
- Detiene la aplicación
AppLauncher. - Desactiva
AutonomousLifeyBasicAwareness. - Establece la postura del robot en
Stand.
- Detiene la aplicación
-
Configuración de Servicios
- Crea y registra múltiples servicios ROS para controlar distintas funciones del robot.
-
Ejecución Continua
- Llama a
rospy.spin()para mantener el nodo en funcionamiento.
- Llama a
PyToolkit.__init__()
El constructor de la clase PyToolkit realiza lo siguiente:
-
Definición de Variables y Constantes
- Ruta del paquete y variables internas para el manejo de estados.
-
Creación de Publicadores (Publishers)
- Publica información sobre el estado del robot y sus sistemas.
-
Configuración de Subscriptores (Subscribers)
- Comandos de movimiento.
- Entrada de voz.
-
Suscripción a Eventos NAOqi
- Estado del TTS.
- Fallos de movimiento.
- Reconocimiento de voz.
- Datos de percepción sensorial.
-
Adquisición de Clientes de Servicios NAOqi
ALAudioDevice,ALMotion,ALTabletService, entre otros.
-
Registro de Servicios ROS
- Habilita interacción con audio, movimiento, navegación, seguridad, seguimiento visual y la tableta.
2. Servicios Disponibles en py_toolkit
A continuación, se describen los servicios ROS registrados en py_toolkit:
Audio y Reconocimiento de Voz
| Servicio | Tipo de mensaje | Parámetros | Descripción |
|---|---|---|---|
/pytoolkit/ALAudioDevice/set_output_volume_srv |
set_output_volume_srv |
volume (int): nivel de volumen |
Ajusta el volumen de salida del robot. |
/pytoolkit/ALAudioDevice/get_output_volume_srv |
battery_service_srv |
No requiere parámetros | Consulta y devuelve el volumen actual configurado. |
/pytoolkit/ALAudioPlayer/play_sound_effect_srv |
tablet_service_srv |
url (string): ruta del efecto de sonido |
Reproduce un efecto de sonido desde una URL. |
/pytoolkit/ALAudioPlayer/play_audio_stream_srv |
set_stiffnesses_srv |
names (string): URL del stream, stiffnesses (float): volumen |
Inicia la reproducción de un flujo de audio en vivo. |
/pytoolkit/ALAudioPlayer/stop_audio_stream_srv |
battery_service_srv |
No requiere parámetros | Detiene la reproducción del flujo de audio. |
/pytoolkit/ALTextToSpeech/shut_up_srv |
battery_service_srv |
No requiere parámetros | Detiene todas las salidas de texto a voz. |
/pytoolkit/ALTextToSpeech/say_to_file_srv |
say_to_file_srv |
text (string): texto a convertir en audio |
Convierte texto en un archivo de audio y devuelve sus datos. |
/pytoolkit/ALSpeechRecognition/set_speechrecognition_srv |
set_speechrecognition_srv |
subscribe (bool): activar/desactivar, noise (bool): efectos audio, eyes (bool): expresiones visuales |
Configura el reconocimiento de voz. |
/pytoolkit/ALSpeechRecognition/set_words_srv |
set_words_threshold_srv |
words (string[]): vocabulario, threshold (float[]): umbrales de confianza |
Ajusta el vocabulario y umbrales para el reconocimiento de palabras. |
/pytoolkit/ALSpeechRecognition/set_hot_word_language_srv |
tablet_service_srv |
url (string): código del idioma |
Cambia el idioma asociado a la palabra clave. |
Expresión y Conciencia del Robot
| Servicio | Tipo de mensaje | Parámetros | Descripción |
|---|---|---|---|
/pytoolkit/ALAutonomousLife/set_state_srv |
SetBool |
data (bool): activar/desactivar vida autónoma |
Activa o desactiva la vida autónoma del robot. |
/pytoolkit/ALAutonomousBlinking/toggle_blinking_srv |
SetBool |
data (bool): activar/desactivar parpadeo |
Activa o desactiva el parpadeo autónomo. |
/pytoolkit/ALBasicAwareness/set_awareness_srv |
SetBool |
data (bool): activar/desactivar awareness |
Controla el estado de la conciencia del robot. |
/pytoolkit/ALBasicAwareness/pause_awareness_srv |
battery_service_srv |
No requiere parámetros | Pausa el awareness y detiene el tracker. |
/pytoolkit/ALBasicAwareness/resume_awareness_srv |
battery_service_srv |
No requiere parámetros | Reanuda el awareness tras una pausa. |
/pytoolkit/ALBasicAwareness/set_tracking_mode_srv |
go_to_posture_srv |
posture (string): modo de tracking (“Head”, “BodyRotation”, “WholeBody”, etc.) |
Configura el modo de seguimiento del awareness. |
Movimiento y Seguridad
| Servicio | Tipo de mensaje | Parámetros | Descripción |
|---|---|---|---|
/pytoolkit/ALMotion/set_arms_security_srv |
SetBool |
data (bool): activar/desactivar protección de brazos |
Ajusta la protección en los brazos. |
/pytoolkit/ALMotion/set_security_distance_srv |
set_security_distance_srv |
distance (float): distancia en metros |
Establece la distancia de seguridad general. |
/pytoolkit/ALMotion/set_tangential_security_distance_srv |
set_security_distance_srv |
distance (float): distancia en metros |
Configura la distancia tangencial de seguridad. |
/pytoolkit/ALMotion/set_orthogonal_security_distance_srv |
set_security_distance_srv |
distance (float): distancia en metros |
Ajusta la distancia ortogonal de seguridad. |
/pytoolkit/ALMotion/set_open_close_hand_srv |
set_open_close_hand_srv |
hand (string): “left”, “right” o “both”, state (string): “open” o “close” |
Abre o cierra las manos del robot. |
/pytoolkit/ALMotion/toggle_breathing_srv |
set_open_close_hand_srv |
hand (string): parte del cuerpo, state (string): “True” o “False” |
Activa o desactiva el movimiento de respiración en los brazos. |
/pytoolkit/ALMotion/move_head_srv |
move_head_srv |
state (string): “up”, “down” o “default” |
Mueve la cabeza del robot a posiciones predefinidas. |
/pytoolkit/ALMotion/set_angle_srv |
set_angle_srv |
name (string[]): articulaciones, angle (float[]): valores, speed (float): velocidad |
Establece ángulos específicos en las articulaciones. |
/pytoolkit/ALMotion/toggle_get_angle_srv |
set_angle_srv |
name (string): parte del cuerpo para publicar ángulos |
Inicia la publicación continua de los ángulos de las articulaciones. |
/pytoolkit/ALMotion/set_move_arms_enabled_srv |
set_move_arms_enabled_srv |
LArm (bool): brazo izquierdo, RArm (bool): brazo derecho |
Habilita o deshabilita el movimiento de los brazos. |
/pytoolkit/ALMotion/set_stiffnesses_srv |
set_stiffnesses_srv |
names (string o string[]): articulaciones, stiffnesses (float o float[]): valores de rigidez (0-1) |
Ajusta la rigidez de las articulaciones. |
/pytoolkit/ALMotion/toggle_smart_stiffness_srv |
SetBool |
data (bool): activar/desactivar rigidez inteligente |
Activa o desactiva la rigidez inteligente. |
/pytoolkit/ALMotion/move_relative_srv |
navigate_to_srv |
x_coordinate (float): metros, y_coordinate (float): metros |
Mueve el robot de forma relativa a su posición actual. |
/pytoolkit/ALMotion/play_dance_srv |
set_output_volume_srv |
volume (int): identifica la coreografía (1, 2 o 3) |
Ejecuta una coreografía de baile predefinida. |
/pytoolkit/ALMotion/enable_security_srv |
battery_service_srv |
No requiere parámetros | Restablece la configuración de seguridad. |
Navegación y Posicionamiento
| Servicio | Tipo de mensaje | Parámetros | Descripción |
|---|---|---|---|
/pytoolkit/ALNavigation/navigate_to_srv |
navigate_to_srv |
x_coordinate (float): metros, y_coordinate (float): metros |
Hace que el robot se desplace a coordenadas específicas. |
/pytoolkit/ALNavigation/start_exploring_srv |
set_output_volume_srv |
volume (float): distancia a explorar en metros |
Inicia la exploración del entorno. |
/pytoolkit/ALNavigation/stop_exploring_srv |
battery_service_srv |
No requiere parámetros | Detiene el proceso de exploración. |
/pytoolkit/ALRobotPosture/go_to_posture_srv |
go_to_posture_srv |
posture (string): “stand” o “rest” |
Cambia la postura del robot. |
Interacción con la Tableta
| Servicio | Tipo de mensaje | Parámetros | Descripción |
|---|---|---|---|
/pytoolkit/ALTabletService/show_image_srv |
tablet_service_srv |
url (string): URL o ruta de la imagen |
Muestra una imagen en la tableta. |
/pytoolkit/ALTabletService/show_web_view_srv |
tablet_service_srv |
url (string): URL de la página web |
Carga una vista web en la tableta. |
/pytoolkit/ALTabletService/show_topic_srv |
tablet_service_srv |
url (string): nombre del tópico ROS a visualizar |
Muestra un tópico de ROS en la tableta. |
/pytoolkit/ALTabletService/play_video_srv |
tablet_service_srv |
url (string): URL o ruta del video |
Reproduce un video en la tableta. |
/pytoolkit/ALTabletService/get_input_srv |
get_input_srv |
type (string): “text”, “bool” o “list”, text (string): texto o opciones a mostrar |
Solicita una entrada del usuario mediante la tableta. |
/pytoolkit/ALTabletService/show_words_srv |
battery_service_srv |
No requiere parámetros | Muestra texto en la tableta. |
/pytoolkit/ALTabletService/show_picture_srv |
battery_service_srv |
No requiere parámetros | Captura y muestra una imagen en la tableta. |
/pytoolkit/ALTabletService/hide_srv |
battery_service_srv |
No requiere parámetros | Oculta la interfaz de la tableta. |
/pytoolkit/ALTabletService/overload_srv |
battery_service_srv |
No requiere parámetros | Simula múltiples solicitudes de carga de aplicaciones en la tableta. |
/pytoolkit/ALServiceManager/toggle_applauncher_srv |
SetBool |
data (bool): activar/desactivar AppLauncher |
Activa o desactiva el AppLauncher. |
Seguimiento y Detección
| Servicio | Tipo de mensaje | Parámetros | Descripción |
|---|---|---|---|
/pytoolkit/ALTracker/start_follow_face_srv |
battery_service_srv |
No requiere parámetros | Activa el seguimiento de rostros. |
/pytoolkit/ALTracker/point_at_srv |
point_at_srv |
effector_name (string): parte del cuerpo, x, y, z (float): coordenadas, frame (string): marco de referencia, speed (float): velocidad |
Hace que el robot apunte a una coordenada específica. |
/pytoolkit/ALTracker/stop_tracker_srv |
battery_service_srv |
No requiere parámetros | Detiene el servicio de seguimiento. |
/pytoolkit/ALTracker/start_tracker_srv |
battery_service_srv |
No requiere parámetros | Inicia el servicio de seguimiento con objetivos predefinidos. |
Sensores y Estado del Robot
| Servicio | Tipo de mensaje | Parámetros | Descripción |
|---|---|---|---|
/pytoolkit/ALSegmentation3D/get_segmentation3D_srv |
get_segmentation3D_srv |
No requiere parámetros | Obtiene coordenadas de segmentación 3D. |
/pytoolkit/ALBatteryService/get_porcentage |
battery_service_srv |
No requiere parámetros | Recupera el porcentaje de batería actual. |
3. Tópicos Publicados por py_toolkit
| Tópico | Tipo de mensaje | Descripción |
|---|---|---|
/pytoolkit/ALTextToSpeech/status |
text_to_speech_status_msg |
Publica mensajes de estado del sistema de texto a voz (TTS), indicando el progreso o finalización de solicitudes de conversión de texto a voz. |
/pytoolkit/ALMotion/failed |
speech_recognition_status_msg |
Publica notificaciones cuando se producen fallos en operaciones de movimiento. |
/pytoolkit/ALSpeechRecognition/status |
speech_recognition_status_msg |
Difunde palabras u otros datos relacionados con el reconocimiento de voz cuando se detecta una palabra con alta probabilidad. |
/pytoolkit/ALSpeechRecognition/SpeechDetected |
speech_recognition_status_msg |
Publica eventos que indican el estado de la detección de voz (inicio o fin del proceso de detección). |
/pytoolkit/ALSensors/obstacles |
speech_recognition_status_msg |
Publica datos sobre obstáculos detectados por los sensores del robot. |
/pytoolkit/ALMotion/get_angles |
set_angles_msg |
Publica periódicamente los ángulos actuales de las articulaciones del robot. |
4. Tópicos Suscritos por py_toolkit
| Tópico | Tipo de mensaje | Descripción |
|---|---|---|
/pytoolkit/ALMotion/move |
Twist |
Recibe comandos de movimiento y los traduce a acciones físicas en el robot. |
/speech |
speech_msg |
Recibe datos de reconocimiento de voz y los procesa para actualizar la interfaz de la tableta o ajustar el comportamiento del robot. |
5. Conclusión
py_toolkit es un nodo fundamental para la integración entre ROS y NAOqi, proporcionando una API accesible para controlar múltiples aspectos del robot, desde la navegación y el movimiento hasta la interacción con la tableta y el seguimiento visual. Su arquitectura basada en servicios y tópicos facilita la comunicación entre los distintos módulos del sistema, garantizando un control flexible y eficiente.