电赛每日一题 · 第 21 期
来源:官方试题 PDF(SJTU 镜像)
https://nuedc-sh.sjtu.edu.cn/storage/seiee/project/cn/article/2023/08/634601406f225d81273477012d9d3fb5.pdf
主参考设计(国一)
https://oshwhub.com/px4yyds/flight
辅参考设计(国二)
https://oshwhub.com/jiu-jing-guo-min-dui/dian-sai-wu-ren-ji
抓取日期:2026-08-30 | 整理日期:2026-08-30 | 完整性:完整(官方 PDF 5 页原文已逐条核对,含评分标准表)
⚠️ 微信正文不支持外链,以上地址请复制后在浏览器打开;文末「资料清单与参考来源」另有全部参考资料地址。
▸ 赛题:2023 年全国大学生电子设计竞赛 G 题(本科组)· 空地协同智能消防系统
▸ 方向:控制类(无人机 + 地面车协同,交叉:无线通信 / 视觉识别 / 路径规划)
▸ 难度:★★★(5 项基本 + 5 项发挥,多机协同 + 激光雷达 SLAM + ROS2 导航栈 + HSV 火源识别 + 灭火包抛洒 + 限时 360s 全流程)
▸ 本文目标:把这道"空地协同"题拆成 4 大模块——感知层(激光雷达 + 视觉 + UWB)、决策层(Pixhawk + NUC + ROS2)、执行层(飞控 + 电调 + 舵机 + 消防车)、通信层(LoRa + 2.4G 串口),帮你在 4 天内把"无人机巡逻 + 消防车灭火"做成可演示作品
📌 一、赛题速览与难点剖析
一、原题再现
任务
设计一个由四旋翼无人机及消防车构成的空地协同智能消防系统。无人机安装垂直向下的激光笔用于指示巡逻航迹,按规划航线在 40dm×48dm 巡防区域全覆盖巡逻(覆盖地面 8dm 宽度区域,以缩短完成全覆盖巡逻时间为原则规划航线),发现火情后立即采取初步消防措施并将火源地点位置信息发送给消防车,消防车前往熄灭火源。空地协同巡逻及消防工作完成时间越短越好。
官方题图:消防区域示意图
题目图 1:40dm×48dm 巡防区域,左下角为坐标原点(0,0),右上顶点(48,40);图中含 6 个白色街区(消防车不得驶入)、左下方黑色区域(无人机起降点)、红色区域(消防车停车点)、淡灰色地面上淡蓝色 1dm×1dm 坐标线。图中另标注 11dm / 7dm / 5dm 三组布局尺寸。
图 1 解读:6 个白色街区分布成 2 行 3 列,街区之间形成纵横通道,消防车只能在街区以外的淡灰色区域行驶(原文:"消防车只能在街区以外区域行驶,且不得碾压边界线")。左下角黑色区是无人机起降点,红色区是消防车停车点(题目正文称"消防站"起降点/停车点在巡防区左下方,二者相邻)。坐标单位为 dm。注意:模拟火源由评委指示放置在某些白色街区中(见说明 4)——这正是题目要求消防车"在 5dm 距离内用激光笔照射灭火"的原因:街区进不去,只能远距照射。
任务
设计一个由四旋翼无人机及消防车构成的空地协同智能消防系统。无人机上安装垂直向下的激光笔,用于指示巡逻航迹。巡防区域为 40dm×48dm。无人机巡逻时可覆盖地面 8dm 宽度区域。以缩短完成全覆盖巡逻时间为原则,无人机按照规划航线巡逻。发现火情后立即采取初步消防措施,并将火源地点位置信息发给消防车,使其前往熄灭火源。空地协同巡逻及消防工作完成时间越短越好。
要求
1. 基本要求
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2. 发挥部分
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
说明(关键约束)
1. 消防巡防区域说明
1. 场地:在赛区提供的场地测试,不得擅自改变环境条件。亚光喷绘布底色淡灰(R-240/G-240/B-240);白色部分是街区,消防车不得驶入;街区以外的淡灰色地面画有 1dm×1dm 淡蓝色坐标线(R-180/G-230/B-255);左下方为原点(0,0),右上顶点(48,40);左下角黑色区域是无人机起降点,红色区域是消防车停车点
2. 行驶权限:无人机可在整个巡防区域上空飞行,消防车只能在街区以外区域行驶,且不得碾压边界线
3. 激光笔:消防车光斑直径 ≤ 2cm;无人机光斑直径 ≤ 6mm,固定不得转动(垂直向下)
4. 模拟火源:需制作 3 只带电源开关的模拟火源,根据评委指示放置在某些白色街区中;可用电池供电红色 LED,需带向上的喇叭形遮光罩(角度约 60°,高度 ≤10cm);发光部分直径 ≤2cm;竞赛结束一并封入作品箱
图 2 解读:喇叭形遮光罩向上开口(约 60° 张角)、整体高度不超过 10cm,红色 LED 位于罩底中心。遮光罩的作用有两个:一是聚光让火源更醒目便于视觉识别,二是挡侧向环境光避免外界光照误触发光敏元件——所以罩内壁建议涂黑消反光。
1. 辅助定位:巡防区上方、右侧各有一条 1.8cm 宽黑色标志线,用于无人机辅助定位,也可采用 UWB 等其他定位方式;巡防区域内坐标线仅用于方便观察航迹及消防车位置;激光笔扫到 8dm×8dm 粗线框区域内某处,即视为巡逻覆盖了该区域
2. 灭火包:可采用沙袋等软质物品,重量 ≥10g,释放抛洒方式不限
3. 安全网:40dm×48dm 巡防区四周及顶部设置安全网,支架在安全网外;若有辅助定位装置,须在巡防区及其上方空间之外
4. 光照:测试现场避免阳光直射,但不排除顶部照明灯及窗外环境光照射,参赛队应考虑光照不均影响,测试时不得提出光照条件要求
2. 无人机及消防车要求
1. 使用无人机应遵守中国民用航空局相关管理规定
2. 无人机最大轴间距 ≤45cm;桨叶必须全防护,否则不予测试;激光笔垂直向下安装,不得移动/转动
3. 起飞前无人机可手动放置到起降点;手动一键启动起飞,起飞后整个飞行过程不得人为干预;若采用机外启动或急停装置,一键启动后必须立刻将装置交给工作人员
4. 调试及测试时必须佩戴防护眼镜、防护手套,穿长袖长裤
5. 消防车为4 轮电动小车,长宽投影 ≤25cm×35cm、高 ≤40cm,不得使用麦克纳姆轮
3. 测试要求与说明
1. 测试时自带一只与消防车上相同的激光笔
2. 火源地点、无人机位置等坐标均为地面投影坐标,以巡防区左下角为原点,单位 dm;模拟火源发光部分直径 ≤2cm
3. 开始测试前,向测试评委展示含尺寸的巡逻规划航线图(方式不限)
4. 基本要求与发挥部分各项在同一按键启动后自动连续完成,期间不得人为干预;中途停止后,记录已完成部分成绩
5. 发挥部分测试前,根据评委指示用激光笔点亮某个模拟火源
6. 消防车可在巡防区内有坐标线区域行驶,碾压巡防区域边界及街区黑色边界线将扣分
7. 每次测试全过程中不得更换电池;两次测试之间允许更换,更换电池时间 ≤2 分钟
8. 发挥部分限时 360s
评分标准(速览表)
|
|
|
|
|
|---|---|---|---|
| 设计报告 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
小计 |
|
20 |
| 基本要求 |
|
|
|
|
|
|
展示含尺寸航线图 + 18dm 定高全覆盖巡逻 | 22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
小计 |
|
50 |
| 发挥部分 |
|
|
|
|
|
|
10dm 悬停 3s + 抛洒灭火包入 3dm 圆 | 12 |
|
|
|
消防车不碾压街区/边界 + 5dm 内激光灭火 | 15 |
|
|
|
|
|
|
|
|
|
|
|
|
小计 |
|
50 |
|
|
总分 |
|
120 |
判分关键解读:
▸ 设计报告 20 分——"设计与计算"5 分里明确列出巡航规划、检测方法、控制方法、通信方式四项,缺一项就扣分;"电路与程序设计"7 分要同时给电气原理图(核心模块电路图) 和软件流程图,只给其一最多拿一半
▸ 基本要求 50 分里 22 分在全覆盖巡逻——这是全场最大单项,且前置动作是"向评委展示含尺寸的巡逻航线图"(测试要求第 3 条),图都没画就起飞等于自弃这 22 分。评判核心是官方说明第 5 条原文:"激光笔扫到 8dm×8dm 粗线框区域内某处,即视为巡逻覆盖了该区域"——所以航线点是"扫到即算",但仍要保证每个 8dm 格都被扫到
▸ 发挥 50 分里 15 分在消防车出警灭火——火源放在白色街区内(说明第 4 条),而消防车不得驶入街区,这就解释了为什么题目规定"5dm 距离内以激光笔照射"——车开不进去,只能停在街区外用激光打。同时"碾压边界及街区黑色边界线将扣分"(测试要求第 6 条),所以 A* 规划必须留 ≥1dm 边界余量
▸ "中途停止后,记录已完成部分成绩"(测试要求第 4 条)——这是重要的兜底策略:某一步卡死时宁可主动停机,也不要空耗到 360s 超时,已完成的前几项照样计分
▸ 360s 限时 + 全程不得更换电池(测试要求第 7 条)——电池容量必须撑住"基础部分 + 发挥部分"一次跑完,且留给换电池的时间只有两次测试之间的 2 分钟
▸ 实测参考:国一方案公开成绩为基础部分全覆盖巡逻 ≤120s、发挥部分全流程 ≤358s(限时 360s,余量仅 2s),串行任务每一步都不能拖
①.5 题目工程背景
这道题是多智能体协同(Multi-Agent Collaboration)+ 嵌入式实时控制的集大成者——把工业无人机巡检、仓储 AGV 调度、视觉目标识别、LoRa 通信这 4 类技术同时压进一块 40×48dm² 的场地。
现实工程对照:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
为什么出这道题?
出题人想考核的不是"做得多炫",而是多智能体协同的完整工程闭环:
1. 感知能力——激光雷达 SLAM(无人机定位) + 视觉 HSV 识别(火源) + UWB(绝对位置)+ 光流(水平位置)
2. 决策能力——Boustrophedon 覆盖路径规划 + A* 街区避让路径 + 多机状态机协同
3. 执行能力——飞控姿态闭环(角速度环 + 角度环 + 速度环 + 位置环) + 消防车差速转向 + 灭火包舵机抛洒
4. 通信能力——LoRa 远距离(空地)+ 1Hz 坐标广播 + 5Hz 心跳保活 + 自定义帧协议
为什么放在本科组?
G 题是本科组难度最高的无人机综合题(前 5 年出过 E 题飞控、F 题协同),考核的不是"飞起来",而是"飞得准、协同得稳、火源识别得准、消防车不越界"——这是本科组和专科组最本质的区别:本科组要全栈系统级设计,专科组要单点功能实现。
延伸认知:
▸ 多智能体协同 ≠ 两台机器能通信——真正的协同需要统一时空基准(坐标系对齐 + 时钟同步)+ 任务状态机(谁先动、谁后动、超时怎么办)+ 异常处理(通信中断、定位丢失、火源没找到)
▸ 激光雷达 ≠ GPS——题目禁止使用 GPS(民用航空局规定室内禁飞),激光雷达 SLAM 是室内定位唯一可行方案;UWB 是低成本替代(精度 dm 级,激光雷达是 cm 级)
▸ 全覆盖路径规划 ≠ 沿矩形飞一圈——8dm 覆盖宽度意味着必须切条带,切几刀、转弯半径多少、条带方向是横还是纵,都是优化点
▸ 视觉识别 ≠ 摄像头能看见——HSV 色彩空间、形态学去噪、轮廓提取、透视变换校正,每一步都可能让定位精度差 3~5dm
二、大白话版解读
想象一个"消防机器人总动员":场地是一张 40×48dm² 的"消防城市地图",里面有 6 个白色街区(消防车不能开进去)、1 个起飞点(无人机垂直起飞)、1 个消防站(消防车出发地)、3 个待命火源(评委指定位置,红色 LED 灯)。
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
硬件三件套拆解:
大白话总结:本题是"激光雷达 + 视觉双定位 + Boustrophedon 覆盖路径 + LoRa 空地协同 + 火源光敏触发"五件事的工程化整合,难度不在算法,在系统集成和稳定性——激光雷达在顶灯下的点云丢包、视觉摄像头在 18dm 高度的畸变、UWB 多标签的跳变、LoRa 通信的丢包、灭火包抛洒的散布圆,每一项都可能让 360s 限时内"看似通过但其实卡在某个环节"。
三、核心指标速查表
|
|
|
|
|
|
|---|---|---|---|---|
|
|
|
|
|
|
|
|
全覆盖巡逻 |
|
8dm×8dm 全网格覆盖 | 22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
悬停抛洒 |
|
抛洒命中率 | 12 |
|
|
消防车灭火 |
|
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
| 合计 |
|
|
|
120 |
Boustrophedon 航线参数速查(两种切法对比):
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
48dm | 40dm |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 总航程 | ≈272dm
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
为什么选方案甲:两种切法的直线航程完全相同(都是 240dm),差别只在转弯次数——方案甲少 1 次转弯,省 8dm 航程和约 5~8s 的减速/加速时间。题目要求"以缩短完成全覆盖巡逻时间为原则",所以沿短边(40dm)切条带、沿长边(48dm)飞行是更优解。
注意:国一方案公开资料未披露具体条带数,上表为按官方 8dm 覆盖宽度的几何推导,供读者自行验证。实测国一基础部分巡逻 ≤120s,说明实际巡航速度高于 1.5dm/s(约 2.3dm/s)或采用了转弯路径优化。
火源识别参数速查:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 只
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
四、最大卡脖子难点
按"工程坑大、扣分重、难发现"排序:
难点 1:全覆盖路径规划的"看似覆盖 vs 实际覆盖"陷阱
难点 1 补充:官方说明第 5 条原文是"激光笔扫到 8dm×8dm 粗线框区域内某处,即视为巡逻覆盖了该区域"——注意"某处"二字,意味着每个 8dm 格只要被扫到一次就算覆盖,不要求扫满。这比"全网格逐行扫描"宽松得多,是本题的隐藏送分点。
为什么难:8dm 覆盖宽度是激光笔的地面覆盖能力,但很多队伍切了条带却只在每条带首尾各设 1 个航点,航点之间靠飞控直线插值——若飞控位置环有超调或风扰,实际航迹会偏离规划线,边缘格子就漏扫了。漏一个格子就是"未全覆盖",22 分大项直接打折。
怎么破:
▸ 航点密集化——单条航线至少 6 个航点(48dm ÷ 8dm = 6),实际取 12~24 个(间距 2~4dm)保证光斑轨迹连续
▸ 切法优选——沿 40dm 短边切 5 条、沿 48dm 长边飞,比反过来少 1 次转弯(详见上文参数表)
▸ 覆盖验证——调试时在地面铺 8dm×8dm 网格纸,录视频逐格回放确认每格被扫到;赛场可用消防车显示器上的航迹曲线自查
难点 2:消防车"不碾压街区"的 A* 边界膨胀
为什么难:这里藏着本题最容易读漏的一条链路——模拟火源由评委放置在白色街区中(说明第 4 条),而消防车不得驶入街区,所以消防车永远开不到火源跟前,只能停在街区外,靠激光笔在 5dm 距离内照射灭火(发挥第 3 项)。同时原文写明"碾压巡防区域边界及街区黑色边界线将扣分",不是"取消资格"而是扣分,所以擦线一次不至于零分,但要尽量减少。
两个连锁推论:
1. 消防车的目标点不是火源本身,而是"距火源 ≤5dm 且可停车的位置"——A* 的目标要选在街区外侧、离火源最近的通道上
2. 车宽 25cm×35cm,街区通道有限——A* 必须做边界膨胀,否则"规划路径看似能走,实车却擦线"
怎么破:
▸ 边界膨胀——把街区坐标向外扩 1.5dm(按消防车投影 25cm×35cm 折算),用膨胀后的地图做 A*
▸ 目标点选取——收到火源坐标 (x, y) 后,在街区外缘搜索距火源最近且 ≤5dm 的可行点作为 A* 终点
▸ 路径缓冲——A* 输出后再后处理:把每个路径点距街区边界的距离限制 ≥0.5dm
▸ 离线规划——A 用 C++/Python 离线跑*,输出固定航点表(小车硬件算力不足以实时 A*);用 ROS2 Navigation2 时开 inflation_radius 参数
▸ 多段折线——A* 输出的折线在转弯处用样条插值平滑,避免小车"急转弯"压线
难点 3:火源识别的"光照变化 + 镜头畸变"双杀
为什么难:OV2640 / OPENMV 在 18dm 高度的视场角约 60°×45°,边缘畸变 5~10%——意味着图像边缘的火源坐标偏差 1~2dm。同时场地顶灯照度变化会让 HSV 阈值失效,红色识别成粉色或橙色。
怎么破:
▸ 透视变换校正——用 9 点标定法(场地 9 个 8dm 网格交叉点)算出单应性矩阵,把畸变图像校正到俯视图,再做 HSV 识别
▸ HSV 双阈值——红色在 HSV 空间是 H ∈ [0, 10] ∪ [156, 180] 双段,两个区段都要检测,否则漏掉一半
▸ 形态学去噪——开运算(腐蚀+膨胀)剔除 1~2 像素噪点,闭运算(膨胀+腐蚀)填补火源 LED 中间空洞
▸ 多帧验证——连续 3~5 帧都识别到才认作"找到火源",避免单帧误识别
难点 4:灭火包抛洒的"散布圆控制"
为什么难:题目要求灭火包"落在以火源点为中心、半径 3dm 圆形区域内"——3dm 是非常严苛的精度(沙袋从 10dm 高度下落,散布圆自然 ≥5dm)。舵机释放的角度、时机、风扰都会影响命中。
怎么破:
▸ 悬停稳态——悬停 3s 不是"停 3s",是"在 ±1dm 范围内停 3s",否则 3s 内可能飘出 3dm 圈外
▸ 沙袋形状优化——用扁平沙袋(直径 5cm、高 1cm)比球形沙袋散布圆小 30%
▸ 舵机角度归零——舵机释放前先回中位校准,避免装配误差导致释放角度偏
▸ 空投时序——视觉识别到火源 + 水平距离 ≤5dm + 高度降至 10dm + 悬停 3s + 水平速度 <0.2 dm/s 才抛洒
▸ 多次抛洒——一次抛洒成功率不高,预设 2~3 个灭火包,第一次没中第二次补
难点 5:360s 限时内的"任务串行时序"
为什么难:题目要求"基本要求、发挥部分中各项要求在同一按键启动后自动连续完成,期间不得人为干预"——即发现火源→悬停→抛洒→通知小车→小车出发→灭火→返场全流程串行且必须在 360s 内。任何一步卡死 60s,后续环节就顶到限时。
官方给了兜底:测试要求第 4 条明确"中途停止后,记录已完成部分成绩"——所以卡死时主动停机不是零分,而是保住已完成项。这条要写进设计报告的"异常处理"章节,也是现场决策依据。
怎么破:
▸ 时序预算——预设每步时间:识别 30s + 悬停抛洒 15s + 通知 5s + 小车出发 60s + 灭火 30s + 返场 30s + 余量 30s = 200s(留 160s 余量应对异常)
▸ 并行任务——消防车在无人机悬停抛洒时预先规划路径(不浪费时间),一收到火源坐标立即出发
▸ 状态机时戳——每步记录开始时间,超时自动跳到下一步 + 报警(如 LED 闪 3 次)
▸ 看门狗降级——识别不到火源超过 60s 就直接返航降落,保住基本部分 50 分,别把发挥部分也拖黄
▸ 电池一次跑完——测试要求第 7 条"每次测试全过程中不得更换电池",电池容量要按"基础 + 发挥"整场 6~8 分钟选型,别按单环节算
▸ 预演彩排——比赛前 3 天必须做 5 次以上全流程彩排,记录每次时间,找出瓶颈步骤
🛠️ 二、硬件方案
2.1 无人机子系统硬件架构

