论文信息

  • 标题: AI generated drone command and control station hosted in the sky
  • 作者: Peter J. Burke(加州大学尔湾分校 电气工程与计算机科学系)
  • 发表: npj Artificial Intelligence, 2, 43 (2026),2026 年 4 月 15 日
  • DOI: 10.1038/s44387-026-00101-6
  • 代码: GitHub - PeterJBurke/WebGCS
  • 预印本: arXiv:2508.02962(2025 年 8 月)

一、一句话概括:机器给机器造了大脑

这篇发表在 Nature 旗下 npj Artificial Intelligence 的论文做了一件听起来像科幻但实际上已经飞上天的事:用 LLM 从零开始编写一个完整的无人机指挥控制站(GCS),部署到树莓派上随无人机一起飞到天上,让无人机自身成为一个飞行网站

整个过程中,没有一行代码是人类写的。人类只做了一件事——写 prompt。

这项工作由 UCI(加州大学尔湾分校)教授 Peter Burke 独立完成。Burke 并非 AI 研究者,而是纳米电子学和无人机工程领域的专家——他此前用人工编码花了 4 年时间(动用三届本硕学生)开发了类似功能的 CloudStation,并用它创造了吉尼斯世界纪录:通过互联网从地球一端遥控另一端的无人机飞行,距离 18,411 公里。

现在,同样的功能,AI 只用了约 100 小时的人类时间(2.5 周)和约 10,000 行代码就完成了。


二、为什么这篇论文重要?

2.1 无人机软件栈的层次结构

要理解这篇论文的定位,需要先理解无人机的”大脑”分层:

层级 功能 典型软件 代码规模 AI 能否从零生成?
低层固件 电机控制、姿态自稳 Ardupilot, PX4, Betaflight ~100 万行 目前不行
中层指控 遥测、航点任务、起飞/降落 Mission Planner, QGroundControl 数万~数十万行 本文证明可行
高层自主 避障、路径规划、自主决策 ROS2 ~250 万行 目前不行

Burke 的洞见是:低层固件(Ardupilot 约 100 万行)和高层自主(ROS2 约 250 万行)超出了当前 LLM 的能力边界,但中间层的 GCS 恰好在 LLM 的能力范围内——约 10,000 行代码,涉及 Python、HTML、JavaScript、CSS、Bash 等多语言协作。

2.2 两个核心成果

论文有两个并列的核心成果:

成果 1 — “过程”(The Process):证明了用生成式 AI 编写完整的无人机指控代码是可行的,并系统记录了开发流程、踩坑经历和工程经验。

成果 2 — “架构”(The Architecture):将 AI 生成的 Web GCS 部署到无人机机载的树莓派上,创造了全球首个”天空中的飞行网站”——无人机自身托管网站,飞手只需一个浏览器就能从任何地方控制无人机。


三、开发过程:4 个 Sprint 的完整复盘

Burke 把整个开发过程分为三个阶段、四个冲刺(Sprint),每个阶段代表了一次方法论的升级。这个过程本身就是论文最有价值的部分之一——它是 LLM 编码能力的真实压力测试。

3.1 Phase I:浏览器聊天 + 复制粘贴

Sprint 1:Claude(200K tokens)

Burke 从最简单的 prompt 开始:

“Write a Python program to send MAVLink commands to a flight controller on a Raspberry Pi. Tell the drone to take off and hover at 50 feet.”

Claude 生成了一个功能性原型。令人惊喜的是,LLM 主动提出了额外功能建议:”要不要加航点高度设置?多航点规划?返航功能?地理围栏?”——这证明模型对无人机领域有深入的知识积累。

但约 12 个 prompt 后,对话因 token 限制(200K)突然终止。Burke 尝试新开两个会话继续开发,但都迅速耗尽 token 且无法产出可飞行的代码。

Sprint 1 的教训:200K token 不够用。单文件安装脚本约 2,000 行(混合了 Python、HTML、JavaScript、CSS、Bash),已达到当时 LLM 的极限。预计耗时 16 小时,其中一半以上在等待 AI 响应。

