🤖 AidGuide 04
Sistema de guiado asistido para robots móviles basado en ROS2 Galactic con interfaz web para monitorización y control.
🚀 Descripción del Proyecto
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.
📋 Requisitos Previos
Software Requerido
- 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
Paquetes ROS2 Adicionales
sudo apt install ros-galactic-rosbridge-server ros-galactic-web-video-server
🛠️ Estructura del Proyecto
aidguide_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
🚀 Ejecución del Proyecto
Método 1: Ejecución Completa Automatizada
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.sh
Este script:
- Verifica e inicia Docker si es necesario
- Inicia el backend (MySQL, API) con Docker
- Inicia ROS2 y Gazebo
- Inicia la aplicación frontend
Método 2: Ejecución por Componentes
Si prefieres iniciar componentes individualmente:
Backend (API + Base de datos):
chmod +x scripts/start-services.sh ./scripts/start-services.shROS2 y Gazebo:
chmod +x scripts/start-ros2-gazebo.sh ./scripts/start-ros2-gazebo.shFrontend:
chmod +x scripts/start-frontend.sh ./scripts/start-frontend.shMonitoreo del robot:
chmod +x scripts/start-monitor.sh ./scripts/start-monitor.sh
🔗 Acceso a los Servicios
Una 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)
🔧 Solución de Problemas Comunes
Problemas con Docker
- 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>
Problemas con ROS2
- "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
🧪 Pruebas y CI/CD
El proyecto utiliza GitHub Actions para realizar pruebas automáticas:
Validación de Base de Datos
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
🤝 Contribución
- 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
📄 Licencia
📑 Contenidos
- 🌟 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
🌟 Descripción General
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
🏗️ Estructura del Proyecto
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
📋 Requisitos
Backend ROS2
- ROS2 Galactic
- Python 3.8+
- Dependencias específicas listadas en package.xml
Frontend Web
- Node.js 16.x o superior
- npm 8.x o superior
🚀 Instalación y Configuración
Backend ROS2
Clonar el repositorio:
git clone https://github.com/vjrivmon/aidguide_04.git cd aidguide_04Instalar dependencias de ROS2:
rosdep install --from-paths aidguide_04_ws/src --ignore-src -r -yCompilar el workspace:
cd aidguide_04_ws colcon build
⚙️ Scripts Automáticos
El 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 |
Ejecutar Scripts en Linux/Unix:
# 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
💻 Uso del Sistema
Iniciar el Sistema Completo
Iniciar la simulación:
# Linux/Unix ./scripts/start-ros2-gazebo.shIniciar 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.pyIniciar el frontend web:
# Linux/Unix ./scripts/start-frontend.shAcceder 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 |
👥 Equipo de Desarrollo
- Vicente Rivas Monferrer (Responsable) - vjrivmon@epsg.upv.es
- Irene Medina García
- Mimi Vladeva
- Hugo Belda Revert
- Marc Vilagrosa Caturla
🔧 Solución de Problemas Comunes
Frontend
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 devPuerto 3000 ocupado:
- La aplicación intentará usar el siguiente puerto disponible automáticamente
- Verifica la URL correcta en la consola al iniciar el frontend
Backend
Problemas de conexión ROS2:
source /opt/ros/galactic/setup.bash cd aidguide_04_ws source install/setup.bashErrores en la simulación de Gazebo:
- Asegúrate de que todos los modelos están correctamente instalados
- Reinicia el simulador con:
bash killall -9 gzserver gzclient ./scripts/start-ros2-gazebo.sh
Navegación Web-Waypoint
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.shEn 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.pyEn una nueva terminal, inicia el frontend web:
./scripts/start-frontend.shAbre 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.
Solución de problemas
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)
Built With
- c++
- cmake
- css
- dockerfile
- html
- javascript
- lua
- powershell
- python
- shell
- typescript
Log in or sign up for Devpost to join the conversation.