Un sistema completo de control web para robot TurtleBot con integración ROS, monitoreo en tiempo real, gestión multiusuario y panel administrativo avanzado.
- ✅ Control web completo del TurtleBot vía WebSocket
- ✅ Movimiento direccional con botones y teclado (WASD/Flechas)
- ✅ Parada de emergencia múltiple (botón STOP, tecla Espacio)
- ✅ Velocidades configurables (linear: 0.2 m/s, angular: 0.5 rad/s)
- ✅ Conexión ROS Bridge a
ws://turtlebot-NUC.local:9090 - ✅ Control en tiempo real con feedback visual inmediato
- ✅ Interfaz táctil optimizada para dispositivos móviles
- ✅ Modo administrador con controles avanzados
- ✅ Odometría - Posición X, Y, Z y orientación en grados
- ✅ LIDAR - Sensor láser 360° con detección de obstáculos
- ✅ Batería Kobuki - Nivel, voltaje, estado de carga y alertas
- ✅ Cámara - Stream de video 640x480 en tiempo real
- ✅ Diagnósticos - Estado completo del sistema TurtleBot
- ✅ Monitoreo continuo de conectividad y tópicos ROS
- ✅ Alertas automáticas por email de batería baja
- ✅ Autenticación completa con email/username + password
- ✅ Roles diferenciados (Usuario/Administrador/Técnico)
- ✅ Sesiones seguras con express-session y expiración
- ✅ Contraseñas hasheadas con bcrypt
- ✅ Control de acceso basado en roles y permisos
- ✅ Perfiles de usuario con fotos personalizables
- ✅ Gestión de usuarios completa para administradores
- ✅ Historial de actividad por usuario
- ✅ Gestión completa de tours con rutas predefinidas
- ✅ Waypoints interactivos con descripciones detalladas
- ✅ Asignación automática de robots a tours
- ✅ Seguimiento de progreso en tiempo real
- ✅ Historial de tours con calificaciones y feedback
- ✅ IA generativa con Gemini para descripciones automáticas
- ✅ Soporte multiidioma para tours
- ✅ Sistema de pines para acceso seguro a tours
- ✅ Notificaciones por email configurables
- ✅ Throttling inteligente para evitar spam
- ✅ Horarios de trabajo configurables
- ✅ Múltiples tipos de notificaciones (batería, errores, desconexiones)
- ✅ Prioridades (crítico, alto, medio, bajo)
- ✅ Plantillas HTML para emails atractivos
- ✅ Configuración centralizada en notificationConfig.js
- ✅ Gestión de usuarios completa (CRUD)
- ✅ Estadísticas del sistema en tiempo real
- ✅ Historial de comandos del robot con timestamps
- ✅ Monitoreo de actividad de usuarios y robots
- ✅ Estado del robot centralizado y detallado
- ✅ Gestión de tours y rutas
- ✅ Configuración del sistema avanzada
- ✅ Logs del sistema con niveles de error
- ✅ Dashboard principal con métricas clave
- ✅ Estadísticas en tiempo real de tópicos activos
- ✅ Monitoreo de batería con gráficos históricos
- ✅ Posición del robot en mapa 2D
- ✅ Contadores de obstáculos detectados por LIDAR
- ✅ Usuarios conectados y sesiones activas
- ✅ Historial completo de comandos enviados
- ✅ Gráficos interactivos con Three.js
- ✅ Manejo completo de errores con try-catch
- ✅ Reconexión automática ROS cada 30 segundos
- ✅ Monitoreo de tópicos con timeouts configurables
- ✅ Logging optimizado para evitar spam
- ✅ Validación de datos de sensores
- ✅ Protección CSRF con Helmet
- ✅ Límite de tamaño de archivos subidos (5MB)
- ✅ Validación de tipos de archivos para imágenes
- ✅ Diseño responsive para móviles y tablets
- ✅ Interfaz intuitiva con navegación clara
- ✅ Tema moderno con gradientes y sombras
- ✅ Animaciones suaves y transiciones
- ✅ Compatibilidad con navegadores modernos
- ✅ Accesibilidad mejorada con ARIA labels
- ✅ Modo oscuro opcional
- ✅ Iconografía consistente y moderna
- ✅ Throttling automático de mensajes de cámara
- ✅ Logging probabilístico para reducir spam
- ✅ Actualización eficiente de la interfaz
- ✅ Gestión inteligente de recursos del navegador
- ✅ Compresión de respuestas HTTP
- ✅ Cache de descripciones generadas por IA
- ✅ Conexiones WebSocket optimizadas
- ✅ Lazy loading de componentes pesados
- Reintento de conexión ROS cada 30 segundos
- Notificación visual del estado de conectividad
- Restablecimiento automático de suscripciones
- Monitoreo continuo de tópicos activos
- Alertas por email de desconexiones críticas
- Gemini AI para generar descripciones detalladas de waypoints
- Descripciones automáticas en múltiples idiomas
- Cache inteligente para evitar regeneración innecesaria
- Optimización de prompts para voz y texto
- Notificaciones por email con throttling configurable
- Múltiples tipos: batería, errores, desconexiones, tours
- Prioridades: crítico, alto, medio, bajo
- Horarios de trabajo configurables
- Plantillas HTML responsivas
- Tres roles diferenciados: Usuario, Técnico, Administrador
- Sistema de perfiles con fotos personalizables
- Control de acceso granular por funcionalidades
- Historial completo de actividad por usuario
- Gestión de sesiones con expiración automática
- Rutas predefinidas con waypoints geolocalizados
- Asignación automática de robots disponibles
- Seguimiento GPS del progreso en tiempo real
- Sistema de pines para acceso seguro
- Calificaciones y feedback de usuarios
- Historial detallado de tours completados
- Métricas en tiempo real de todos los sensores
- Gráficos históricos de batería y uso
- Contadores de obstáculos y detecciones LIDAR
- Estadísticas de usuarios conectados
- Reportes de rendimiento del sistema
- Autenticación obligatoria para todas las funciones
- Hash seguro de contraseñas con bcrypt
- Protección CSRF con Helmet
- Validación de tipos y tamaños de archivos
- Logging completo de todas las acciones
- Controles de acceso basados en roles
- Diseño completamente responsive
- Controles táctiles optimizados para tablets
- Navegación móvil intuitiva
- Compatibilidad con gestos multitáctiles
- Optimización de batería en dispositivos móviles
- Throttling automático de streams de video
- Logging probabilístico para reducir spam
- Compresión de respuestas HTTP
- Cache de descripciones generadas por IA
- Lazy loading de componentes pesados
- Gestión inteligente de conexiones WebSocket
- Linux (Ubuntu/ROS compatible)
- Node.js 22.x (ya instalado)
- npm (incluido con Node.js)
- TurtleBot con Kobuki base
- ROS Bridge Server ejecutándose
- Sensores: LIDAR, cámara, odometría
- Conectividad:
ws://turtlebot-NUC.local:9090
git clone https://github.com/DKNS-JCC/rosweb.git
cd roswebnpm installnpm startnpm run dev- Aplicación principal: http://localhost:3000
- Control del robot: http://localhost:3000/robot
- Panel administrativo: http://localhost:3000/admin
rosweb/
├── 📦 package.json # Dependencias y configuración npm
├── 🚀 server.js # Servidor Express principal + API
├── 🗄️ database.db # Base de datos SQLite
├── 🖼️ icon.ico # Logo de la aplicación
├── 🤖 robotManager.js # Gestor de conexión ROS y sensores
├── 📧 emailNotifier.js # Sistema de notificaciones por email
├── ⚙️ notificationConfig.js # Configuración de notificaciones
├── 📁 public/ # Archivos estáticos del frontend
│ ├── 🏠 index.html # Página principal con dashboard
│ ├── 🔐 login.html # Sistema de autenticación
│ ├── 📝 register.html # Registro de nuevos usuarios
│ ├── 📊 dashboard.html # Dashboard personal del usuario
│ ├── 🔧 admin.html # Panel administrativo completo
│ ├── 🤖 robot.html # Control avanzado del robot
│ ├── 🎯 tours.html # Selección y gestión de tours
│ ├── 📈 stats.html # Estadísticas detalladas del sistema
│ ├── 🎨 styles.css # Estilos CSS globales
│ ├── 🧭 navigation.js # Utilidades de navegación
│ └── 🖼️ icon.ico # Logo accesible desde frontend
├── 📁 uploads/ # Imágenes de perfil de usuarios
│ ├── profile_1_*.jpg # Fotos de perfil de usuarios
│ └── profile_3_*.jpeg
├── 📋 RESUMEN_SISTEMA.md # Documentación técnica completa
├── 🔧 SOLUCION_COMPLETA.md # Guía de resolución de problemas
├── 🔋 ACTUALIZACION_BATERIA.md # Sistema de batería Kobuki
└── 📖 README.md # Esta documentación
# Administrador (acceso completo)
Usuario: admin
Contraseña: admin123
# Técnico (mantenimiento y configuración)
Usuario: tecnico
Contraseña: tecnico123# Crear cuenta nueva
http://localhost:3000/register
# Iniciar sesión
http://localhost:3000/login# Acceso directo al control
http://localhost:3000/robotControles disponibles:
- 🎮 Botones: Interfaz táctil con botones direccionales
- ⌨️ Teclado:
W/↑- AdelanteS/↓- AtrásA/←- Girar izquierdaD/→- Girar derechaEspacio- Parada de emergencia
# Seleccionar tour disponible
http://localhost:3000/tours
# Iniciar tour con PIN de seguridad
# El sistema asigna automáticamente un robot disponibleCaracterísticas de Tours:
- Rutas predefinidas con waypoints específicos
- Descripciones generadas por IA para cada punto
- Seguimiento GPS del progreso
- Calificaciones y feedback al completar
- Historial completo de tours realizados
# Solo para administradores
http://localhost:3000/adminFuncionalidades administrativas:
- Gestión completa de usuarios (crear, editar, eliminar)
- Configuración de tours y rutas
- Monitoreo en tiempo real del sistema
- Estadísticas detalladas y reportes
- Configuración de notificaciones
- Gestión de robots y asignaciones
# Dashboard del usuario
http://localhost:3000/dashboardFuncionalidades del usuario:
- Vista general del estado del sistema
- Historial personal de tours
- Control rápido del robot
- Perfil personal con foto
- Estadísticas de uso
# Servidor
PORT=3000 # Puerto del servidor web
NODE_ENV=production # Entorno (development/production)
# Base de datos
DATABASE_PATH=./database.db # Ruta de la base de datos SQLite
# ROS Bridge
ROS_BRIDGE_URL=ws://turtlebot-NUC.local:9090 # URL del ROS Bridge
ROS_RECONNECT_INTERVAL=30000 # Intervalo de reconexión (ms)
# IA Generativa (Gemini)
GEMINI_API_KEY=your_api_key_here # API Key de Google Gemini
# Email (Notificaciones)
EMAIL_USER=artecrobotics25@gmail.com # Usuario de email
EMAIL_PASS=hfbn zftl ycvg fain # Contraseña de aplicación
EMAIL_DESTINATION=artecrobotics25@gmail.com # Destino de notificaciones
# Seguridad
SESSION_SECRET=mi-secreto-super-seguro # Secreto para sesiones
BCRYPT_ROUNDS=10 # Rondas de hash para contraseñas
# Configuración de archivos
MAX_FILE_SIZE=5242880 # Tamaño máximo de archivos (5MB)
UPLOAD_PATH=./uploads # Directorio de archivos subidos
# Configuración de notificaciones
NOTIFICATION_THROTTLE=60 # Throttle en minutos
WORKING_HOURS_ONLY=false # Solo notificaciones en horario laboral
WORKING_HOURS_START=09:00 # Hora de inicio
WORKING_HOURS_END=18:00 # Hora de finRESUMEN_SISTEMA.md- Funcionalidades completas del sistemaSOLUCION_COMPLETA.md- Resolución de problemas técnicosACTUALIZACION_BATERIA.md- Sistema de batería KobukiREADME.md- Esta documentación general
- Framework: Node.js + Express.js
- Base de datos: SQLite con migraciones automáticas
- Frontend: HTML5 + CSS3 + JavaScript vanilla
- ROS: ROSLib.js + WebSocket Bridge
- IA: Google Gemini 2.5 Flash
- Autenticación: bcrypt + express-session
- Notificaciones: Nodemailer con plantillas HTML
- WebSockets: Express-WS + Socket.IO
- Backend: Node.js con Express.js
- Base de datos: SQLite con esquemas relacionales
- Comunicación: WebSocket + HTTP REST API
- Autenticación: Sesiones con roles y permisos
- Monitoreo: Sistema de logs y notificaciones
- IA: Integración con Gemini para contenido dinámico
- CPU: 2 núcleos mínimo, 4 recomendado
- RAM: 4GB mínimo, 8GB recomendado
- Almacenamiento: 10GB para datos y logs
- Red: Conexión estable al ROS Bridge
- Navegador: Chrome/Edge/Firefox actualizados
- Email: artecrobotics25@gmail.com
- Repositorio: https://github.com/DKNS-JCC/rosweb
- Issues: Para reportar bugs o solicitar features
- Documentación: Archivos MD en el repositorio
Desarrollado por ArtTEC 🤖✨