Este proyecto es una simulación en Python de un robot de servicio autónomo pensado para trabajar en un almacén logístico organizado en cuadrícula. El programa permite ubicar paquetes en las estanterías, calcula de forma automática la ruta más eficiente evitando obstáculos en tiempo real y mueve el robot para llevar la carga hasta la zona de entrega.
- Navegación Óptima (A Pathfinding):* Implementación del algoritmo de búsqueda A* combinada con la heurística de Distancia Manhattan. Esto garantiza encontrar siempre el recorrido más corto entre dos puntos dentro de la cuadrícula.
- Gestión Dinámica de Tareas: El usuario puede agregar varios paquetes de forma interactiva en el almacén. El robot organiza su trabajo priorizando automáticamente la recogida de los paquetes que estén más cerca de su posición actual.
- Interfaz de Consola Interactiva: Cuenta con un menú sencillo y directo para operar el programa, mostrando en pantalla el avance del robot paso a paso por el almacén.
- Sin Dependencias Externas: Está desarrollado utilizando únicamente la librería estándar de Python (
heapq,os,time), por lo que se puede ejecutar en cualquier computadora con Python sin necesidad de instalar librerías adicionales.
El almacén está modelado como una matriz bidimensional de 5x5, donde cada celda representa un elemento del espacio:
| Valor | Símbolo | Descripción |
|---|---|---|
0 |
. |
Espacio Libre: Pasillos y zonas por donde el robot puede desplazarse. |
1 |
# |
Obstáculo: Estanterías o muros que el robot debe esquivar. |
2 |
R |
Robot: Posición actual del robot cuando está libre (sin carga). |
3 |
P |
Paquete: Producto pendiente de recogida en el almacén. |
4 |
E |
Zona de Entrega: Punto final donde se depositan los paquetes. |
- |
@ |
Robot Cargado: Representa al robot llevando un paquete hacia la entrega. |
Para calcular las trayectorias, el sistema utiliza la fórmula de evaluación del algoritmo A*:
Donde:
-
$g(n)$ : Costo real acumulado desde el punto de partida hasta la celda actual (cada movimiento de una casilla cuesta 1). -
$h(n)$ : Estimación heurística del costo restante desde la celda actual hasta el destino.
Como el robot se mueve dentro de una cuadrícula únicamente en las cuatro direcciones cardinales (Arriba, Abajo, Izquierda, Derecha), la heurística más precisa para este caso es la Distancia Manhattan:
De esta forma se descartan caminos innecesarios desde el principio, reduciendo el tiempo de cálculo en comparación con otros métodos de búsqueda tradicional.
Al iniciar el programa, se presenta este menú de opciones:
=== ROBOT DE ALMACEN ===
1. Agregar paquete
2. Mostrar paquetes
3. Mostrar estanterias
4. Ejecutar robot
5. Salir
Seleccione una opcion:
Durante la ejecución del robot (Opción 4), la consola actualiza el mapa en tiempo real para mostrar cada paso del recorrido:
Buscando paquete...
. . . # .
. R . # P
. . . . .
# # . # .
. . . . E
git clone https://github.com/wakoooooo/Robot-Manhattan.git
cd Robot-ManhattanNo se requiere un entorno virtual ni instalaciones por pip. Solo necesitas tener Python 3.x instalado en tu sistema:
python robot_almacen.py
# o en sistemas Windows:
py robot_almacen.pyRobot-Manhattan/
robot_almacen.py # Código fuente principal (Algoritmo A* y menú interactivo)
README.md # Documentación del proyecto y guía teórica
.gitignore # Exclusión de archivos binarios y reportes de evaluación
El desarrollo de esta simulación aplica conceptos fundamentales de:
- Estructuras de Datos: Uso de colas de prioridad mediante
heapqpara gestionar los nodos en el cálculo de rutas. - Desarrollo Limpio: Estructuración del código en funciones claras, sencillas y fáciles de mantener.
- Lógica de Automatización: Implementación de las bases algorítmicas que utilizan los robots de logística para la preparación de pedidos en almacenes reales.