Sistema de guiado asistido para robots móviles basado en ROS2 Galactic con interfaz web para monitorización y control.
AidGuide 04 es un sistema robótico basado en ROS2 Galactic que integra simulación en Gazebo, backend con API REST y frontend web para control y visualización.
- ROS2 Galactic: Entorno de desarrollo para robótica
- Gazebo: Simulador 3D para robots
- Docker & Docker Compose: Para servicios de backend
- Node.js (v14 o superior): Para desarrollo frontend
sudo apt install ros-galactic-rosbridge-server ros-galactic-web-video-serveraidguide_04/
├── scripts/ # Scripts para iniciar diferentes componentes
│ ├── start-project.sh # Script principal (inicia todo)
│ ├── start-ros2-gazebo.sh # Inicia ROS2 y Gazebo
│ ├── start-frontend.sh # Inicia la aplicación frontend
│ ├── start-services.sh # Inicia los servicios de backend
│ ├── start-monitor.sh # Inicia monitoreo del robot
│ ├── start-web-with-chatbot.sh # Inicia web con chatbot
│ ├── start-standalone-web.sh # Inicia web sin depender de ROS2
│ ├── restart-ollama.sh # Reinicia servicio Ollama para chatbot
│ └── prueba-simple.sh # Script para pruebas simples
├── aidguide_04_ws/ # Espacio de trabajo ROS2
│ └── src/
│ ├── aidguide_04/ # Paquete principal
│ ├── aidguide_04_backend/ # Backend API REST
│ ├── aidguide_04_capture_image/ # Captura de imágenes
│ ├── aidguide_04_imagenes_coches/ # Imágenes de coches
│ ├── aidguide_04_nav/ # Navegación
│ ├── aidguide_04_nav_punto_a_punto/ # Navegación punto a punto
│ ├── aidguide_04_my_nav2_system/ # Sistema personalizado Nav2
│ ├── aidguide_04_provide_map/ # Provisión de mapas
│ ├── aidguide_04_robot_monitoring/ # Monitoreo del robot
│ ├── aidguide_04_slam/ # SLAM
│ ├── aidguide_04_weather/ # Información del clima
│ ├── aidguide_04_web/ # Frontend
│ ├── aidguide_04_world/ # Modelos y mundos para simulación
│ ├── async_web_server_cpp/ # Servidor web asíncrono
│ └── web_video_server/ # Servidor de video web
├── docs/ # Documentación del proyecto
└── team_shared/ # Archivos compartidos del equipo
El script principal inicia todos los componentes del proyecto en un solo paso:
# Dar permisos de ejecución si es necesario
chmod +x scripts/start-project.sh
# Ejecutar el script principal
./scripts/start-project.shEste script:
- Verifica e inicia Docker si es necesario
- Inicia el backend (MySQL, API) con Docker
- Inicia ROS2 y Gazebo
- Inicia la aplicación frontend
Si prefieres iniciar componentes individualmente:
- Backend (API + Base de datos):
chmod +x scripts/start-services.sh
./scripts/start-services.sh- ROS2 y Gazebo:
chmod +x scripts/start-ros2-gazebo.sh
./scripts/start-ros2-gazebo.sh- Frontend:
chmod +x scripts/start-frontend.sh
./scripts/start-frontend.sh- Monitoreo del robot:
chmod +x scripts/start-monitor.sh
./scripts/start-monitor.shUna vez iniciado el proyecto, puedes acceder a los siguientes servicios:
- Frontend: http://localhost:3334
- Backend API: http://localhost:3333/api
- Documentación API: http://localhost:3333/api-docs
- MySQL: localhost:3306 (usuario: aiduser, contraseña: password123)
- Error "Docker daemon no está en ejecución": Asegúrate de iniciar Docker con
sudo systemctl start docker - Error de permisos: Añade tu usuario al grupo docker con
sudo usermod -aG docker $USERy reinicia la sesión - Conflicto de puertos: Si recibes errores sobre puertos ya en uso, verifica qué procesos están utilizando los puertos 3333 y 3334 con
sudo lsof -i :<puerto>
- "Command not found: ros2": Asegúrate de tener ROS2 Galactic instalado y haber ejecutado
source /opt/ros/galactic/setup.bash - Paquetes no encontrados: Ejecuta
rosdep install --from-paths src --ignore-src -r -yen el workspace
El proyecto utiliza GitHub Actions para realizar pruebas automáticas:
Este workflow verifica que la conexión a la base de datos funcione correctamente:
# .github/workflows/db-validation.yml
name: Validación de Conexión a Base de Datos
on:
push:
branches: [ develop ]
pull_request:
branches: [ develop ]Para que los tests funcionen correctamente, asegúrate de:
-
Configurar los siguientes secretos en GitHub:
DB_USER: Usuario de la base de datosDB_PASSWORD: Contraseña de la base de datosDB_NAME: Nombre de la base de datos
-
Verificar que el archivo
verify-db-connection.jsesté actualizado en el repositorio.
Si encuentras errores en los tests de GitHub Actions:
- Verifica que todas las dependencias estén correctamente especificadas en
package.json - Asegúrate de que los scripts de prueba funcionan localmente antes de hacer push
- Asegúrate de tener la última versión del repositorio
- Crea una rama para tu característica (
git checkout -b feature/nueva-caracteristica) - Haz tus cambios y pruébalos localmente
- Envía un pull request a la rama
develop
- 🌟 Descripción General
- 🏗️ Estructura del Proyecto
- 📋 Requisitos
- 🚀 Instalación y Configuración
- 💻 Uso del Sistema
- ⚙️ Scripts Automáticos
- 👥 Equipo de Desarrollo
- 🔧 Solución de Problemas Comunes
El proyecto consta de dos componentes principales:
- Backend ROS2: Sistema de control y guiado del robot
- Frontend Web: Interfaz de usuario moderna para la monitorización y control del robot
aidguide_04/
├── aidguide_04_ws/
│ └── src/
│ ├── aidguide_04/ # Nodo principal del sistema de guiado
│ ├── aidguide_04_web/ # Aplicación web frontend (Next.js)
│ ├── aidguide_04_world/ # Modelos y mundos para simulación
│ ├── aidguide_04_slam/ # Funcionalidades de SLAM
│ ├── aidguide_04_nav/ # Sistema de navegación base
│ ├── aidguide_04_nav_punto_a_punto/ # Navegación punto a punto
│ ├── aidguide_04_provide_map/ # Provisión de mapas
│ ├── aidguide_04_my_nav2_system/ # Sistema personalizado Nav2
│ ├── aidguide_04_backend/ # Backend API REST
│ ├── aidguide_04_robot_monitoring/ # Monitoreo del robot
│ ├── aidguide_04_weather/ # Información del clima
│ ├── aidguide_04_capture_image/ # Captura de imágenes
│ ├── aidguide_04_imagenes_coches/ # Imágenes de coches
│ ├── async_web_server_cpp/ # Servidor web asíncrono
│ └── web_video_server/ # Servidor de video web
├── scripts/ # Scripts para iniciar diferentes componentes
│ ├── start-project.sh # Script principal (inicia todo)
│ ├── start-ros2-gazebo.sh # Inicia ROS2 y Gazebo
│ ├── start-frontend.sh # Inicia la aplicación frontend
│ ├── start-services.sh # Inicia los servicios de backend
│ ├── start-monitor.sh # Inicia monitoreo del robot
│ ├── start-web-with-chatbot.sh # Inicia web con chatbot
│ ├── start-standalone-web.sh # Inicia web sin depender de ROS2
│ ├── restart-ollama.sh # Reinicia servicio Ollama para chatbot
│ └── prueba-simple.sh # Script para pruebas simples
├── docs/ # Documentación del proyecto
└── team_shared/ # Archivos compartidos del equipo
- ROS2 Galactic
- Python 3.8+
- Dependencias específicas listadas en package.xml
- Node.js 16.x o superior
- npm 8.x o superior
- Clonar el repositorio:
git clone https://github.com/vjrivmon/aidguide_04.git
cd aidguide_04- Instalar dependencias de ROS2:
rosdep install --from-paths aidguide_04_ws/src --ignore-src -r -y- Compilar el workspace:
cd aidguide_04_ws
colcon buildEl proyecto incluye varios scripts para automatizar tareas comunes:
| Script | Plataforma | Descripción |
|---|---|---|
scripts/start-project.sh |
Linux/Unix | Inicia todo el proyecto (script principal) |
scripts/start-frontend.sh |
Linux/Unix | Inicia la aplicación web frontend |
scripts/start-ros2-gazebo.sh |
Linux/Unix | Inicia ROS2 con el simulador Gazebo |
scripts/start-services.sh |
Linux/Unix | Inicia los servicios de backend |
scripts/start-monitor.sh |
Linux/Unix | Inicia el monitoreo del robot |
scripts/start-web-with-chatbot.sh |
Linux/Unix | Inicia la aplicación web con chatbot |
scripts/start-standalone-web.sh |
Linux/Unix | Inicia la web sin depender de ROS2 |
scripts/restart-ollama.sh |
Linux/Unix | Reinicia el servicio Ollama para el chatbot |
scripts/prueba-simple.sh |
Linux/Unix | Ejecuta pruebas básicas del sistema |
# Dar permisos de ejecución
chmod +x scripts/start-project.sh
chmod +x scripts/start-ros2-gazebo.sh
chmod +x scripts/start-frontend.sh
chmod +x scripts/start-monitor.sh
chmod +x scripts/prueba-simple.sh
# Ejecutar scripts
./scripts/start-project.sh
./scripts/start-ros2-gazebo.sh
./scripts/start-frontend.sh
./scripts/start-monitor.sh
./scripts/prueba-simple.sh-
Iniciar la simulación:
# Linux/Unix ./scripts/start-ros2-gazebo.sh -
Iniciar el sistema de navegación:
# Linux/Unix (dentro del workspace) cd aidguide_04_ws source install/setup.bash ros2 launch aidguide_04_nav navigation.launch.py
-
Iniciar el frontend web:
# Linux/Unix ./scripts/start-frontend.sh -
Acceder a la aplicación web:
- URL: http://localhost:3000
- Usar las siguientes credenciales según el rol:
Rol Email Contraseña Usuario ciego user@aidguide.com user123 Familiar family@aidguide.com family123 Administrador admin@aidguide.com admin123
- Vicente Rivas Monferrer (Responsable) - vjrivmon@epsg.upv.es
- Irene Medina García
- Mimi Vladeva
- Hugo Belda Revert
- Marc Vilagrosa Caturla
-
Problemas con las dependencias:
cd aidguide_04_ws/src/aidguide_04_web rm -rf node_modules npm cache clean --force npm install --legacy-peer-deps npm run dev -
Puerto 3000 ocupado:
- La aplicación intentará usar el siguiente puerto disponible automáticamente
- Verifica la URL correcta en la consola al iniciar el frontend
-
Problemas de conexión ROS2:
source /opt/ros/galactic/setup.bash cd aidguide_04_ws source install/setup.bash
-
Errores en la simulación de Gazebo:
- Asegúrate de que todos los modelos están correctamente instalados
- Reinicia el simulador con:
killall -9 gzserver gzclient ./scripts/start-ros2-gazebo.sh
Para iniciar la integración entre la interfaz web y el sistema de navegación por waypoints, sigue estos pasos:
- Inicia el sistema ROS y Gazebo:
./scripts/start-ros2-gazebo.sh- En una nueva terminal, inicia el puente entre la web y el seguidor de waypoints:
cd aidguide_04_ws
source install/setup.bash
ros2 launch aidguide_04_my_nav2_system web_navigation_bridge.launch.py- En una nueva terminal, inicia el frontend web:
./scripts/start-frontend.sh-
Abre tu navegador y visita la página de rutas en: http://localhost:3000/routes
-
Selecciona una ruta y haz clic en el botón "Iniciar Navegación" para que el robot comience a recorrer los waypoints en Gazebo.
Si encuentras algún problema, verifica lo siguiente:
- Asegúrate de que ROS Bridge está funcionando correctamente (debería iniciarse automáticamente con el archivo de lanzamiento)
- Verifica que el robot esté correctamente localizado en el mapa de Gazebo
- Comprueba que la conexión entre el frontend y ROS Bridge sea correcta (deberías ver un indicador verde en la interfaz web)