Sprint 2:Gemini 2.5(1M tokens)

2025 年 3 月 Google 发布 Gemini 2.5 公测版,token 上限扩展到 1M——是 Claude 的 5 倍。Burke 重启项目。

使用了 5 个上下文窗口,每个约 500K tokens(超过 500K 后 LLM 开始”遗忘”早期内容)。每个窗口约 25 个 prompt,多数是报告 bug 并要求修复。

调试方法非常直接:把错误信息粘贴给 LLM,让它自己修。Burke 刻意不手动阅读代码查 bug——这违背项目的精神。

最大的 bug:HTML 嵌套在 Bash 脚本中的转义语法——shell 脚本需要创建 HTML 文件并写入内容,这个嵌套语法反复出错。

Sprint 2 中期产出了第一个可飞行的原型,但地图位置更新仍不正常。预计耗时 30 小时。

3.2 Phase II:IDE 集成

Sprint 3:Cursor IDE

单文件脚本方案太笨拙了。Burke 转向 Cursor IDE(VS Code 分支),优势在于:

  • AI 可以聚焦于代码库的特定部分(如”改一个按钮颜色”),不需要将整个代码库塞入上下文
  • 与 GitHub 无缝同步,每个版本都有版本控制
  • 可以在本地测试网站和 Python 代码

Sprint 3 中期产出了第一次完全成功的飞行测试:模式切换、起飞、降落、返航、实时地图定位、点击飞行、解锁/锁定。

遇到的挑战

  • 简单的 UI 更改(如将 IP 地址从硬编码改为网页输入)出人意料地困难——因为单个文件仍然太大,模型无法追踪代码变更如何影响其他模块
  • 无人机信息流的动态追踪(从无人机→后端→前端→反馈)是 LLM 的弱项——涉及瞬态事件处理(连接/断开、在飞/在地)
  • 尝试让 LLM 重构代码以缩小文件大小时,反而引入了更多 bug

Sprint 3 耗时约 30 小时,约 35K 行代码(含重写),51 次 Git 提交。

3.3 Phase III:自动化测试驱动

Sprint 4:Windsurf IDE

最后一个阶段引入了关键方法论创新:测试驱动的 AI 编码

LLM 被给予一个具体的功能测试目标,然后自行迭代修改代码直到测试通过——人类被从调试环节中移除。这戏剧性地提高了开发效率。

Burke 切换到 Windsurf IDE(另一个 VS Code 分支),完成了代码重构、语音通知、IP 地址选择等功能。Sprint 4a 约 30 小时(14K 行代码,41 次提交),Sprint 4b 仅 8 小时(44 次提交)就完成了最终的 v2.0。

3.4 开发统计总结

指标 数值
总人类时间 ~100 小时(2.5 周)
总 Git 提交 120 次
最终代码量 ~10,000 行
使用的 LLM Claude 3.5/3.7, ChatGPT 4.0, Gemini 2.5
使用的 IDE VS Code, Cursor, Windsurf
编程语言 Python, HTML, JavaScript, CSS, Bash
人类写的代码行数 0

四、与人工编码的效率对比

4.1 对比 CloudStation(同作者的人工编码项目)

Burke 此前主导的 CloudStation 项目功能几乎完全相同,开发历程:

迭代 开发者 耗时
v1 6 名本科生 2 个学季
v2 3 名研究生 2 个学季
v3 1 名研究生 2 个学季
v4 Burke 本人 1-2 周
总计 ~2,000 小时

AI 编码(本文):100 小时。效率提升 ~20 倍。

4.2 对比 COCOMO II 行业估算

使用软件工程行业标准的 COCOMO II 成本模型(南加州大学 Boehm 教授开发)估算:

PM=A×(size)bPM = A \times (size)^b

A=2.94A = 2.94b=1.15b = 1.15,10K 行代码:

PM=2.94×101.1593 人月14,000 小时PM = 2.94 \times 10^{1.15} \approx 93 \text{ 人月} \approx 14,000 \text{ 小时}

