跳转到内容

路径规划大师

路径规划是无人机自主飞行的核心技术。在本项目中,你将学习如何用 A* 算法实现无人机自主路径规划。

  • A* 算法原理
  • 启发式搜索
  • 图论基础
  • 算法优化
物品数量说明
ESP32-S3 无人机1-
电脑1安装 Python + Pygame
path_planner.py1路径规划模拟器

f(n) = g(n) + h(n)

  • g(n) 是起点到当前点的代价
  • h(n) 是当前点到终点的估计代价

管理待探索和已探索的节点。

解压 path_planning.zip,用 VS Code 打开。

打开 astar.c,实现 A* 搜索:

void astar_search(Point start, Point goal, Obstacle* obstacles, int obs_count) {
// 1. 初始化开放列表和关闭列表
List open_list, close_list;
list_init(&open_list);
list_init(&close_list);
// 2. 将起点加入开放列表
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. 主循环
while (!list_is_empty(&open_list)) {
// 从开放列表中选择 f 值最小的节点
Node* current = get_min_f_node(&open_list);
// 检查是否到达终点
if (is_goal(current->pos, goal)) {
// 回溯生成路径
generate_path(current);
return;
}
// 将当前节点移到关闭列表
list_remove(&open_list, current);
list_add(&close_list, current);
// 生成相邻节点
generate_neighbors(current, &open_list, &close_list, goal, obstacles, obs_count);
}
}
  1. path_planner.py 中设置起点、终点和障碍物
  2. 运行模拟器,观察算法是否能找到最优路径

将路径数据转换为无人机的飞行指令,测试室内飞行。

  • 检查障碍物配置
  • 调整启发函数
  • 添加路径平滑算法
  • 增加航点密度

恭喜你!你已经实现了 A* 路径规划算法,这是无人机自主飞行的核心技术!

在下一个项目中,你将学习如何开发实时避障系统。