y@y 2 ay önce
işleme
dc14b86ff7
1 değiştirilmiş dosya ile 413 ekleme ve 0 silme
  1. 413 0
      智能车竞赛_任务拆解方案.md

+ 413 - 0
智能车竞赛_任务拆解方案.md

@@ -0,0 +1,413 @@
+# 第二十一届全国大学生智能车竞赛
+# 讯飞组赛项"智慧工厂" — 多团队任务拆解方案
+
+> 报名日期:2026年5月1日 - 2026年8月1日
+> 场地:5m×6m 智慧工厂场景
+> 核心技术:讯飞星火大模型 Spark X2 + 多模态感知融合 + Gazebo虚实协同
+
+---
+
+## 一、整体架构
+
+```
+        ┌─────────────────────────────────────┐
+        │          总技术负责人 / PM            │
+        │   (指导老师或最靠谱的学生)             │
+        │   统筹进度 + 跨组协调 + 系统联调       │
+        └──────────────┬──────────────────────┘
+                       │
+     ┌─────────┬───────┼───────┬────────┬──────────┐
+     │         │       │       │        │          │
+  ①导航组   ②视觉组  ③决策组  ④语音组  ⑤硬件组   ⑥仿真组
+```
+
+- 建议6个分组,每组3-4人
+- 各组并行开发,通过ROS接口对接
+- 每组设组长,参加每周跨组对齐会
+- 总负责人专注于协调和联调,不写或少写代码
+
+---
+
+## 二、各组任务清单
+
+### ① 导航与运动控制组(底盘层)
+
+**使命:让车动起来、跑得稳、不撞东西**
+
+#### 任务清单
+
+| 序号 | 任务 | 说明 |
+|------|------|------|
+| 1 | SLAM建图 | 用激光雷达对5m×6m场地建图,输出地图文件 |
+| 2 | 实时定位 | AMCL或其他方案,定位精度≤10cm |
+| 3 | 全局路径规划 | A*/Dijkstra,从P点到各目标点 |
+| 4 | 局部避障 | DWA或TEB,应对8-10个随机锥桶 |
+| 5 | 麦克纳姆轮控制 | PID调参,实现精准停泊(3轮进框) |
+| 6 | 导航API封装 | 提供ROS Service供其他组调用 |
+
+#### 交付接口
+
+| 接口 | 类型 | 说明 |
+|------|------|------|
+| `/go_to_pose` | Service | 输入目标坐标,返回到达/失败 |
+| `/nav_status` | Topic | IDLE / MOVING / ARRIVED / ERROR |
+| 场地坐标系文档 | 文档 | P点原点、A/B/C仓库坐标、二维码区坐标 |
+
+#### 技术栈
+ROS Navigation Stack, move_base/Nav2, TF坐标变换
+
+#### 验收标准
+- 在模拟场地中从P点导航到指定仓库,3轮停泊
+- 不碰随机摆放的锥桶
+- 停泊精度:3个轮及以上在框内
+
+#### 核心难点
+锥桶随机摆放(抽签决定位置和数量),局部避障必须可靠
+
+#### 人数建议:3-4人,需有ROS基础
+
+---
+
+### ② 视觉感知组(眼睛层)
+
+**使命:看懂场地里的一切标志**
+
+#### 任务清单
+
+| 序号 | 任务 | 说明 |
+|------|------|------|
+| 1 | 二维码识别 | 识别3个二维码,解析URL,获取JSON返回(`{"code":200, "result":"苹果"}`),封装为ROS Service |
+| 2 | 厂区标识牌识别 | 识别"食品加工车间/日用品加工车间/电子产品生产车间",需自建数据集 |
+| 3 | 交通灯状态识别 | 识别自制红绿灯的四种状态(红灯/直行/左转/右转),需与硬件组协调规格,提前采集训练数据 |
+| 4 | 视觉巡线 | 提取地面巡线,输出偏移量给导航组;识别三条巡线路径及岔路口 |
+
+#### 交付接口
+
+| 接口 | 类型 | 说明 |
+|------|------|------|
+| `/scan_qrcodes` | Service | 返回3个货品名称列表 → 给决策组 |
+| `/traffic_light` | Topic | 灯状态:RED / STRAIGHT / LEFT / RIGHT → 给决策组 |
+| `/line_offset` | Topic | 巡线偏差量(偏移+角度)→ 给导航组 |
+| `/sign_recognition` | Topic | 厂区标识牌识别结果 → 给决策组 |
+
+#### 技术栈
+OpenCV, PyTorch(轻量分类模型), zbar/pyzbar(二维码)
+
+#### 验收标准
+- 二维码3秒内识别完毕,JSON解析正确
+- 交通灯四种状态识别准确率 > 95%
+- 巡线在模拟光照变化下稳定运行
+- 厂区标识牌识别准确率 > 95%
+
+#### 核心难点
+- 光照变化鲁棒性(场地为喷绘刀刮布,光照不均)
+- 自制红绿灯的识别数据集需自己采集和标注
+
+#### 人数建议:3-4人
+
+---
+
+### ③ 大模型与决策组(大脑层)
+
+**使命:货品分类推理 + 全局任务调度(全队指挥中枢)**
+
+#### 任务清单
+
+| 序号 | 任务 | 说明 |
+|------|------|------|
+| 1 | 星火Spark X2 API封装 | 封装ROS节点,接收货品列表+目标大类,构建Prompt查询,解析返回结果,异常重试 |
+| 2 | 全局任务状态机 | 5个子任务的状态流转管理 + 异常分支处理 |
+| 3 | 决策逻辑 | 子任务1货品→仓库映射;子任务4交通灯→巡线入口选择 |
+
+#### 状态机设计
+
+```
+INIT
+→ TASK1_LISTEN          (等待语音指令)
+→ TASK1_SCAN_QRCODE     (识别二维码)
+→ TASK1_INFER           (大模型推理)
+→ TASK1_REPORT          (语音播报分类结果)
+→ TASK2_NAV             (导航穿越生产区)
+→ TASK2_PARK            (精准停泊目标仓库)
+→ TASK2_REPORT          (语音播报入库)
+→ TASK3_SIGNAL          (发送仿真就绪信号)
+→ TASK3_WAIT            (等待仿真完成)
+→ TASK3_REPORT          (语音播报仿真完成)
+→ TASK4_DETECT_LIGHT    (识别交通灯)
+→ TASK4_DECIDE          (决策巡线方向)
+→ TASK5_LINE_FOLLOW     (巡线行驶)
+→ TASK5_PARK            (终点停泊)
+→ TASK5_REPORT          (播报"任务完成")
+→ DONE
+```
+
+每个状态需设计超时机制和异常恢复分支。
+
+#### 交付接口
+
+| 接口 | 类型 | 说明 |
+|------|------|------|
+| `/classify_product` | Service | 输入货品名+大类,返回匹配结果+目标仓库 |
+| `/task_state` | Topic | 当前状态机状态(全局可见) |
+| `/decision` | Topic | 决策输出(导航目标、巡线方向等) |
+
+#### Prompt工程要点
+- 输入:语音指令的目标大类 + 二维码识别出的3个货品名
+- 要求大模型判断哪个货品属于目标大类
+- 必须稳定解析返回,格式异常时有兜底逻辑
+- 测试覆盖:食品类(苹果/猪肉...)、日用品类(毛巾/T恤...)、电子类(手机/电脑...)
+
+#### 技术栈
+Python, ROS, SMACH / BehaviorTree, Requests
+
+#### 验收标准
+- 大模型调用成功率 > 95%(含重试机制)
+- 状态机覆盖率测试:每个状态正确进入和退出
+- Prompt在不同货品组合下都能正确分类
+- 全链路Demo:模拟5个任务顺序走通
+
+#### 核心难点
+- Prompt工程的稳定性(模型回复格式不可控)
+- 状态机的异常处理完备性(网络超时、识别失败、播报失败)
+- 比赛规则要求"必须实际调用API,技术欺诈直接取消成绩"
+
+#### 人数建议:3人(需全队最强的编程能力)
+
+---
+
+### ④ 语音交互组(耳朵和嘴巴)
+
+**使命:听懂指令、说出结果**
+
+#### 任务清单
+
+| 序号 | 任务 | 说明 |
+|------|------|------|
+| 1 | 语音唤醒 | 实现"小飞小飞"唤醒词检测 |
+| 2 | 语音识别(ASR) | 解析唤醒后的完整指令,提取目标货品大类和仿真货品大类 |
+| 3 | 语音播报(TTS) | 按规定格式输出5处播报(见下方) |
+| 4 | 6麦阵列配置 | 声源定位+降噪,应对赛场噪声 |
+
+#### 五处语音播报格式
+
+| 序号 | 时机 | 格式 |
+|------|------|------|
+| 1 | 子任务1完成 | "取得[货品名称]属于[目标大类]应放置在[目标仓库],仿真环境中取得[货品名称]属于[目标大类]应放置在[目标仓库]" |
+| 2 | 子任务2完成 | "已将[货品名称]放入[仓库类别]" |
+| 3 | 子任务3完成 | "仿真任务已完成,已将[货品名称]放入[仓库类别]" |
+| 4 | 子任务4决策 | 左转 / 右转 / 直行 / 停止 |
+| 5 | 子任务5完成 | "任务完成"(停稳后10秒内开始,30秒内完成) |
+
+#### 交付接口
+
+| 接口 | 类型 | 说明 |
+|------|------|------|
+| `/voice_command` | Topic | 解析后的指令结构体 → 给决策组 |
+| `/speak` | Service | 输入文本,执行TTS播报,播报完成后返回 |
+| `/wake_status` | Topic | 唤醒状态 |
+
+#### 技术栈
+讯飞语音SDK, Python, ALSA/audio
+
+#### 验收标准
+- 唤醒词3米内识别率 > 95%
+- 指令解析准确率 > 90%
+- TTS播报清晰,格式完全符合规则
+- 播报完成有回调确认(不能播一半就继续下一步)
+
+#### 核心难点
+- 赛场噪声干扰(观众、其他设备)
+- 指令中货品名称的自然语言理解
+- 播报格式必须一字不差,否则该任务不计分
+
+#### 人数建议:2-3人
+
+---
+
+### ⑤ 硬件与电路组(红绿灯 + 车模改装)
+
+**使命:自制合规红绿灯 + 车模维护(必须最早启动)**
+
+#### A. 电子红绿灯(竞赛硬性要求)
+
+| 序号 | 任务 | 规格要求 |
+|------|------|----------|
+| 1 | PCB设计 | 原理图→PCB布局→打样 |
+| 2 | 主控芯片 | 聆思科技 **CSK5062**(必须用此芯片,不可用其他MCU) |
+| 3 | 显示屏 | WS2812/WS2812B LED点阵,宽高≤20cm或直径≤20cm,分辨率≤256 |
+| 4 | 单板设计 | 电源管理+MCU+驱动电路全在一块PCB上(屏幕除外) |
+| 5 | 四种状态 | 直行/左转/右转(绿色灯光)、红灯 |
+| 6 | 语音控制 | 通过CSK5062语音控制灯状态切换 |
+| 7 | 结构设计 | 整体高度≤40cm,宽度≤50cm,外观可拆卸(需检查丝印) |
+| 8 | PCB丝印 | 丝印层加队伍名称,不加其他厂商LOGO(加工厂编号和LED屏幕除外) |
+| 9 | 供电 | 电池供电 |
+| 10 | 联调协调 | 提前告知视觉组红绿灯显示规格,方便采集识别训练数据 |
+
+#### B. 车模改装与维护
+
+| 序号 | 任务 | 说明 |
+|------|------|------|
+| 1 | 合规性检查 | 底盘垂直投影≥342×256mm,高度≤172mm |
+| 2 | 电机 | 空载转速≤320±10%rpm |
+| 3 | 传感器安装标定 | 摄像头角度、激光雷达位置、IMU固定 |
+| 4 | 电池管理 | 比赛全程供电充足 |
+| 5 | 赛前检录 | 准备检录材料,验证所有参数合规 |
+
+#### 技术栈
+Altium Designer / KiCad(PCB), C/C++(CSK5062固件), SolidWorks(结构)
+
+#### 验收标准
+- 红绿灯通过官方检录
+- 四种状态显示清晰,语音控制响应正常
+- 车模所有参数在合规范围内
+
+#### 核心难点
+- **CSK5062资料少**(非主流芯片),需查聆思官方文档
+  - 参考资料地址:https://docs2.listenai.com/x/AYLuBCyWV
+- PCB打样周期长(至少2-3周),必须最早启动
+- WS2812驱动+语音控制集成在单板上
+
+#### 人数建议:3-4人(需有电子工程背景)
+
+---
+
+### ⑥ 仿真与通信组(虚实协同)
+
+**使命:搭建Gazebo仿真环境 + 实现虚实通信**
+
+#### 任务清单
+
+| 序号 | 任务 | 说明 |
+|------|------|------|
+| 1 | Gazebo环境搭建 | 复刻5m×6m场地(仓储区/生产区/停车区),放置锥桶、标识牌、巡线 |
+| 2 | 虚拟机器人模型 | URDF/Xacro建模,需有机械臂 |
+| 3 | 虚拟机器人任务脚本 | 子任务3触发后:巡检→拾取→避障→放置(预设路径或简单自主规划) |
+| 4 | 虚实通信协议 | 实体车→仿真发就绪信号;仿真→实体车发完成信号 |
+| 5 | 联调测试 | 实体车停泊→发信号→仿真启动→仿真完成→实体车收到信号 |
+
+#### 交付接口
+
+| 接口 | 类型 | 说明 |
+|------|------|------|
+| `/sim_trigger` | Service | 实体车调用,触发仿真任务 |
+| `/sim_complete` | Topic | 仿真发布完成信号 |
+| Gazebo场景文件 | 文件 | 场景.world + 虚拟机器人URDF |
+
+#### 技术栈
+Gazebo, URDF/Xacro, ROS, Python
+
+#### 验收标准
+- 仿真任务在收到触发后30秒内完成
+- 通信可靠,无丢包
+- 仿真环境与真实场地布局一致
+
+#### 核心难点
+- Gazebo环境精度(锥桶位置、标识牌朝向)
+- 虚拟机器人机械臂控制
+- 虚实通信的网络配置(仅大模型调用和任务领取允许联网)
+
+#### 人数建议:2-3人
+
+---
+
+## 三、团队间接口定义总表
+
+| 接口名称 | 提供方 | 使用方 | 类型 | 说明 |
+|----------|--------|--------|------|------|
+| `/go_to_pose` | ①导航组 | ③决策组 | Service | 导航到目标点 |
+| `/nav_status` | ①导航组 | ③决策组 | Topic | 导航状态 |
+| `/line_offset` | ②视觉组 | ①导航组 | Topic | 巡线偏差量 |
+| `/scan_qrcodes` | ②视觉组 | ③决策组 | Service | 二维码货品列表 |
+| `/traffic_light` | ②视觉组 | ③决策组 | Topic | 交通灯状态 |
+| `/sign_recognition` | ②视觉组 | ③决策组 | Topic | 厂区标识牌 |
+| `/classify_product` | ③决策组 | 全局 | Service | 大模型分类 |
+| `/task_state` | ③决策组 | 全局 | Topic | 状态机状态 |
+| `/voice_command` | ④语音组 | ③决策组 | Topic | 语音指令解析 |
+| `/speak` | ④语音组 | ③决策组 | Service | TTS播报 |
+| `/wake_status` | ④语音组 | ③决策组 | Topic | 唤醒状态 |
+| `/sim_trigger` | ⑥仿真组 | ③决策组 | Service | 触发仿真 |
+| `/sim_complete` | ⑥仿真组 | ③决策组 | Topic | 仿真完成信号 |
+
+---
+
+## 四、时间线建议(倒排计划)
+
+假设比赛日为 T,建议按以下里程碑倒排:
+
+### T-10周:各组独立开发
+
+| 组别 | 里程碑 |
+|------|--------|
+| ⑤硬件组 | PCB打样完成,开始CSK5062固件开发(**最早启动**) |
+| ①导航组 | SLAM建图 + 基础导航跑通 |
+| ②视觉组 | 二维码识别 + 巡线算法原型 |
+| ③决策组 | 星火API封装 + 状态机框架搭建 |
+| ④语音组 | 唤醒 + ASR + TTS基本功能 |
+| ⑥仿真组 | Gazebo环境搭建 + 虚拟机器人建模 |
+
+### T-6周:组间两两联调
+
+| 联调组合 | 目标 |
+|----------|------|
+| ①导航 × ②视觉 | 巡线导航联调 |
+| ③决策 × 大模型 | Prompt测试 + 状态机走通 |
+| ④语音 × ③决策 | 指令解析对接 |
+| ⑤硬件 | 红绿灯原型可演示 |
+
+### T-3周:全系统集成
+
+- 5个子任务全链路走通(即使慢、即使有bug)
+- ⑥仿真 × ③决策:虚实通信联调
+- ⑤硬件红绿灯接入 ②视觉识别
+- 完整流程跑通一遍
+
+### T-1周:实战演练
+
+- 模拟比赛(30分钟全流程,2次机会)
+- 扣分点专项排查:压线、碰锥桶、播报格式、抢跑
+- 异常恢复预案演练
+- 准备检录材料
+
+---
+
+## 五、人员分配建议
+
+假设总共约20人:
+
+| 组别 | 人数 | 能力要求 | 优先级 |
+|------|------|----------|--------|
+| ①导航组 | 4人 | ROS基础、C++/Python、控制理论 | 最高 |
+| ②视觉组 | 3-4人 | OpenCV、深度学习、图像处理 | 高 |
+| ③决策组 | 3人 | 全队最强编程能力、Python、系统架构 | 最高 |
+| ④语音组 | 2-3人 | 讯飞SDK、音频处理、NLP | 中 |
+| ⑤硬件组 | 3-4人 | 电子工程、PCB设计、嵌入式C | 高(最早启动) |
+| ⑥仿真组 | 2-3人 | Gazebo、URDF、ROS | 中 |
+
+### 关键角色
+
+- **总负责人(PM)**:不写代码或少量写代码,专注跨组协调、接口对齐、进度跟踪
+- **每组组长**:参加每周跨组对齐会,负责本组进度和对外接口
+- **硬件组提前2周启动**:PCB打样+固件开发周期最长
+
+---
+
+## 六、风险清单与应对
+
+| 风险 | 影响 | 应对措施 |
+|------|------|----------|
+| CSK5062开发受阻(资料少) | 红绿灯无法完成=无法参赛 | T-12周即开始调研芯片文档,联系聆思技术支持QQ群 |
+| 大模型API现场网络波动 | 子任务1失败→连锁崩盘 | 本地缓存常见分类结果作为兜底(但必须实际调用API) |
+| 锥桶随机摆放导致避障失败 | 碰锥桶扣分,超30秒终止 | 充分测试DWA/TEB参数,准备多套场景 |
+| 巡线选错入口 | 子任务5不可逆失败 | 交通灯识别反复验证,岔路口决策双重确认 |
+| 播报格式不合规 | 对应任务不计分 | 播报内容模板化,状态机中硬编码格式 |
+| 30分钟内2次都失败 | 无有效成绩 | 第1次策略偏保守,确保基础分;第2次追求完整流程 |
+
+---
+
+## 七、资料下载
+
+- 竞赛资料(百度网盘):https://pan.baidu.com/s/1vcW2WImbIhQO3HEdByZgHw
+  - 提取码:n5rx
+- 聆思CSK5062芯片文档:https://docs2.listenai.com/x/AYLuBCyWV
+- 技术支持QQ群:见竞赛页面二维码
+- 竞赛页面:https://www.iflysse.com/laboratory/intelligent-car-race