Interfaz de usuario

Diseño

La UI prioriza simplicidad y funcionalidad antes de explotar todo el potencial MR. El operador debe tener siempre una lectura clara del entorno y poder cambiar el modo de percepción sin distraerse.

Principios aplicados:

  • El video es la fuente principal de comprensión directa del entorno
  • El lidar es un complemento espacial, no compite con el video por el panel principal
  • Los streams inactivos no se transmiten (streaming selectivo en la NUC)
  • La UI debe ser estable y clara antes de volverse más compleja

Implementación

Tipo de canvas

Canvas Unity en world-space sobre passthrough MR del Meta Quest 3. El operador interactúa con ray interaction usando los controladores del headset.

VideoPanel — panel principal

Muestra el stream RGB de la RealSense D435i desde la NUC.

Parámetro Valor
Resolución 640×480 px
Tasa de cuadros objetivo ~30 fps
Transporte JPEG comprimido sobre ZMQ port 5555
Latencia objetivo < 150 ms extremo a extremo

El contenido visual cambia según el camera_mode activo, pero siempre es el stream principal de comprensión del entorno.

LidarPanel — panel complementario

Muestra el grid de ocupación 2D generado por el RPLiDAR C1.

Convención visual del grid:

  • Blanco — espacio libre / transitable
  • Negro — obstáculo o zona no transitable
  • Verde — posición del robot
  • Azul — orientación frontal del robot

Tasa de actualización: ~12 Hz.

StatusPanel — estado del sistema

Campo Contenido
Robot Connected / Disconnected
Target IP IP de la NUC
My IP IP del headset
Mode Modo de cámara y lidar activos
FPS Cuadros por segundo del video
Res Resolución del frame recibido
Camera OK Estado del sensor RealSense
Lidar OK Estado del RPLiDAR C1

Tasa de refresco: ~2 Hz (heartbeat desde topic stat).

Controles de modo

Opción Comportamiento en NUC
Normal Stream RGB estándar
Pose Stream RGB con detección de pose (YOLOv8 nano)
Segment Stream RGB con segmentación semántica (YOLOv8 nano-seg)
Off Cámara deshabilitada
Opción Radio Grid
Detail 1 m 200×200
Medium 2 m 400×400
Panorama 3 m 600×600
Off Sin transmisión

Resolución de celda: 1 cm fijo en todos los modos.

Contrato de comandos (ZMQ port 5002)

{"type": "set_camera_mode", "mode": "normal|pose|segment|off"}
{"type": "set_lidar_mode",  "mode": "detail|medium|panorama|off"}

Feedback de interacción

El componente UiInteractionFeedback.cs añade:

  • Sonido de hover al apuntar sobre un control
  • Sonido de click al seleccionar una opción
  • Micro vibración del controlador Meta Quest

Validación

Función Estado
Canvas world-space sobre passthrough MR ✅ Funcional
VideoPanel con stream RGB en tiempo real ✅ Verificado
LidarPanel con grid de ocupación configurable ✅ Verificado
StatusPanel con datos de conexión y sensores ✅ Verificado
Dropdowns de modos operativos ✅ Verificado
Feedback háptico y sonoro ✅ Implementado
Control de base móvil (joystick → port 5002) ⏳ Pendiente
Control de manipulador 3DOF ⏳ Pendiente
Telemetría real del robot (batería, pose) ⏳ Pendiente

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