Skip to content

RAMEL-ESPOL/Nav_Autonoma_RobotDiferencial_RAMMEL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🤖 NavBot: Navegación Autónoma con ROS 2 Jazzy y Gazebo Harmonic

ROS 2 Gazebo Ubuntu Python

Este proyecto implementa una simulación completa de un robot móvil de tracción diferencial. Integra SLAM (Simultaneous Localization and Mapping) para la generación de mapas y el stack Nav2 para la navegación autónoma, evasión de obstáculos y planificación de rutas.

✨ Características Principales

  • Simulación Física Realista: Robot modelado en URDF/Xacro con propiedades inerciales y físicas.
  • Sensores Simulados: Lidar 2D (Ray Sensor) y Odometría precisa mediante plugin DiffDrive.
  • Mapeo: Generación de mapas de ocupación estáticos usando slam_toolbox en modo asíncrono.
  • Navegación Inteligente: Uso de Nav2 para ir de un Punto A a un Punto B esquivando obstáculos estáticos y dinámicos.

🛠 Prerrequisitos

Asegúrate de tener instalado lo siguiente en Ubuntu 24.04:

  • ROS 2 Jazzy Jalisco
  • Gazebo Harmonic
  • Paquetes de Navegación y Simulación:
    sudo apt update
    sudo apt install ros-jazzy-navigation2 ros-jazzy-nav2-bringup \
    ros-jazzy-slam-toolbox ros-jazzy-ros-gz-sim \
    ros-jazzy-teleop-twist-keyboard ros-jazzy-xacro \
    ros-jazzy-nav2-simple-commander
    

Opción 1: Formato Markdown (Copiar y Pegar)

# Instrucciones de Ejecución y Simulación

Sigue estos pasos para compilar el entorno y ejecutar la simulación de navegación autónoma.

## 🛠️ Instalación y Compilación

**1. Clonar el repositorio**
```bash
git clone <https://github.com/jerimore/Nav_Autonoma_RobotDiferencial_RAMMEL.git>

2. Acceder al directorio de trabajo

cd ~/Nav_Autonoma_RobotDiferencial_RAMMEL/

3. Construir el paquete Utilizamos colcon con la opción de enlaces simbólicos para reflejar cambios en Python sin recompensar:

colcon build --symlink-install

4. Configurar el entorno (Source)

source install/setup.bash

🚀 Ejecución de la Simulación

5. Lanzar el entorno de navegación Ejecuta el siguiente comando para iniciar Gazebo ("Mundo Prueba") y RViz con la configuración de Nav2:

ros2 launch nav_bot navigation.launch.py
Lanzamiento de simulación

Inicialización del Robot

6. Estimación de la Pose Inicial (2D Pose Estimate) Una vez abiertos RViz y Gazebo, es crucial sincronizar la posición del robot.

  • Nota: Asegúrate de que el mapa en RViz y el mundo en Gazebo tengan la misma orientación.
  • Utiliza la herramienta 2D Pose Estimate en RViz para indicar dónde está el robot y hacia dónde mira.

Herramienta 2D Pose Estimate: Herramienta 2D Pose Estimate

Vista del Mundo en Gazebo: Mundo Gazebo

Verificación de Estado: Confirma que no existan errores en el panel izquierdo de RViz (Displays) ni en el estado de Nav2. Estado RViz


🎮 Modos de Operación

Tienes tres opciones para controlar el robot:

  1. Teleoperación: Usando el paquete teleop_twist_keyboard.
  2. Navegación por GUI: Usando Nav2 Goal.
  3. Navegación por Script: Ejecutando una misión automática en Python.

Opción A: Navegación mediante RViz (Nav2 Goal)

Utiliza la herramienta Nav2 Goal en la barra superior de RViz para establecer un objetivo en el mapa.

Ejemplo de uso: Nav2 Goal Ejemplo

Resultado esperado: El robot planificará la ruta y se orientará hacia el punto indicado por la flecha. Resultado Nav2

Opción B: Ejecutar Script de Navegación Autónoma

Este script envía al robot a una secuencia de puntos predefinidos (Punto A -> Espera 3s -> Punto B).

  1. Abre una nueva terminal.
  2. Navega a la carpeta del repositorio.
  3. Configura el entorno nuevamente:
source install/setup.bash
  1. Ejecuta el script de misión:
python3 mision_autonoma.py
Ejecución Script

Resultado de la misión: Verás en la consola el progreso del desplazamiento. En la simulación, el robot navegará automáticamente al Punto A, esperará 3 segundos y continuará hacia el Punto B.

Resultado Script
## 🔧 Solución de Problemas Comunes (Troubleshooting)

### 🔴 Error: "No map received" en RViz

Este error puede deberse a dos causas principales. Verifica cuál es tu caso:

**Causa 1: Configuración de QoS incorrecta en RViz**
* **Solución:** En el panel izquierdo de RViz, despliega las propiedades del elemento **Map**. Busca la opción **Topic** -> **Durability Policy** y cámbiala a `Transient Local`.

**Causa 2: Mapa inexistente para un nuevo mundo**
* **Diagnóstico:** Si estás usando un mundo nuevo (`.sdf`) pero no has generado su mapa correspondiente (`.yaml` y `.pgm`), Nav2 no tendrá referencia para navegar.
* **Solución:** Debes realizar una sesión de mapeo (SLAM) antes de navegar. Sigue estos pasos:

    1.  **Lanza la simulación con tu mundo:**
        ```bash
        ros2 launch nav_bot sim.launch.py
        ```
    2.  **Inicia SLAM Toolbox (Mapeo en vivo):**
        ```bash
        ros2 launch slam_toolbox online_async_launch.py use_sim_time:=True
        ```
    3.  **Explora el entorno:**
        Mueve el robot por toda el área para escanear los obstáculos.
        ```bash
        ros2 run teleop_twist_keyboard teleop_twist_keyboard
        ```
    4.  **Guarda el mapa:**
        Cuando el mapa en RViz esté completo, guárdalo:
        ```bash
        ros2 run nav2_map_server map_saver_cli -f ~/ros2_ws/src/nav_bot/maps/mapa_nuevo
        ```
    > **Nota:** Recuerda actualizar tu archivo `navigation.launch.py` para que apunte a `mapa_nuevo.yaml` antes de volver a lanzar la navegación.

---

### 🔴 Error: El robot no detecta obstáculos (Lidar no visible)

* **Causa:** Falta el plugin de sensores en el archivo de descripción del mundo (`.sdf`).
* **Solución:** Abre tu archivo `.sdf` y asegúrate de que el bloque `<world>` incluya el siguiente plugin:
    ```xml
    <plugin name='gz::sim::systems::Sensors' filename='gz-sim-sensors-system'>
        <render_engine>ogre2</render_engine>
    </plugin>
    ```

---

### 🔴 Error: El mapa no carga al iniciar `navigation.launch.py`

* **Causa:** Ruta del archivo incorrecta o falta de compilación.
* **Solución:**
    1.  Verifica que el nombre del archivo en `navigation.launch.py` coincida exactamente con el archivo en la carpeta `maps/`.
    2.  Asegúrate de que los cambios se hayan reflejado en la carpeta `install` recompilando el paquete:
        ```bash
        colcon build --symlink-install
        source install/setup.bash
        ```


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors