Autonomous-Ai-drone-scripts
基于NVIDIA Jetson Nano的端到端AI自主飞行控制系统,通过SSD MobileNet
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于NVIDIA Jetson Nano的端到端AI自主飞行控制系统,通过SSD MobileNet
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你站在草坪上,手里没有遥控器,只有一台嵌入了人工智能的六轴飞行器。当你说"起飞",它腾空而起;当你向前走,它自动跟随——不是靠GPS坐标,而是像老鹰盯着猎物一样,用摄像头实时捕捉你的身影,用激光雷达精确测量距离,用PID控制器微调每一个飞行姿态。这就是 sieuwe1/Autonomous-Ai-drone-scripts 所描绘的未来——一个端到端AI驱动、真正自主的多旋翼飞行系统。
当前主流的无人机自主飞行方案,大多依赖预先编程的航点轨迹或遥控器的手动干预。而这个项目提出了一个更激进的愿景:让AI直接接管飞行控制,像人类飞行员一样,从传感器原始数据出发,一步输出操纵杆指令——不需要中间层的路径规划或障碍物地图。
项目发起者 sieuwe1(GitHub用户名)同时运营 MRR Drones(multirotorresearch.com),一家专注于多旋翼飞行研究的公司。项目早期开发的端到端AI飞行员实验系统已商业化,成为MRR的专有技术。他们的开源承诺是:虽然训练工具和方法保留为商业机密,但会持续发布完全训练好的免费模型供社区使用。

图1:项目Logo,展示AI飞行控制概念
当前开源部分聚焦于两条成熟路径:自主跟踪飞行(已通过真实飞行测试,功能完整)和端到端点对点导航(处于模型训练阶段,代码未公开)。这两条路径覆盖了从爱好者DIY到商业级应用的不同层次需求。
这是目前项目最成熟、可直接复现的功能。系统由三个感知-控制链路组成:
(1)视觉感知链路(Yaw,偏航角控制)
系统使用 SSD MobileNet V2 目标检测模型(来自 NVIDIA Jetson Inference),通过 CSI 接口摄像头实时获取画面,逐帧检测画面中的"人"(ClassID = 1)。检测到人后,计算人物在画面中的中心点与图像中心的像素偏差,用 PID 控制器 将这个偏差映射为偏航角速度指令,使无人机始终面向被跟踪对象。
核心检测逻辑如下:
net = jetson.inference.detectNet("ssd-mobilenet-v2")
camera = jetson.utils.videoSource("csi://0")
detections = net.Detect(img)
for detection in detections:
if detection.ClassID == 1: # 只跟踪人
person_detections.append(detection)
(2)激光雷达感知链路(Roll,横滚角控制)
视觉系统负责水平方向(左右),而前后距离则交给 TF Luna 固态激光雷达 处理。激光雷达通过 UART 串口(/dev/ttyTHS1,115200波特率)以10Hz频率持续读取无人机与被跟踪人之间的距离。结合距离偏差和另一个 PID 控制器,系统计算出横滚角指令——距离越远,飞机俯冲追近;距离过近,则轻微横滚拉开。
(3)高度控制
通过 set_flight_altitude() 设定目标飞行高度(默认最高2.5米),飞控自动维持高度稳定。
(4)状态机管理
系统内置状态机,管理四种飞行状态:takeoff(起飞)→ track(跟踪)→ search(丢失目标后搜索)→ land(降落)。状态转换逻辑清晰,便于调试和扩展。

