Componentes

Esta pagina es el inventario completo de los scripts y modulos que forman el sistema, organizados por nodo de ejecucion y funcion dentro de la arquitectura. Los scripts del robot corren sobre Ubuntu 24.04 con ROS 2 Jazzy. Los scripts de Unity corren dentro de la aplicacion Meta Quest 3.


Scripts del robot

Script Rol Puerto Dependencias
slam_server.py Servidor HTTP Flask — genera y sirve el mapa SLAM bajo demanda :5008 HTTP Flask, flask-cors, ROS 2 nav2_map_server
extract_walls.py Procesa el mapa PGM y genera un JSON de segmentos de pared y posiciones de personas OpenCV, NumPy, PIL, PyYAML
wifi_sampler_realtime.py Nodo ROS 2 — muestrea la intensidad de senal WiFi (RSSI) via iw y envia cada muestra por UDP al Quest :5007 UDP out rclpy, tf2_ros, iw
start_slam_server.sh Script de arranque del servidor Flask; configura el entorno ROS 2 antes de lanzar el proceso ROS 2 Jazzy, workspace del robot

El flujo de generacion de mapa arranca en slam_server.py: cuando recibe GET /generate_map, llama a map_saver_cli de Nav2 para guardar current_map.pgm y current_map.yaml, despues ejecuta extract_walls.py sobre esos archivos y devuelve los tres artefactos empaquetados en un unico JSON.


Scripts Unity — Nucleo del sistema

Script Rol Puerto
SLAMMapDownloader Descarga el mapa por HTTP y distribuye los datos (PGM, YAML, walls JSON) a los demas componentes :5008 HTTP
MapFrameConverter Pivote de coordenadas entre el sistema ROS (x adelante, y izquierda) y el sistema Unity (x derecha, z adelante)
WallGenerator Instancia cubos que representan paredes a partir del archivo walls.json descargado
PGMViewer Parsea el mapa PGM recibido en base64 y genera una textura que se muestra en el panel de UI
UdpWifiReceiver Recibe las muestras de senal WiFi enviadas por el robot y las pasa al renderer del mapa de calor :5007 UDP in
HeatmapGridRenderer Renderiza el mapa de calor de cobertura WiFi usando interpolacion de distancia inversa ponderada (IDW)
WifiColorMap Convierte valores de RSSI en dBm a un color en un gradiente configurable (rojo-amarillo-verde)
WifiSample Modelo de datos de una muestra WiFi individual: RSSI, coordenadas de mapa, timestamp, SSID, BSSID
UdpTeleopSender_TriggersOnlyUDP Captura la entrada de los triggers del controlador y envia comandos de movimiento {vx, vy, wz} por UDP :5002 UDP out
RosbotVideoStreamReceiver Recibe el stream de video por ZMQ en un hilo secundario y actualiza la textura de video en cada Update() :5555 ZMQ
RosbotEndpointManager Singleton marcado DontDestroyOnLoad que almacena la IP actual del robot y la expone al resto del sistema
SessionPersistenceManager Guarda y recupera la configuracion de sesion (IP, preferencias) usando PlayerPrefs
MapBoundsAutoCollider Calcula automaticamente el collider del area del mapa a partir de las dimensiones del PGM y la resolucion YAML
WallManipulator Permite al operador reposicionar paredes individuales manualmente en el espacio mixto

Scripts Unity — UI y sesion

Script Rol
WelcomeFlowController Controla el flujo de onboarding que se muestra en el primer arranque de la aplicacion
ControlsPanelUI Panel principal de controles del operador: botones de accion, indicadores de estado y acceso a submodos
RosbotEndpointPanelController_v2 Panel de configuracion de la IP del robot, integrado en el flujo de sesion
RosbotIpKeypadController Teclado virtual en XR para introducir direcciones IP sin controlador fisico de teclado
BillboardToCamera Orienta los paneles de UI hacia la camara del usuario en cada frame para mantener la legibilidad
ControllerToggleUI Alterna la visibilidad del conjunto de paneles de UI con un gesto o boton del controlador
RosbotSensorStatusReceiver Recibe mensajes de estado de los sensores del robot y actualiza los indicadores visuales
RosbotTelemetryStatusPanel Panel que muestra datos de telemetria del robot: bateria, conectividad, estado de los sensores
TMPInputFocusHelper Resuelve los problemas de foco en campos de texto TextMeshPro dentro de entornos XR de OpenXR/OVR

Scripts de desarrollo experimental

Los siguientes scripts se encuentran en el repositorio pero no estan integrados en la build de produccion. Representan prototipos, herramientas de prueba o funcionalidades en estudio para iteraciones futuras.

Script / Modulo Descripcion
WallGeneratorConPersonas.cs Version de WallGenerator que ademas renderiza en la escena las personas detectadas por el algoritmo RANSAC en extract_walls.py
AccessPointSignalSimulator.cs Simula la distribucion espacial de la senal WiFi sin necesidad de robot fisico; util para pruebas de UI del mapa de calor
OVRControllerTriggerDebug.cs Imprime en consola los valores raw de los triggers del controlador OVR para depuracion de input
prob_persona.py Calcula la probabilidad bayesiana de que un contorno detectado en el mapa de ocupacion corresponda a una persona
detector_objetos_google_vision.py Captura una imagen con la camara Orbbec Astra Pro, la envia a Google Vision API y devuelve un JSON de objetos detectados para consumo en Unity
extract_walls_test_local.py Version del procesador de mapa para pruebas en maquina de desarrollo; usa el archivo de referencia casa.yaml en lugar del mapa del robot

Archivos de referencia

Los scripts de Unity estan disponibles para su descarga directa:

Scripts Unity completos

Los scripts del robot (slam_server.py, extract_walls.py, wifi_sampler_realtime.py, start_slam_server.sh) se distribuyen junto con el workspace de ROS 2 del proyecto.


This site uses Just the Docs, a documentation theme for Jekyll.