高级

飞行科学家

从「理解」到「创造」的终极挑战

适合高中生/大学低年级,已完成中级教材。学习周期:2-3 个月,每天 2-3 小时。
需要掌握 C 语言、Python,以及基本的线性代数和概率论知识。

教材理念

核心:算法驱动,系统设计,通过创造新功能和解决复杂问题,成为无人机的「总设计师」。

阶段项目名称核心技能难度
1路径规划大师A* 算法、启发式搜索⭐⭐⭐⭐
1视觉导航光流定位、VIO 算法⭐⭐⭐⭐⭐
2目标追踪计算机视觉、颜色识别⭐⭐⭐⭐
2AI 识别深度学习模型部署⭐⭐⭐⭐⭐
3多机通信网络ESP-NOW、MESH 网络⭐⭐⭐⭐⭐
3编队飞行多智能体控制⭐⭐⭐⭐⭐
4终极挑战系统集成、自主导航⭐⭐⭐⭐⭐⭐

阶段 1:算法设计

项目 01:路径规划大师

任务:用 A* 算法实现无人机自主路径规划,避开已知障碍物。

A* 算法的核心:启发函数 f(n) = g(n) + h(n)g(n) 是起点到当前点的代价,h(n) 是当前点到终点的估计代价。

void astar_search(Point start, Point goal, Obstacle* obs, int count) { List open_list, close_list; list_init(&open_list); list_init(&close_list); 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); while (!list_is_empty(&open_list)) { 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, obs, count); } }

项目 02:视觉导航

任务:用摄像头的光流数据实现室内定位,无需 GPS。额外硬件:OV2640 摄像头、PMW3901 光流传感器(可选)。

// 光流计算 + 视觉惯性里程计 (VIO) void vio_update(float gx, gy, gz, ax, ay, az, dt, flow_dx, flow_dy) { predict_position(gx, gy, gz, ax, ay, az, dt); // IMU 预测 correct_position(flow_dx, flow_dy, dt); // 光流校正 update_estimated_position(); // 融合输出 }

阶段 2:智能感知

项目 03:目标追踪

任务:用颜色识别算法实现目标实时追踪。RGB → HSV 颜色空间转换 → 阈值过滤 → 轮廓检测 → 控制跟随。

void color_tracking(uint8_t* frame, int w, h, int* tx, int* ty) { cvt_color_rgb2hsv(frame, w, h); uint8_t mask[w * h]; hsv_threshold(frame, w, h, mask, 0,10, 100,255, 100,255); // 红色 find_contours(mask, w, h); if (has_contours()) { *tx = get_largest_contour_center_x(); *ty = get_largest_contour_center_y(); } }

项目 04:AI 识别

任务:在 ESP32-S3 上部署 TinyYOLOv3 模型,实现目标检测。需要 MicroSD 卡存储量化后的 .tflite 模型。

流程:图像预处理(resize 416x416 + 归一化)→ 加载模型 → 推理 → 后处理(NMS + 置信度过滤)。

阶段 3:系统集成

项目 05:多机通信网络

任务:用 ESP-NOW 协议实现多无人机 MESH 网络。3 架无人机 + 地面站。

void mesh_init(void) { esp_now_init(); // 添加所有无人机 MAC 地址到对等列表 for (int i = 0; i < 3; i++) esp_now_add_peer(peer_macs[i], ESP_NOW_ROLE_COMBO, 0, NULL, 0); esp_now_register_send_cb(on_data_sent); esp_now_register_recv_cb(on_data_recv); } void mesh_broadcast_data(uint8_t* data, size_t len) { for (int i = 0; i < 3; i++) esp_now_send(peer_macs[i], data, len); }

项目 06:编队飞行

任务:实现 3 架无人机的三角形编队飞行。策略:领导者-跟随者(Leader-Follower)。

void follower_control(float lx, ly, lz, ox, oy, oz) { float dx = lx + ox, dy = ly + oy, dz = lz + oz; // 期望位置 float vx = pid_controller(&pid_x, dx, current_x); float vy = pid_controller(&pid_y, dy, current_y); float vz = pid_controller(&pid_z, dz, current_z); motorsSetRatio(M1, ratio + vx - vy + vz); motorsSetRatio(M2, ratio - vx - vy + vz); motorsSetRatio(M3, ratio - vx + vy + vz); motorsSetRatio(M4, ratio + vx + vy + vz); }

项目 07:终极挑战 —— 自主导航与避障系统

任务:整合所有知识,实现完整的自主导航避障系统。

系统架构

  • 感知层:摄像头(视觉避障)+ VL53L0X 激光测距(近距离避障)+ IMU(姿态估计)
  • 规划层:A* 算法(全局路径规划)+ DWA 算法(局部动态避障)
  • 控制层:PID 控制器(姿态控制)+ 速度控制器(位置跟踪)
  • 通信层:Wi-Fi(与地面站通信)
void autonomous_flight(void) { while (1) { get_sensor_data(); update_global_path(); perform_local_avoidance(); calculate_control_commands(); send_motor_commands(); send_telemetry(); if (reached_goal()) { land(); break; } } }

进阶方向

  • 行业应用:开发面向农业植保、巡检、物流的专业无人机解决方案
  • 学术研究:探索多智能体协同、Swarm 机器人、自主导航等前沿领域
  • 创业项目:基于所学技术,开发特色无人机产品
  • 开源贡献:向 ESP-Drone 项目提交代码,帮助改进开源生态
← 中级教程 硬件规格 →