人工编码(CloudStation)实际 2,000 小时(学生项目,非专业级),AI 编码仅 100 小时。COCOMO II 专业级估算的 14,000 小时更是凸显了 AI 编码的效率。

不过 Burke 诚实地指出:这只是一个数据点,不构成统计显著的 benchmark。


五、WebGCS 软件架构

5.1 三层架构

AI 完全自主设计了以下架构(人类没有给任何架构指导):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
┌──────────────────────────────────────────────────────┐
│ 飞手的浏览器 │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ Leaflet │ │ HUD 显示 │ │ 控制按钮 │ │
│ │ .js 地图 │ │ 遥测数据 │ │ 起飞/降落/返航 │ │
│ └──────────┘ └──────────┘ └──────────────────┘ │
│ │
│ ← HTTP (1) 加载页面 | ↕ WebSocket (2)(3) 指令/遥测 │
└──────────────────────────────────────────────────────┘


┌──────────────────────────────────────────────────────┐
│ WebGCS 后端(Python) │
│ │
│ Flask ─── HTTP 服务 │
│ Flask-SocketIO ─── WebSocket 支持 │
│ Gevent ─── 协程并发(非阻塞 I/O) │
│ PyMAVLink ─── MAVLink 协议解析 │
│ │
│ ← MAVLink over TCP → │
└──────────────────────────────────────────────────────┘


┌──────────────────────────────────────────────────────┐
│ 无人机 │
│ │
│ 飞控(Matek F405 + Ardupilot) │
│ UART 连接树莓派 │
│ 树莓派 Zero 2 W(托管 WebGCS) │
└──────────────────────────────────────────────────────┘

三条通信链路

  1. HTTP:后端向浏览器提供 Web 应用(初始页面 + 静态资源)
  2. WebSocket(上行):浏览器向后端发送控制指令(起飞、降落、航点飞行)
  3. WebSocket(下行):后端向浏览器推送实时遥测(位置、姿态、电池、状态)

5.2 技术选型评价

Burke 对 AI 的架构选择给出了高度评价——“如果我们自己做,会选择完全相同的方案”:

技术 选用理由 评价
Flask 轻量 Web 框架,适合单机部署 适合单机原型,不适合生产级多机管理
Flask-SocketIO 同一进程处理 HTTP + WebSocket 简化部署,适合实时遥测
Gevent 基于 greenlet 的协程并发 避免阻塞事件循环,适合连续 MAVLink 流
PyMAVLink MAVLink 标准 Python 库 与 Ardupilot 生态完全兼容
Leaflet.js 交互式地图库 轻量,标准化,与 Socket.IO 集成良好
MAVLink over TCP 可靠有序传输 安全关键指令和遥测排序的必要选择

唯一的不足是 Flask 不适合扩展到数千架无人机的生产环境——但 AI 被要求的是”控制一架无人机”,它做出了正确的选择。

5.3 前端 UI

AI 自主选择了实现 HUD(平视显示器)界面,包括:

  • 实时地图(无人机位置动态更新)
  • 遥测数据面板(速度、高度、电池、GPS 状态)
  • 控制按钮(Arm/Disarm、Takeoff、Land、RTL)
  • 点击地图飞行(在地图上点击目标位置,发送 Guided Mode 指令)

HUD 的实现完全是 AI 自主决定的——prompt 中只说了”要有地图和按钮”。


六、飞行测试

6.1 硬件配置

组件 型号/参数
机架 4 英寸 sub-250g 四旋翼
飞控 Matek F405 Wing(STM32 F4)
固件 Ardupilot ArduCopter v2.6
机载计算 Raspberry Pi Zero 2 W
连接 UART(飞控↔树莓派)
电源 2S LiPo,飞控 5V BEC 供电树莓派
无线链路 ELRS + 树莓派 WiFi 热点
待机电流 0.45A(其中树莓派 ~0.1A)

6.2 测试结果

成功的飞行测试序列:

  1. Arm(通过网页按钮)
  2. Takeoff(自动起飞到指定高度)
  3. Fly-to(在地图上点击目标位置)
  4. RTL(Return to Launch,自动返航)

