AI Drone (Chinese)
AI 无人机
简介
AI 无人机, 通过机载电脑 实现边缘AI运算。 让无人机可以自主飞行,并且通过AI实时控制和调整飞机作业。外加地面站实时反馈。
提前准备
第一步 : 准备无人机 | Setup the Drone
caution
上电前,请 务必移除螺旋桨! Remove all propellers before powering on for safety.
- 准备一套 ArduPilot 支持的飞控(如 Pixhawk 6C)
- 组装好电调、电机、飞控、GPS、遥控接收器等
- 连接电源模块(如 Holybro PM02D)确保安全供电
- 飞控初始化配置:
- 使用 Ardupilot 飞控设置
- 设置飞行模式、校准遥控器、加速度计、指南针、GPS 等
第二步: 准备机载电脑 | Prepare the Onboard Computer
安装系统:
- 树莓派
- 瑞莎
🛠️系统准备必要工具:
bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y git python3-pip python3-venv python3-opencv
sudo apt install -y libatlas-base-dev libjpeg-dev libtiff5-dev libqtgui4 libqt4-test
配置摄像头:
- 树莓派
- 瑞莎
bash
# 启用摄像头、SSH、跳过GUI登录、启用I2C/UART等
sudo raspi-config
bash
# 启用Radxa Camera 4K 摄像头
radxa@rock-5c:~$ rsetup
# 预览
gst-launch-1.0 v4l2src device=/dev/video11 io-mode=4 ! videoconvert ! video/x-raw,format=NV12,width=1920,height=1080 ! xvimagesink;
# 拍照
gst-launch-1.0 v4l2src device=/dev/video11 io-mode=4 ! videoconvert ! video/x-raw,format=NV12,width=1920,height=1080 ! jpegenc ! multifilesink location=file.name.jpg;
# 拍摄视频
gst-launch-1.0 v4l2src num-buffers=512 device=/dev/video11 io-mode=4 ! videoconvert ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! tee name=t ! queue ! mpph264enc ! queue ! h264parse ! mpegtsmux ! filesink location=/home/radxa/file.name.mp4
第三步:准备地面站
- 安装 Ardupilot 地面站 Mission Planning (可选)
- 安装 Linux 系统, 这里推荐在Windows下安装 WSL
第四步 测试人体识别
安装 OpenCV(如未安装):
bash
pip install opencv-python
运行测试脚本:
- OpenCV
- Yolo11n bash
Pi OS Lite (64-bit)
# face_detect.py 示例
import cv2
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret:
break
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
cv2.imshow('Face', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
bash
pip3 install -U ultralytics
yolo predict model='./yolo11n_rknn_model' source='https://ultralytics.com/images/bus.jpg'
第五步: 连接飞控与机载电脑 | Connect Flight Controller to Computer via MAVLink
-
安装虚拟环境(推荐) 为了隔离依赖,使用 Python 虚拟环境运行 MAVLink 脚本:
bashsudo apt update
sudo apt install -y python3-venv python3-pip
# 创建并进入虚拟环境
python3 -m venv ~/mav-env
source ~/mav-env/bin/activate
# 安装 MAVLink 相关包
pip install pymavlink MAVProxy -
确定MavProxy工具包已经安装
bashmavproxy.py --version
或在 Python 中测试:
pythonfrom pymavlink import mavutil
print("✅ pymavlink installed") -
确定正确接线:
- 飞控 TX → USB 转串口的 RX
- 飞控 RX → USB 转串口的 TX
- 波特率建议使用:57600, 115200, 或 921600
- 查看串口号:
bashls /dev/ttyACM* # USB 直连
ls /dev/serial0 # GPIO UART -
检测是否连接成功
- 查看飞控连接:
bashls /dev/ttyACM*
- 使用 MAVProxy 测试:
bashmavproxy.py --master=/dev/ttyACM0 --baudrate 115200 --aircraft test-drone
- 出现如下输出表示连接成功:
bashWaiting for heartbeat from /dev/ttyACM0
MAV> -
连接后在 MAVProxy 控制台输入命令:
bashstatus # 查看飞控状态(模式、电压、GPS、RC 输入等)
gpsstatus # 查看 GPS 卫星数量与位置
rc # 实时查看遥控器各通道值
param show # 查看飞控参数 -
简单通过电脑控制飞控
Mavlink# 解锁电机
arm throttle
# 锁定电机
disarm throttle
# 查看电压、电流、电源状态
battery
# 查看当前 GPS 位置
gpsstatus
# 设置模式(如:定高、巡航)
mode ALT_HOLD
mode GUIDED
# 设置参数(例如:关闭 ARM 检查)
param set ARMING_CHECK 0
# 控制特定通道输出(测试马达旋转)
servo set 1 1700
servo set 2 1500
# 保存当前参数
param save
第六步: 获取 GPS 数据
在人脸识别脚本中添加获取 GPS 坐标:
python
from pymavlink import mavutil
# 连接飞控
master = mavutil.mavlink_connection('/dev/ttyACM0', baud=115200)
master.wait_heartbeat()
# 获取 GPS 信息
msg = master.recv_match(type='GLOBAL_POSITION_INT', blocking=True)
lat = msg.lat / 1e7
lon = msg.lon / 1e7
第七步:保存图像并记录数据
示例逻辑: 检测到人脸时
保存图像 ~/captures/YYYY-MM-DD_HH-MM-SS.jpg
记录当前 GPS 与时间戳至 CSV
示例代码片段:
python
import csv
from datetime import datetime
def log_data(lat, lon):
with open('~/log/location.csv', 'a') as f:
writer = csv.writer(f)
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
writer.writerow([timestamp, lat, lon])