高级
飞行科学家
适合高中生/大学低年级,已完成中级教材。学习周期:2-3 个月,每天 2-3 小时。
需要掌握 C 语言、Python,以及基本的线性代数和概率论知识。
教材理念
核心:算法驱动,系统设计,通过创造新功能和解决复杂问题,成为无人机的「总设计师」。
| 阶段 | 项目名称 | 核心技能 | 难度 |
|---|---|---|---|
| 1 | 路径规划大师 | A* 算法、启发式搜索 | ⭐⭐⭐⭐ |
| 1 | 视觉导航 | 光流定位、VIO 算法 | ⭐⭐⭐⭐⭐ |
| 2 | 目标追踪 | 计算机视觉、颜色识别 | ⭐⭐⭐⭐ |
| 2 | AI 识别 | 深度学习模型部署 | ⭐⭐⭐⭐⭐ |
| 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 项目提交代码,帮助改进开源生态