WebGCS 托管在无人机机载的树莓派上,笔记本电脑通过 WiFi 连接到无人机创建的热点,最远测试距离 100 米,连接稳定。

最终测试中,备用遥控器完全未使用——整个飞行完全由 AI 编写的控制站控制

6.3 遇到的 Bug

初始测试中发现两个 bug:

  • 无人机位置在地图上未更新
  • 起飞指令未执行

修复方式:将 bug 报告交给 AI,AI 自行修复代码。v2.0 版本无已知 bug。


七、LLM 代码生成的能力边界

7.1 上下文窗口 vs. 代码规模

这篇论文最有价值的讨论之一是对 LLM 代码生成能力边界的实证分析。

Burke 的经验与 Rando et al. 的研究完全吻合:Claude 3.5 Sonnet 在 LongSWE-Bench 上的准确率从 32K 上下文时的 29% 暴跌到 256K 上下文时的 3%。WebGCS 的 ~10K 行代码恰好处于当前模型的能力边缘

关键观察

  • 小改动无障碍:改按钮颜色、调 UI 布局 → 模型轻松完成
  • 跨模块改动困难:修改信息流(无人机→后端→前端的数据通道)→ 模型频繁出错,因为无法同时”记住”所有模块的依赖关系
  • 重构引入新 bug:要求 LLM 将大文件拆分为小文件时,产生了大量新 bug

7.2 不同 LLM 和 IDE 的实际表现

工具 使用阶段 强项 弱项
Claude (200K) Sprint 1 初始原型速度快,主动建议功能 Token 限制过快耗尽
Gemini 2.5 (1M) Sprint 2 大上下文,可持续开发 500K token 后开始遗忘;HTML-in-Bash 语法反复出错
Cursor IDE Sprint 3 多文件管理,聚焦修改 对大文件依赖追踪能力不足
Windsurf IDE Sprint 4 Agentic 工作流,自动测试驱动

7.3 突破 10K 行的可能路径

Burke 提出了两条突破当前代码规模限制的路径:

  1. 更大的上下文窗口:直接扩大,但当前研究表明上下文越大准确率越低
  2. Agent 协同编程:更可能的解决方案。Anthropic 已发布 Claude Code Agent Teams,能够协调多个 Agent 完成 100K 行代码的项目——例如编写了一个能编译完整 Linux 内核的 C 编译器

八、”天空中的飞行网站”——技术意义

8.1 传统 GCS vs. WebGCS

特性 Mission Planner / QGC WebGCS(本文)
部署位置 地面 PC 无人机机载
客户端要求 安装专用软件 仅需浏览器
操作系统限制 Windows/Mac/Linux 任意(含手机/平板)
飞手位置 必须在 PC 旁 全球任何有网络的地方
代码编写者 人类 AI(100% 无人工代码)
代码可用于训练新 AI 否(闭源/GPL) 是(开源,已被 Replit 等复现)

8.2 对无人机行业的启示

  1. 开发民主化:一个没有 Web 开发经验的硬件教授,用 2.5 周时间就做出了过去需要团队数年开发的软件。这意味着小团队甚至个人开发者可以快速构建定制化的无人机指控系统

  2. 快速原型:对于需要特定功能(如特定传感器集成、定制任务流程)的无人机项目,AI 编码可以大幅缩短从概念到飞行验证的周期

  3. 边缘部署:将 GCS 部署到机载树莓派意味着无人机可以在无地面站的情况下通过任意网络接口被控制——对远程/偏远区域操作有直接价值

  4. 知识溢出:Burke 发现 Replit 已经能复现 WebGCS 的 UI(包括颜色选择),说明这个项目已经进入了商业 LLM 的训练数据——AI 编写的代码正在被用来训练更多的 AI


九、局限性与反思

9.1 功能覆盖范围有限

WebGCS v2.0 仅实现了基础 GCS 功能(起飞/降落/返航/航点飞行/地图遥测)。与 Mission Planner 或 QGroundControl 的完整功能集(参数调优、日志分析、固件刷写、多机管理、摄像头集成等)相比,差距巨大。

9.2 安全性未经验证