图2:真实飞行测试中的人体跟踪系统,AI持续锁定并跟随移动目标
这是项目最具野心的方向:训练一个端到端深度学习模型,直接从传感器原始数据(摄像头图像、IMU数据、GPS等)输出飞行控制指令。项目展示了与人类飞手的对比实验——蓝色点为人类飞手摇杆指令,红色点为AI飞手指令,轨迹高度吻合,避障行为与人类几乎一致。不过,端到端AI飞行员的技术细节和训练工具已于2024年商业化,成为MRR Drones的专有资产,开源版本将仅提供预训练模型权重。
BUILD.md 提供了完整的 ArduPilot SITL 模拟器安装指南。开发者可以在没有真实硬件的情况下,在 Ubuntu 上编译 ArduCopter 并启动仿真环境,用 follow_person_main.py --mode=test 进行全流程调试。仿真模式与真实飞行模式通过 --mode 参数切换,无需修改代码。
| 组件 | 选型 | 说明 |
|---|---|---|
| 飞控 | ArduCopter / Pixhawk | 开源飞控固件,支持Guided模式API |
| 边缘计算 | NVIDIA Jetson Nano | 嵌入式GPU,4GB版,功耗10W |
| 目标检测 | SSD MobileNet V2 | jetson-inference 内置模型 |
| 激光雷达 | TF Luna 固态激光雷达 | UART接口,测距精度±2cm |
| 摄像头 | CSI 接口摄像头 | 直接接入Jetson Nano的MIPI CSI-2接口 |
Jetson Nano 被选中的关键原因:在 10W 功耗预算内提供了足够的 GPU 算力来运行实时目标检测。项目通过 TensorRT 优化(.onnx 格式中转)将 MobileNet V2 的推理延迟降至实时级别。
modules/ 目录下按功能分离:detector_mobilenet.py 负责 Jetson Inference 目标检测封装,lidar.py 处理 TF Luna 激光雷达串口通信,control.py 管理 PID 控制器与飞控连接,drone.py 提供 dronekit-python 飞控API封装,vision.py 封装 OpenCV 图像处理工具,camera.py 初始化摄像头,zed.py 提供 ZED 立体相机支持(可选)。各模块职责单一,通过 follow_person_main.py 中的状态机协调工作。
主要依赖包括:dronekit-python(连接飞控,发送MAVLink指令)、simple-pid(Python PID 控制器)、jetson-inference(NVIDIA 官方边缘AI推理库)、opencv-python(图像处理)、pyserial(激光雷达串口通信)。值得注意的是,jetson-inference 需要通过 CMake 源码编译安装,且依赖 CUDA、cuDNN 等 JetPack 组件,是整个安装过程中最复杂的环节。BUILD.md 提供了完整的分步指令。
必备硬件:NVIDIA Jetson Nano Developer Kit (B01 或 4GB)、16GB+ microSD 卡、Pixhawk/ArduCopter 飞控 + 电机电调、TF Luna 激光雷达、CSI 接口摄像头(树莓派摄像头v2或兼容款)、稳压电源(5V/4A)。
Step 1:用 Etcher 将 JetPack 镜像烧录至 SD 卡,开机完成 Ubuntu 初始配置。
Step 2(可选但推荐):剥离冗余包节省空间:sudo apt purge snapd lx* nautilus* chromium-* libreoffice* gnome* lightdm* -y
Step 3:克隆仓库并安装依赖。首先安装 jetson-inference(含 CMake 编译,约需30分钟): git clone --recursive https://github.com/dusty-nv/jetson-inference cd jetson-inference && mkdir build && cd build && cmake ../ && make -j$(nproc) && sudo make install && sudo ldconfig 然后安装 Python 依赖:python3 -m pip install scikit-build cmake opencv-python numpy dronekit pyserial simple-pid
Step 4:连接飞控、激光雷达、摄像头,按 BUILD.md 校准参数后运行。真实飞行模式(需在开阔安全场地):sudo python3 follow_person_main.py --mode=flight。仿真测试模式:python3 follow_person_main.py --mode=test。
最核心的门槛是 jetson-inference 的 CMake 编译:需要正确安装 JetPack、CUDA、cuDNN 等依赖,且编译时间较长(约30-60分钟)。其次是飞控与边缘计算板之间的 UART 串口连接和波特率配置(激光雷达 115200,飞控 115200)。最后是 PID 参数的实地调参——不同机型、重心、电池电量下,最优参数差异显著。
代码仍处于实验阶段——这是项目 README 开篇第一句话,也是最重要的事实。当前版本存在以下局限:
项目明确声明不对使用代码造成的人员或财产损失负责。在真实飞行前,强烈建议先在 SITL 仿真中完成所有功能验证。
从技术演进的角度看,这个项目代表了嵌入式AI飞行控制的一个重要方向:不再依赖云端计算,不再依赖高性能GPU工作站,而是将AI推理能力直接部署在飞行器本体的边缘设备上。这与 NVIDIA 的 jetson-inference 生态、ArduPilot 的开源飞控生态形成了良好的互补。
项目最有价值的地方在于提供了一套完整的端到端参考实现——从硬件选型、系统烧录、依赖编译,到目标检测、激光雷达融合、PID控制,再到飞控通信,几乎覆盖了AI飞行器开发的全链路。对于想入门无人机AI控制的开发者,这是一个不可多得的实战教材。
同时,项目也展现了开源与商业化之间的常见张力:核心算法(端到端AI飞行员)的训练方法和工具最终走向了闭源。这种"开源模型权重,闭源训练方法"的模式,是否会成为AI开源的新范式,值得持续关注。
如果你对 AI 驱动的机器人控制感兴趣,这个项目是进入多旋翼飞行控制领域的一个优秀起点。如果你只是想体验 AI 跟踪飞行,也可以从 SITL 仿真开始,无需购买硬件。