Maestro de la planificación de rutas
Visión general
Sección titulada «Visión general»La planificación de rutas es la tecnología central del vuelo autónomo del drone. En este proyecto aprenderás a implementar la planificación autónoma de rutas del drone con el algoritmo A*.
Lo que aprenderás
Sección titulada «Lo que aprenderás»- Principios del algoritmo A*
- Búsqueda heurística
- Bases de teoría de grafos
- Optimización de algoritmos
Materiales necesarios
Sección titulada «Materiales necesarios»| Artículo | Cantidad | Descripción |
|---|---|---|
| Drone ESP32-S3 | 1 | - |
| Ordenador | 1 | Con Python + Pygame |
path_planner.py |
1 | Simulador de planificación de rutas |
Paso 1: Entender el algoritmo A*
Sección titulada «Paso 1: Entender el algoritmo A*»Función heurística
Sección titulada «Función heurística»f(n) = g(n) + h(n)
g(n)es el coste desde el origen hasta el punto actualh(n)es el coste estimado desde el punto actual hasta el destino
Lista abierta / lista cerrada
Sección titulada «Lista abierta / lista cerrada»Gestionan los nodos pendientes de explorar y los ya explorados.
Paso 2: Abrir el proyecto
Sección titulada «Paso 2: Abrir el proyecto»Descomprime path_planning.zip y ábrelo con VS Code.
Paso 3: Implementar la función central del algoritmo A*
Sección titulada «Paso 3: Implementar la función central del algoritmo A*»Abre astar.c e implementa la búsqueda A*:
void astar_search(Point start, Point goal, Obstacle* obstacles, int obs_count) { // 1. Inicializar las listas abierta y cerrada List open_list, close_list; list_init(&open_list); list_init(&close_list);
// 2. Añadir el punto de inicio a la lista abierta Node start_node; start_node.pos = start; start_node.g = 0; start_node.h = calculate_heuristic(start, goal); start_node.f = start_node.g + start_node.h; list_add(&open_list, &start_node);
// 3. Bucle principal while (!list_is_empty(&open_list)) { // Seleccionar de la lista abierta el nodo con menor valor f Node* current = get_min_f_node(&open_list);
// Comprobar si se llegó al destino if (is_goal(current->pos, goal)) { // Retroceder para generar la ruta generate_path(current); return; }
// Mover el nodo actual a la lista cerrada list_remove(&open_list, current); list_add(&close_list, current);
// Generar los nodos vecinos generate_neighbors(current, &open_list, &close_list, goal, obstacles, obs_count); }}Paso 4: Probar el algoritmo
Sección titulada «Paso 4: Probar el algoritmo»- En
path_planner.py, define el origen, el destino y los obstáculos - Ejecuta el simulador y observa si el algoritmo encuentra la ruta óptima
Paso 5: Integrar en el drone
Sección titulada «Paso 5: Integrar en el drone»Convierte los datos de la ruta en comandos de vuelo del drone y prueba el vuelo en interiores.
Solución de problemas
Sección titulada «Solución de problemas»La planificación de rutas falla
Sección titulada «La planificación de rutas falla»- Comprueba la configuración de los obstáculos
- Ajusta la función heurística
La ruta no es suficientemente suave
Sección titulada «La ruta no es suficientemente suave»- Añade un algoritmo de suavizado de rutas
- Aumenta la densidad de puntos de paso
Sensación de logro
Sección titulada «Sensación de logro»¡Enhorabuena! Has implementado el algoritmo de planificación de rutas A*, ¡la tecnología central del vuelo autónomo del drone!
Siguiente paso
Sección titulada «Siguiente paso»En el siguiente proyecto aprenderás a desarrollar un sistema de evitación de obstáculos en tiempo real.
Publicado por primera vez endrone.imagrove.com/es/advanced/path-planning/Al citar o reproducir, indica la fuente Imagrove y enlaza a esta página.
¿Dudas o problemas con este tutorial?
Inicia sesión con GitHub para comentar. Si un paso te falla, avísanos: lo verificamos y actualizamos el tutorial.
© 2026 ESP32 Drone. Todos los derechos reservados.