论文中的飞行测试仅在空旷场地进行,有备用遥控器兜底。没有经过严格的安全认证测试(如故障模式分析、通信中断处理、安全着陆等)。Burke 明确指出”neither of these includes rigorous, validated, certified testing”。

9.3 单一数据点

100 小时 vs. 2000 小时的效率对比来自同一个作者的两个项目,且 CloudStation 是学生项目(非专业开发),因此这个 20 倍加速的结论统计效力有限。

9.4 Flask 的扩展性限制

Flask 适合单机单无人机原型,但不适合生产级多机管理。实际部署需要迁移到更适合高并发的框架(如 FastAPI、Django Channels)。

9.5 LLM 的”遗忘”问题

项目开发期间(2025 年春夏),主要 LLM 提供商不保存 prompt 历史。Burke 因此无法标准化记录开发过程,部分 prompt 已永久丢失。


十、从”Vibe Coding”到”AI 造机器人大脑”

10.1 这篇论文在 AI 编码浪潮中的定位

2025-2026 年,”Vibe Coding”成为热门话题——用自然语言描述需求让 AI 写代码。但多数案例停留在 Web 应用、CRUD 工具或简单脚本层面。Burke 的工作将 AI 编码推到了一个新高度:生成的代码控制着一个物理系统(无人机)在真实世界中飞行

这不再是”AI 帮我写个网页”,而是”AI 给机器人造了大脑,然后机器人用这个大脑在天上飞”。

10.2 下一步:AI 编写完整的无人机大脑?

Burke 在论文中勾画了清晰的路线图:

  • 向上(高层自主):用 AI 编写类 ROS2 的自主导航代码——不只是 GCS,而是真正的自主决策
  • 向下(底层固件):能否给出 Ardupilot 的技术规格,让 AI “vibe code” 一个新版本?(100 万行代码目前不可行,但特定功能子集可能可行)
  • 横向(蜂群):AI Agent 协同编写代码,控制真实无人机蜂群

10.3 对我们的无人机仿真工作的启示

结合我们之前关于 AirSim/Colosseum 和 Gazebo+PX4 仿真的文章,这篇论文提供了一个有趣的对比视角:

  • 在仿真领域,我们仍然依赖人工编写的物理模型和控制代码
  • 但 GCS 层的 AI 编码已经被证明可行
  • 下一个突破点可能是:用 AI 生成仿真环境的配置和测试脚本——比如自动生成 SDF 模型、自动配置 PX4 机架参数、自动编写测试用例

Burke 在论文结尾的感慨值得引用:”在这项初步工作中,一个机器构建了一个机器人的大脑(In this initial work, a robot built a robot’s brain)。”


十一、参考文献

  1. Burke PJ. AI generated drone command and control station hosted in the sky. npj Artif. Intell. 2, 43 (2026). DOI
  2. Burke PJ. Robot builds a robot’s brain: AI generated drone command and control station hosted in the sky. arXiv:2508.02962 (2025). 链接
  3. Hu L, et al. “CloudStation:” a cloud-based ground control station for drones. IEEE J. Miniaturization Air Space Syst. 2, 36-42 (2020).
  4. Rando S, et al. LongCodeBench: evaluating coding LLMs at 1M context windows. arXiv:2505.07897 (2025).
  5. Boehm BW, et al. Software Cost Estimation with COCOMO II. Prentice Hall (2000).
  6. Kaufmann E, et al. Champion-level drone racing using deep reinforcement learning. Nature 620, 982-987 (2023).
  7. Carlini N. Building a C compiler with a team of parallel Claudes. Anthropic Engineering Blog (2026). 链接
  8. Macenski S, et al. Robot Operating System 2: design, architecture, and uses in the wild. Science Robotics 7, eabm6074 (2022).
  9. Guinness World Records. The farthest distance to control a commercially available UAV at 18,411 km. (2022). 链接
  10. Ramos-Silva JN, Burke PJ. A universal large language model—drone command and control interface. arXiv:2601.15486 (2026).
  11. GitHub — WebGCS 代码仓库. 链接