这是我在大一阶段第一次尝试Vibe coding的一份记录,目的是熟悉从想法到可运行代码的完整流程。我负责提出需求、设计框架、管理整个项目、测试和反馈等。AI agent 负责编写基础代码,debug等。实际测试使用的是 CH32V307 赤菟开发板,QMI8658 IMU芯片,这篇博客的主要目的是记录我的学习经历,代码还有很多不完善的地方,非常欢迎大家的指点和交流。
这是什么
一个用 Python 写的 FPV 四轴飞行器 3D 仿真器。可以用键盘操控屏幕里的无人机飞行,也可以接上真实的 IMU 传感器,手持传感器倾斜——屏幕里的飞机就会跟着动。
主要功能
- 键盘模式:W/S 俯仰、A/D 横滚、Q/E 偏航、空格油门,上位机同步发送指令到MCU,用于控制电机
- 手控 IMU 模式:按M切换,通过串口连接开发板,手持开发板倾斜,屏幕里的飞机实时跟随,电机同步转动
- 串口模式:按2切换,纯显示,把姿态数据通过串口传给电脑看
- FPV 视角:按 V 切换到第一人称,体验穿越机视角
- 互补滤波演示:可视化展示加速度计和陀螺仪如何融合解算姿态


开发经过
- 向AI提出项目构思,与AI讨论实现环境和整体功能框架,确定实施步骤。
- AI首先实现FPV模型的静态模型和场景展示,并根据我的需求进行修改。确定整体风格。
- 实现键盘->仿真器控制,可用键盘控制模型姿态,面板HUD同步显示。同时加入了切换第一视角功能。
- 加入串口功能,手控IMU模式可以读取串口数据作为输入,控制FPV模型运动。这一步出现了许多bug:串口数据解析不正确、IMU实际运动方向与仿真器显示方向相反、零漂严重等等。解决这些问题颇费了一番心思。
- 与AI讨论进一步优化方向,经AI提议增加了串口模式和互补滤波演示两个新模式。
- 增加高度判断,可以实时显示高度变化(相对)。
经验总结
第一次Vibe coding比较磕磕绊绊,但总的来说最后的效果还算满意。总结下来有以下几点值得留意:
- 一定让AI先写好计划再干活,明确告诉AI遇到需求没有提及或不清晰的地方直接向用户提问,不要自顾自生成。
- 命令完整清晰
- skill中强调AI生成好代码后要完完整整检查一遍(我的skill中写明了项目整体写好后用subagent从安全、质量、性能三方面检查)
- 遇到AI在执行过程中调用命令等操作反复失败的情况,立即叫停并让它分析原因
- 每次完成一个阶段任务,让AI总结在该任务中做了什么,遇到了什么困难,有没有在后续工作汇中提高效率、节省token的方法,并让它把泛化性好的方法写入skills或脚本。这一点非常重要。通过这个步骤,该项目完成后我电脑上的AI agent已经积累了代码生成规范、检查规范、工具调用规范等等一系列与我的开发环境高度适配的skills和脚本,在我的第二个项目中极大地提高了效率,并(大概)帮我省了不少token
项目开源在 GitHub,代码还有很多不完善的地方,非常欢迎指点和交流。
https://github.com/hu-led/fpv-drone-simulator.git
详细的技术文档(串口协议、坐标映射、混控公式等)见仓库中的 README。
