用多旋翼自主飞行无人机巡查 450cm×350cm 区域(分成 63 个 50cm×50cm 方格),识别、统计区域内野生动物类型(如象、虎、狼、猴、孔雀等)、所在位置及各种动物的数量。巡查时不得飞越灰色矩形禁飞区,禁飞区由数个连续方格组成,在测试时现场给出这些方格的代码,见图 1。
巡查系统由无人机及地面站构成,地面站需包含但不限于微控制器、不小于 6 吋的显示屏、按键输入设备;但不允许使用通用键盘和 PC 机。无人机下方安装激光笔,巡查时激光笔垂直向下指示航线。
1. 基本要求
(1)巡查前根据现场指定的禁飞区方格代码,在地面站用按键设置禁飞区。要求在显示屏按 9×7 方格画出巡查航线,航线需覆盖禁飞区以外所有方格。
(2)无人机从红色起飞区域起飞,在 120±10cm 高度按规划的航线巡查,飞行时不得偏离航线;巡查完成时间不得超过 300s,越快越好。
(3)巡查发现某方格中有野生动物时,识别动物种类及数量;将方格代码、动物名称及数量发送到地面站实时显示并保存,要求事后能调出显示。
(4)无人机完成巡查后,在地面站显示所发现动物的名称及每种动物数量。
2. 发挥部分
(1)巡查中发现野生动物时,用机载激光笔光斑照射动物,要求机载激光笔光斑照射在动物体态轮廓上。
(2)巡查完成后,无人机以 45°±5°俯角准确稳定降落到起飞区域,如图2 所示。开始降落时用 LED 灯闪烁指示;降落后无人机中心应不偏离红色起飞区域。
(3)其他。
1. 巡查区域说明
(1)参赛队在赛区提供的场地测试,参赛队不得擅自改变测试环境条件。
(2)根据赛题附件中地貌图制作 500cm×400cm 尺寸的哑光喷绘布地面。喷绘前做如下设计:在原始地图基础上,四周各空出 25cm 空间,形成 450cm×350cm 的巡查区域;图上绘制横竖间距 50cm、线宽 0.05cm 的灰色虚线,将巡查区域划分成 63 个方格,横向为 A1~A9,纵向为 B1~B7,方格以代码 AnBm(如 A3B5)命名。
(3)图 1 所示,禁飞区为三个连续方格构成的灰色(R-180、G-180、B-180)矩形,根据测试时给出方格代码,将灰色喷绘布粘贴在地图指定位置。
(4)动物体态图选自于赛题附图,共有五种动物,各有多种形状;根据动物体型差异大致以(象:虎:狼:猴:孔雀=2:1:1:1:1)的比例,象的长度为 30cm,印制动物图片,沿动物外廓线剪去空白,背面粘贴双面胶粘贴到地图上。
(5)无人机巡查时,机载激光笔光斑扫到方格内,即视为巡查覆盖了该区域;若机载激光笔扫过的轨迹与规划的航线不一致,则判定为偏离航线;偏离航线或漏查方格将扣分。
(6)巡查区上方长边、右侧短边各有一条 1.8cm 宽黑色标志线,可用于无人机辅助定位;也可采用其他方法定位,但无人机以外不得有其他摄像头。
(7)500cm×400cm 地图四周及顶部设置安全网,支架在安全网外。若有辅助定位装置,须在地图区域及其上方空间之外。
(8)测试现场避免阳光直射,但不排除顶部照明灯及窗外环境光照射,参赛队应考虑到测试现场会受到外界光照或室内照明不均等影响因素;测试时不得提出光照条件要求。参赛队应该考虑到巡查区地图存在色彩差异。
2. 人机要求
(1)参赛队使用无人机时应遵守中国民用航空局的相关管理规定。
(2)无人机最大轴间距不大于 45cm。
(3)无人机桨叶必须全防护,否则不予测试。
3. 测试要求与说明
(1)调试及测试时参赛队员必须佩戴防护眼镜,戴防护手套,穿长袖长裤。
(2)测试地图由赛区统一喷绘铺设;测试时禁飞区的位置现场抽签决定;被测动物图片在赛题附图中选择,尺寸大小符合说明 1(4)项的规定,由赛区统一印刷提供。
(3)测试前抽签决定动物图片及所在位置,参赛队员将给定动物图片粘贴在指定方格内,图片方向可由参赛队员决定。
(4)机载激光笔照射在地面的光斑直径不得大于 1cm;巡查时激光笔必须垂直向下。
(5)巡查时,无人机载激光笔光斑轨迹需与规划航线相同;偏离或遗漏将扣分。
(6)基本要求与发挥部分一次完成;起飞后中途停止,已完成部分成绩有效。可以测试两次,取综合成绩高的一次。
(7)起飞前,无人机可手动放置到起飞区域;手动一键启动起飞,起飞后整个飞行过程中不得人为干预;若采用无人机以外的启动或急停装置,一键
启动起飞操作后必须立刻将装置交给评审人员。
(8)每次测试全过程中不得更换电池;两次测试之间允许更换电池,更换电池时间不大于 2 分钟。
GPT-4o给出的建议
根据你提供的《H题:野生动物巡查系统》完整试题要求,以下是对平台选择、设计方案、关键要点与考核技能点的全面分析,帮助你和团队在4天内高效完成任务。
本题要求设计一个基于多旋翼无人机 + 地面站的野生动物自动巡查系统,具备以下核心功能:
模块 | 功能说明 |
---|---|
地面站 | 设置禁飞区、航线规划、动物信息显示与记录 |
无人机 | 按规划路径飞行,识别动物种类/数量,激光标定 |
通信模块 | 无人机与地面站双向通信 |
显示与操作 | ≥6英寸屏幕,按键输入航线设定,结果显示 |
选项 | 推荐型号 / 模块 | 理由 |
---|---|---|
飞控系统 | Pixhawk 4 / Cube Orange | 开源,支持路径规划,稳压性好 |
图像识别 | Jetson Nano / ESP32-CAM | 带硬件AI加速,轻量 |
通信模块 | 433MHz LoRa / NRF24L01 | 可靠,低功耗远距离通信 |
激光模块 | 点状红光激光模组(≤1cm) | 控制简单、便于垂直安装 |
定位 | UWB 或视觉SLAM | 禁止GPS环境建议用视觉定位 |
模块 | 推荐方案 |
---|---|
MCU主控 | STM32F407 / MSPM0G3507 |
显示模块 | 7寸TFT屏(带触控或按键) |
按键输入 | 多个独立按键或触摸屏界面 |
通信 | 同无人机匹配的LoRa/NRF模块 |
存储 | EEPROM / Flash 存储巡查数据 |
禁飞区由现场指定的格子代码设置
系统应根据禁飞区自动生成完整覆盖的“蛇形”航线
飞行轨迹光斑轨迹需与规划一致,确保判定有效
需支持识别象、虎、狼、猴、孔雀(图形轮廓识别或AI模型)
建议使用颜色、轮廓 + 模板匹配 + 面积判断
或训练轻量级YOLO模型(如 YOLOv5n)部署在 Jetson Nano
光斑需垂直向下指向动物位置
可用伺服机构调节激光方向(配合视觉识别目标中心)
支持 45°±5° 稳定斜角降落
飞控需支持姿态控制与辅助定位(黑线辅助或图像辅助)
实时传输方格位置 + 动物类型 + 数量至地面站
地面站可记录、查询、回显识别信息
类别 | 具体内容 |
---|---|
嵌入式系统 | STM32 或 MSPM0 控制系统,按键、显示、人机交互设计 |
无人机控制 | 路径规划、自主飞行、避障(禁飞区设定) |
图像识别 | 轻量级AI模型部署、图像分割与特征识别 |
通信系统 | 无线通信模块配置,双向数据通信 |
激光控制 | 激光笔控制逻辑,定位精度,伺服电机控制 |
降落控制 | 姿态控制,斜坡降落,状态指示(LED) |
数据管理 | 动物识别结果分类统计、历史数据保存与查询 |
用户界面 | 地面站UI显示,按键输入与禁飞区设定逻辑 |
队员 | 主要工作 |
---|---|
A | 无人机飞控接入、路径规划与激光控制 |
B | 图像识别模型训练与部署,图像处理算法 |
C | 地面站开发(UI+通信+数据处理)、调试协同 |
以下是针对 H 题《野生动物巡查系统》中图像识别模块的 MCU/边缘AI识别代码框架,分别给出:
使用 OpenMV(低功耗 Python 环境)
使用 Jetson Nano(YOLOv5n 轻量模型部署)
通用图像识别模块架构说明
OpenMV 支持轻量图像识别、形状检测、颜色识别等,适合用于识别轮廓明显的动物图卡。
main.py
)import sensor, image, time, lcd, pyb
# 标签定义
ANIMAL_CLASSES = ['elephant', 'tiger', 'wolf', 'monkey', 'peacock']
# 初始化摄像头
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)
lcd.init() # 若连接LCD显示
clock = time.clock()
# 加载已训练的模型
net = image.load_cnn("/model.animal.tflite") # 使用训练好的模型
while(True):
clock.tick()
img = sensor.snapshot()
# 推理识别
out = net.classify(img) # 推理
max_idx = out.index(max(out)) # 找出概率最大类别
label = ANIMAL_CLASSES[max_idx]
# 显示/标注
img.draw_string(10, 10, label, color=(255, 0, 0))
lcd.display(img)
# 串口输出识别结果
print(label)
使用 Edge Impulse / Teachable Machine 训练 .tflite
模型
图像要求轮廓清晰(可贴动物图卡)
支持最多 5 类动物,自定义模型大小建议 < 1MB
适合识别真实动物图像,部署轻量神经网络,具备高准确率。
main_detect.py # 主程序
models/ # YOLOv5n 训练模型
utils/ # 图像处理工具
animal_classes.txt # 标签映射文件
main_detect.py
代码核心import torch
from utils.torch_utils import select_device
from pathlib import Path
from utils.general import non_max_suppression
from utils.datasets import LoadImages
from models.experimental import attempt_load
# 加载模型
device = select_device('')
model = attempt_load('models/yolov5n_animals.pt', map_location=device)
model.eval()
# 加载测试图像流
dataset = LoadImages('/dev/video0', img_size=320)
for path, img, im0s, vid_cap in dataset:
pred = model(img.to(device))[0]
pred = non_max_suppression(pred, 0.25, 0.45)[0]
for det in pred:
x1, y1, x2, y2, conf, cls_id = det
label = model.names[int(cls_id)]
print(f'Detected: {label}')
使用 YOLOv5 + Roboflow 数据集构建器快速生成动物分类训练集
训练 10 epochs 即可达到较高识别率
模型导出为 yolov5n_animals.pt
无论使用哪种平台,识别结果都需转化为:
struct DetectResult {
char type[12]; // 动物种类:如 "elephant"
int count; // 识别数量
int x, y; // 图像中心坐标或激光控制位置(相对)
};
结果通过串口 / SPI / LoRa 发回地面站用于显示。
平台 | 优点 | 缺点 |
---|---|---|
OpenMV | 功耗低,简单部署,易训练 | 准确率低,仅适合图卡识别 |
Jetson Nano | 算力强,YOLO支持好 | 功耗大,重量对无人机有限制 |
ESP32-CAM + CNN | 简化型CNN推理 | 运算速度慢,适合小型图案识别 |
如你有具体平台选定(如希望使用 OpenMV4 / Jetson / STM32配OV2640),我可以为你继续提供:
.tflite
模型训练工具建议
控制激光对准图像中心逻辑代码
图像区域动物数量估计方法
以下是**全国大学生电子设计竞赛 H 题《野生动物巡查系统》**中地面站的完整程序结构框架,适用于 MSPM0 / STM32 / RP2040 等 MCU 平台,支持:
禁飞区设定
航线规划
动物识别结果接收与显示
一键启动巡查任务
功能模块 | 描述 |
---|---|
按键输入 | 设定禁飞区域、启动任务 |
显示输出 | 显示当前航线、识别种类与数量 |
通信接收 | 接收无人机识别数据(LoRa/NRF) |
数据存储(可选) | EEPROM/Flash 保存识别记录 |
航线规划算法 | 自动生成避开禁飞区的蛇形路径 |
int main(void)
{
System_Init(); // 时钟、IO初始化
Display_Init(); // OLED / TFT 显示屏初始化
Keypad_Init(); // 按键初始化
Comm_Init(); // LoRa/NRF串口通信初始化
RoutePlan_Init(); // 航线表结构初始化
Memory_Load(); // 加载历史记录(可选)
while(1)
{
Key_Scan(); // 读取用户按键
Handle_Menu(); // 设置禁飞区、启动任务
Receive_Comm_Data(); // 接收动物识别结果
Update_Display(); // 显示刷新
}
}
menu.c/h
—— 禁飞区与任务配置void Menu_HandleKey(uint8_t key_val)
{
if (state == MENU_EDIT_ZONE)
Toggle_NoFly_Zone(grid_cursor_x, grid_cursor_y);
else if (state == MENU_START)
Start_Mission();
}
禁飞区状态为二维数组:bool nofly[8][8]
按键方向控制格子游标,确认键切换禁飞状态
route_plan.c/h
—— 航线规划模块void Plan_Snake_Route()
{
int count = 0;
for (int y = 0; y < 8; y++) {
for (int x = (y % 2 == 0 ? 0 : 7); (y % 2 == 0 ? x < 8 : x >= 0); x += (y % 2 == 0 ? 1 : -1)) {
if (!nofly[x][y]) {
route[count++] = (y << 4) | x; // 位置编码
}
}
}
route_len = count;
}
规划顺序:蛇形扫描,避开 nofly[x][y]
格式建议:每个位置 8-bit 编码,4bit x + 4bit y
comm.c/h
—— 通信模块void Comm_Receive_Handler()
{
// 示例协议:位置(1B) + 类型(1B) + 数量(1B)
if (UART_Available()) {
uint8_t pos = UART_Read();
uint8_t type = UART_Read();
uint8_t count = UART_Read();
Record_Detection(pos, type, count);
}
}
可接收如下数据包:
[Grid Index] + [Animal Type ID] + [Count]
可选:ACK机制、校验字节增强稳定性
display.c/h
—— 显示逻辑(OLED/TFT)void Display_Update()
{
Draw_Grid(nofly);
Draw_Route(route, route_len);
Show_Animal_Counts(); // 识别结果统计
}
显示模式:
禁飞区灰色
航线蓝色线条
动物图标 + 数量标注(如“🐘×2”)
storage.c/h
—— 记录保存(可选)void Record_Detection(uint8_t pos, uint8_t type, uint8_t count)
{
detection_log[pos][type] += count;
}
可使用 Flash / EEPROM 记录历史数据
启动时读取/初始化
字节 | 内容 | 描述 |
---|---|---|
0 | 位置索引 | 0~63(8×8地图) |
1 | 动物类型ID | 0~4 |
2 | 数量 | 1~255 |
动物类型对应:0=象,1=虎,2=狼,3=猴,4=孔雀
┌────────────────────────┐
│ 野生动物巡查系统 │
├────────────────────────┤
│ 禁飞区设置中… │
│ 当前格子:(3,4) │
│ 状态:可飞 │
├────────────────────────┤
│ 已识别:象×3 虎×1 狼×2 │
└────────────────────────┘
模块 | 建议型号 |
---|---|
MCU | MSPM0G3507 / STM32F103 |
显示屏 | 2.4寸 TFT SPI 或 OLED |
按键 | 5个独立按键:上下左右确认 |
通信模块 | LoRa SX1278 / NRF24L01 |
储存(可选) | W25Q32 / 24C256 EEPROM |
如你确定使用某一 MCU 平台(如 MSPM0 / STM32 / Arduino),我可以继续生成完整代码框架或 Keil / STM32CubeMX 工程结构模板。
是否还需要:
✅ 禁飞区图形编辑交互逻辑
✅ 按键控制 FSM 状态图
✅ OLED 字模显示设计
以下是**全国大学生电子设计竞赛 H 题《野生动物巡查系统》**的项目报告模板,便于团队在4天内高效组织设计与撰写成果。可直接用于 Word 排版,如需 .docx
文件我也可为你生成。
队伍编号:_______
参赛学校:_______
队员姓名:、、_______
指导老师:_______(如有)
比赛时间:2025年7月30日 ~ 8月2日
简要总结题目核心要求和设计目标:
本课题旨在设计一套由地面站与多旋翼无人机组成的“野生动物巡查系统”,实现禁飞区设定、路径规划、动物图像识别、激光标定与识别结果回传等功能。本系统需具备自动化、可视化、人机交互友好、飞行轨迹可控、识别准确等特点。团队在有限时间内完成从系统构想到样机搭建的全流程设计。
(插入系统结构图,标出无人机平台、识别模块、激光模块、通信模块、地面站等)
模块 | 功能说明 |
---|---|
无人机平台 | 飞控控制、自主巡航、轨迹生成、激光指向 |
识别模块 | 图像采集、动物种类识别与数量统计 |
激光控制模块 | 图像目标位置对准、激光打点 |
通信模块 | 实时回传识别结果(动物种类、数量、位置) |
地面站 | 设置禁飞区、显示航线与识别信息、记录历史数据 |
平台 | 型号 | 用途 |
---|---|---|
飞控系统 | Pixhawk 4 | 飞行轨迹控制 |
图像处理 | OpenMV / Jetson | 动物识别 |
MCU主控 | MSPM0 / STM32F4 | 地面站逻辑 |
通信模块 | LoRa SX1278 | 远距离通信 |
显示模块 | 2.4寸TFT / OLED | 地面站界面 |
激光模块 | 红光激光二极管+伺服 | 激光打点控制 |
插入飞控连接图、图像识别模块电源与通信结构、地面站 MCU IO 接口图等
插入流程图:起飞 → 航线巡查 → 图像识别 → 激光打点 → 数据回传 → 降落
图像采集 → 模型推理 → 目标标定 → 数据编码发送
模块名 | 功能说明 |
---|---|
菜单管理 | 设置禁飞区、开始巡查 |
通信接收 | 解码识别数据 |
航线规划 | 自动避障路径生成(蛇形遍历) |
OLED显示 | 实时显示识别结果与统计图 |
使用训练好的 TFLite / YOLO 模型进行轻量推理
支持识别象、虎、狼、猴、孔雀五种动物
图像识别坐标中心 → 映射为伺服角度 → 精准打点
实现自动对准目标并发出激光指示
通过按键设定禁飞格子(8×8地图)
系统自动生成蛇形避障路径
禁飞区使用 EEPROM 存储支持断电恢复(可选)
测试项目 | 要求 | 实测结果 | 是否达标 |
---|---|---|---|
禁飞区设定 | ≤5秒设定完毕 | 3.2秒 | √ |
路径覆盖完整性 | 无遗漏方格 | 全覆盖 | √ |
图像识别准确率 | ≥80% | 91% | √ |
激光标定偏差 | ≤1cm | 0.8cm | √ |
数据回传实时性 | <1s 延迟 | 600ms | √ |
系统稳定工作时间 | ≥10min | 20min | √ |
使用蛇形航线 + 禁飞区避障算法自动生成路径
嵌入式图像识别模块部署轻量 AI 模型
激光点自动指向识别目标中心,提高打点精准性
地面站支持图形化界面、统计与历史记录
队员 | 分工内容 |
---|---|
张三 | 飞控对接、激光伺服控制、电路搭建 |
李四 | 图像识别模型训练、OpenMV/Jetson 部署 |
王五 | 地面站开发、通信协议、任务逻辑流程 |
简要总结项目开发过程中的挑战、亮点与收获,例如:
在本次竞赛中,我们深入掌握了嵌入式平台、图像识别算法、飞行控制与人机交互等关键技能。团队成员分工明确、沟通高效,在极短的时间内完成了一个完整系统的构建。通过实际测试验证,系统识别精度与功能完整性均达到了预期指标。
电路原理图 / PCB截图
模型识别图例(输入图 + 输出标签)
核心代码片段(识别、通信、显示等)
实测图像与结果表格
关键技术文献参考