Skip to content

LucasStarita/Laberinto-FPGA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚗 Escape de Laberinto (Maze Escape)

Este proyecto documenta el desarrollo de un robot autónomo para una competencia en la cátedra Técnicas y Dispositivos Digitales II de la Universidad Nacional de Mar del Plata.
El objetivo fue crear un robot capaz de navegar y salir de un laberinto organizado en una cuadrícula de 4×4 casillas, en el menor tiempo posible.

El robot está implementado sobre una FPGA DE0-Nano con un procesador Altera Cyclone® IV.
La programación combina técnicas de diseño digital —como lógica combinacional y máquinas de estado finito— escritas en un lenguaje de descripción de hardware (HDL).


⚙️ Componentes y Sensores

El robot cuenta con los siguientes sensores y actuadores para la navegación:

  • Sensores laterales (analógicos):
    Ubicados a ambos lados del robot, detectan la presencia de paredes.
    Entregan valores de 12 bits que permiten distinguir entre detección de pared (valor alto) y ausencia de pared (valor bajo).
    Estos umbrales son configurables según las condiciones del entorno.

  • Sensor de obstáculo (digital):
    Detecta la presencia de una pared frontal.
    Un valor 0 indica pared detectada, mientras que 1 indica camino libre.

  • Sensor de línea (digital):
    Permite determinar la posición del robot dentro de la cuadrícula al reconocer líneas negras y blancas del suelo.

  • Motores:
    Dos motores de tracción (MOTOR A y MOTOR B), controlados mediante un driver L298N, permiten el movimiento y la rotación del robot.


🧩 Arquitectura del Sistema

El desarrollo se organizó en cuatro subsistemas principales, implementados en módulos independientes dentro de la FPGA:

1. Desplazamiento en línea recta

Utiliza los sensores laterales para mantener la trayectoria y ajustar la velocidad de los motores evitando colisiones.
Se implementa mediante una máquina de estados finitos (FSM) con los estados Idle, Pared_Izq, Pared_Der y Centrado.

2. Control de giros

Realiza giros precisos de 90° o 180° al detectar obstáculos frontales.
Su FSM emplea un contador interno que asegura la precisión temporal del movimiento.

3. Detección de cuadrícula

Usa el sensor de línea para detectar cambios de casilla y actualizar la posición y orientación del robot (Norte, Sur, Este u Oeste).

4. Control general

Actúa como el cerebro del sistema, integrando la información de los demás módulos.
Implementa el algoritmo de Flood-Fill, que permite determinar el camino más corto hacia la salida del laberinto.
Las decisiones de movimiento (avanzar, girar, detenerse) se determinan en función del entorno percibido.


🧠 Algoritmo de Navegación: Flood-Fill

El algoritmo Flood-Fill actualiza dinámicamente los pesos de cada celda del laberinto en función de la distancia al objetivo.
Durante la exploración, el robot:

  1. Lee los sensores y detecta paredes adyacentes.
  2. Actualiza los pesos del mapa en memoria.
  3. Decide la dirección con menor peso.
  4. Repite el proceso hasta alcanzar la salida.

👨‍💻 Autores

  • Máximo De Lellis
  • Matías Estrada
  • Santiago Mosler
  • Franco Rabini
  • Lucas Starita

📚 Universidad Nacional de Mar del Plata

Facultad de Ingeniería
Cátedra: Técnicas y Dispositivos Digitales II
Año: 2024

About

Control de un vehículo autónomo capaz de resolver un laberinto de 16 casilleros utilizando sensores analógicos y digitales mediante el algoritmo de Floodfill en FPGA, proyecto final de la asignatura Técnicas y Dispositivos Digitales 2.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors