CATEGORY 2 · 综合项目 / CASE-01

智慧工厂装货分拣码垛 综合项目

9 个实验贯穿一个完整的具身智能工厂项目:从需求工程 R1-R10 到五节点系统架构与 A/C/D/E/F 接口族, 落地语音交互、AprilTag tag36h11 + PnP 视觉自适应装货、定点分拣、光电停靠码垛与激光雷达 60°/20cm/0.5s 危险急停, 最终一键启动全功能快速验证 —— 每个实验均配原理讲解、动画演示与互动沙盒。

📚 9 个实验 ⏱️ 48 学时 🤖 小车+机械臂+语音+视觉 🎯 前置:ROS2 与视觉基础
9递进实验
48总学时
3知识篇章
⭐1~3难度跨度
PROJECT OVERVIEW

项目总览:这条智能产线在做什么

一句话需求拆成四块拼图:任务链、语音入口、视觉/执行、安全底线。

一条完整的物流链

装货区 → 分拣区 → 流水线(定点停靠)→ 码垛区。装货靠视觉找位置,分拣靠人工教点位,码垛等光电传感器到位再下手——难度逐级递增。

语音是总入口

唤醒词(如"小飞小飞")→ ASR 热词增强 → LLM 意图分类 → 固定话术回放与任务触发;R8 允许随时打断复位。

五节点 + 视觉协作

N1 语音、N2 调度、N-grasp 抓取、N-conveyor 流水线、N3 安全各司其职,N-vision 提供 AprilTag 位姿,复用底盘与机械臂底层。

安全优先于一切

R9:激光雷达前方 60° 扇区、20cm、持续 0.5s 判定危险 → 释放 6 舵机力矩;R9.1:雷达打断 > 语音打断。

CHAPTER 1

第 1 章 · 工程设计:需求 → 架构 → 接口

开餐厅先定菜单再排厨房工位:先把需求写清楚、把节点分工定下来、把接口契约钉死,后面的功能开发才不会返工。

EXP-01⭐ · 4 学时

需求分析(R1-R10)

从"让机器帮我搬货"的一句话出发,梳理 R1-R10 十条需求:交互、任务、播报打断、安全、工程组织五组; 分清 R8 语音打断与 R9 雷达危险的边界,建立"可验收"的需求观。

需求工程R1-R10需求追溯
👆 点击小节标题或右侧标签直达对应章节
EXP-02⭐⭐ · 4 学时

五节点系统架构

N1 语音 → N2 调度 → N-grasp / N-conveyor 执行 → N3 安全护航的分工拓扑; 异步 run_until_sensor、2s 自动重试、状态话题回报完成,理解"触发 ≠ 完成"的编排语义。

五节点架构任务状态机异步编排
👆 点击小节标题或右侧标签直达对应章节
EXP-03⭐⭐ · 4 学时

接口设计

A(语音交互)/ C(安全)/ D(复用底层)/ E(任务触发)/ F(流水线)五大接口族一张表钉死; yaml 集中管理点位与意图映射,用 ros2 命令实测话题与服务,识别文档与代码的偏差。

话题/服务接口族 A-FYAML 配置
👆 点击小节标题或右侧标签直达对应章节
CHAPTER 2

第 2 章 · 功能集成:语音 · 视觉 · 分拣 · 码垛

让工厂真正动起来:嘴(语音)、眼(AprilTag 视觉)、手(机械臂)、腿(流水线)依次接进调度链路。

EXP-04⭐⭐ · 6 学时

语音交互集成

唤醒 → ASR 热词增强 → LLM 意图分类(装载/分拣/码垛,不做关键词硬匹配)→ 固定话术播报; 掌握 R8 语音打断的四步复位,打通"说一句话 → 任务跑起来 → 完成播报"闭环。

语音闭环LLM 意图R8 打断
👆 点击小节标题或右侧标签直达对应章节
EXP-05⭐⭐⭐ · 8 学时

视觉自适应装货

AprilTag tag36h11(tag_id=3、tag_size=0.025)+ solvePnP 求解目标位姿,经 camera→base_link TF 变换、 pick_offset 补偿后抓取:观察位 → 检测 → 抓取 → 放置 → 回 work 八步闭环,debug/production 双模式微调。

AprilTagPnP + TFpick_offset
👆 点击小节标题或右侧标签直达对应章节
EXP-06⭐⭐⭐ · 4 学时

智能分拣

vision=false 的定点抓取路线:人工教学 observe/place 点位,固定八步"提前开爪→到位→闭爪→抬升→ 放置→开爪→再抬 5cm→回 work",配合 lift_height / place_lift 调参解决拖拽回刮。

定点抓取八步时序位姿教学
👆 点击小节标题或右侧标签直达对应章节
EXP-07⭐⭐⭐ · 6 学时

自主码垛

最完整的跨节点编排:N2 调 run_until_sensor 送料 → 光电传感器(GPIO17)清沿/挡沿 + 防抖定点停 → sensor_blocked 状态回调触发定点抓取,2s 失败自动重试,急停与恢复嵌入状态机。

流水线光电停靠跨节点编排
👆 点击小节标题或右侧标签直达对应章节
CHAPTER 3

第 3 章 · 安全联锁与系统验证

功能做完只是起点:危险时先放开手(力矩释放),验收时一条命令带起全系统、一条命令清干净。

EXP-08⭐⭐⭐ · 4 学时

危险检测与急停

激光雷达前方 60° 扇区(±30° 跨 0° 环绕)、20cm 距离阈值、0.5s 持续判定防误报; 触发即释放 6 舵机力矩(臂变软可手推),解除后恢复力矩并 go_work 回位——雷达打断 > 语音打断。

雷达扇区力矩释放打断分层
👆 点击小节标题或右侧标签直达对应章节
EXP-09⭐⭐⭐ · 8 学时

全功能快速验证

launch 一键启动 + 7 个 start_* 开关按需裁剪;装货/分拣/码垛/急停四条链路"语音 + 服务"双通道闭环验证, stop_eai_factory.sh 收尾清理,做到"一条命令启动、全链路闭环、干净停止"。

一键启动7 开关裁剪停止清理
👆 点击小节标题或右侧标签直达对应章节
TECH STACK

技术栈与硬件平台

全课程围绕 eai_factory 五节点功能包与真实外设展开,参数全部来自 config/eai_factory.yaml 实配。

ROS2 Humble rclpy 需求工程 R1-R10 五节点架构 接口族 A/C/D/E/F 语音 KWS · ASR · LLM · TTS 热词增强 modified_beam_search AprilTag tag36h11 solvePnP IPPE_SQUARE TF 手眼变换 + pick_offset 定点抓取八步 光电传感器 GPIO17 run_until_sensor 异步 激光雷达 60° 扇区急停 总线舵机力矩释放 launch 7 开关 + stop 脚本
LEARNING PATH

学习路径建议

先定需求,再写代码

EXP-01~03 是工程地基:拿不准需求就动手,后面每个"改一点参数重调两小时"都是它的利息。

单项功能逐个击破

EXP-04 语音、EXP-05 视觉、EXP-06 分拣、EXP-07 码垛逐一对通再串联——每个实验都有独立验证命令。

安全永远最后上也最先想

EXP-08 的急停逻辑要在每次实操前默念一遍:障碍对准雷达正前方、机械臂放安全位、手离抓取区。

用验证收口学习

EXP-09 的四链路 checklist 是全课程成绩单:能独立跑完"启动→任务→急停→清理",才算真正通关。

PROJECT SETUP

环境与配置速查

开做之前对齐四件事:硬件在位、配置文件读懂、语音服务活着、启停命令记牢。

硬件清单

6 自由度总线舵机机械臂(舵机 ID 0-5)、差速底盘、麦克风阵列、单目摄像头(内参 fx=592.9 / fy=593.1 / cx=335.4 / cy=237.7)、 激光雷达、流水线直流电机 M1 + GPIO17 光电传感器。做实验前逐一确认串口、GPIO17 导出与雷达 frame 就绪。

核心配置 eai_factory.yaml

mode(debug/production)双模式;vision:tag_id=3、tag_size=0.025、tag_family=tag36h11; grasp.tasks 三任务各自的 vision 开关与 observe/place 点位;pick_offset(+0.015 / -0.010 / +0.023); safety:±30°、0.20m、0.5s;intents 意图映射与 wakeup_words 唤醒词。

语音侧服务

本地 LLM 为 Qwen3.5-0.8B(w4a16 量化约 500MB,监听 127.0.0.1:8080),起来后先 curl http://127.0.0.1:8080/v1/models 自检;TTS 用 Matcha 声学模型 + vocos 声码器; 8080 起不来是 EXP-04 / EXP-09 的头号失败点。

一键启停

ros2 launch 一条命令带 7 个 start_* 开关(start_base / viz / voice / vision / grasp / conveyor / radar, 其中 radar 默认 false、独立于 start_base);收工用 stop_eai_factory.sh 五段清理,直至打印"已全部清理干净"。

FAQ

常见疑问

前置要求是什么?

需要 ROS2 与视觉基础:会用 colcon 构建与 ros2 topic/service/launch 基本命令,了解相机成像与 TF 概念即可, 课程内的需求工程、接口设计部分不要求任何嵌入式经验。

为什么分拣和码垛不用视觉?

yaml 中 sort / palletize 任务 vision=false,走人工示教定点(observe_pose / place_pose),稳定且可复现; 只有装货 load 任务 vision=true,因为货物每次来的位置不同——这正是"能定点就定点,必须自适应才上视觉"的工程取舍。

急停触发后任务会丢吗?

危险判定触发后释放 6 舵机力矩、传送带停转,抓取与流水线进入受控中断;障碍离开并满足解除条件后自动恢复力矩并 go_work 回位,但按 R9.1 任务需要手动重新触发,不会凭空续跑半截动作。

48 学时怎么排?

第 1 章 12 学时打地基(EXP-01~03),第 2 章 24 学时做功能(EXP-04~07),第 3 章 12 学时收口(EXP-08~09); 难度 ⭐ 的 EXP-01 可与理论课并行,⭐⭐⭐ 的 EXP-05 / 09 各留足整块实验时段,别拆开做。

ASSESSMENT

验收评分速查

各实验满分 100,评分构成摘自每页"重点与易错点"一节,可用于互评与验收打分。

实验 主题 评分构成(合计 100)
EXP-01需求分析需求分组 40 · 逐条解读 30 · R8/R9 边界 20 · 追溯矩阵 10
EXP-02五节点架构节点分工 30 · 数据流讲清 30 · 编排语义 20 · 日志核对 20
EXP-03接口设计接口族梳理 40 · 命令实测 30 · 文档偏差 20 · 配置管理 10
EXP-04语音交互链路日志 15 · LLM 意图 20 · TC 用例 25 · 打断复位 15 · 总结 25
EXP-05视觉装货检测链 15 · PnP+TF 20 · 八步验收 30 · offset 整定 20 · 总结 15
EXP-06智能分拣示教点位 25 · 八步日志 30 · 参数调优 20 · TG7 打断 15 · 总结 10
EXP-07自主码垛GPIO 就绪 15 · 全链路 30 · 状态机 35 · 急停恢复 10 · 总结 10
EXP-08危险急停扇区判定 15 · TS 用例 30 · 打断分层 35 · 恢复回位 10 · 总结 10
EXP-09全功能验证启动裁剪 15 · 四链路 30 · checklist 35 · 清理 10 · 总结 10