【实战项目 21-25】第 25/25 课

🤖 第25课:毕业项目:智能服务机器人

📌 毕业项目概述

这是课程的终极项目——将前24课学到的所有技术集成为一个完整的智能服务机器人系统

🎓 毕业项目目标

1. 集成导航、语音、视觉、操控四大核心能力
2. 实现完整的感知→理解→决策→执行→反馈闭环
3. 支持酒店/医院/商场/迎宾等多种场景
4. 具备异常处理、远程监控、OTA更新能力
5. 完成从仿真到实机的部署验证

📌 完整系统集成

import json, math, random, time
from collections import defaultdict

class IntelligentServiceRobot:
    """智能服务机器人 - 完整系统集成"""
    def __init__(self, name="SmartBot-01"):
        self.name = name
        # 子系统
        self.navigation = NavigationSystem()
        self.interaction = InteractionSystem()
        self.task_manager = TaskManager()
        self.health = HealthMonitor()
        self.cloud = CloudConnector()
        
        self.state = "idle"
        self.position = {"x": 0, "y": 0, "floor": 1}
        self.battery = 100
        self.session_log = []

    def process_request(self, user_input, user_id="guest"):
        """处理用户请求 - 完整流水线"""
        log = [f"[输入] {user_input}"]
        
        # 1. 语音识别
        asr_result = self.interaction.asr(user_input)
        log.append(f"[ASR] {asr_result}")
        
        # 2. 意图理解
        nlu_result = self.interaction.nlu(asr_result)
        log.append(f"[NLU] 意图={nlu_result['intent']} 槽位={nlu_result['slots']}")
        
        # 3. 情感检测
        emotion = self.interaction.detect_emotion(user_input)
        log.append(f"[情感] {emotion['emotion']} ({emotion['confidence']:.0%})")
        
        # 4. 任务规划
        task = self.task_manager.create_task(nlu_result, emotion)
        log.append(f"[任务] {task['id']}: {task['type']}")
        
        # 5. 执行
        result = self.execute_task(task)
        log.append(f"[执行] {'成功' if result['success'] else '失败'}")
        
        # 6. 语音反馈
        response = self.interaction.generate_response(result, emotion)
        log.append(f"[回复] {response}")
        
        # 7. 健康检查
        self.health.update(self.battery, self.state)
        
        self.session_log.extend(log)
        return {"response": response, "task_id": task["id"], "logs": log}

    def execute_task(self, task):
        self.battery -= random.uniform(1, 3)
        self.state = "busy"
        result = {"success": random.random() > 0.05, "task_id": task["id"]}
        self.state = "idle"
        return result

class NavigationSystem:
    def navigate(self, target): return {"distance": random.uniform(5, 50), "time": random.uniform(30, 180)}

class InteractionSystem:
    def asr(self, text): return text
    def nlu(self, text):
        intents = {"去": "navigate", "送": "deliver", "你好": "greet", "查询": "query"}
        for kw, intent in intents.items():
            if kw in text: return {"intent": intent, "slots": {"target": text.replace(kw,"")}}
        return {"intent": "unknown", "slots": {}}
    def detect_emotion(self, text):
        emotions = {"开心": "happy", "生气": "angry", "着急": "anxious"}
        for kw, emo in emotions.items():
            if kw in text: return {"emotion": emo, "confidence": 0.8}
        return {"emotion": "neutral", "confidence": 0.6}
    def generate_response(self, result, emotion):
        if result["success"]:
            return "好的,马上为您处理!"
        return "抱歉,出了点问题,我再来一次。"

class TaskManager:
    def __init__(self): self.counter = 0
    def create_task(self, nlu, emotion):
        self.counter += 1
        return {"id": f"T{self.counter:04d}", "type": nlu["intent"], "priority": 3 if emotion["emotion"] == "anxious" else 2}

class HealthMonitor:
    def update(self, battery, state):
        if battery < 20: return {"alert": "low_battery"}
        return {"status": "ok"}

class CloudConnector:
    def sync(self): return {"synced": True}

robot = IntelligentServiceRobot()
print("智能服务机器人 - 完整系统集成")
print("=" * 55)

requests = [
    "你好,请带我去3楼会议室",
    "帮我送咖啡给张总,比较着急",
    "查询洗手间在哪里",
]
for req in requests:
    print(f"\n🎤 用户: {req}")
    result = robot.process_request(req)
    print(f"🤖 机器人: {result['response']}")
    for log in result['logs']:
        print(f"  {log}")

print(f"\n📊 电量: {robot.battery:.1f}%")
print("✅ 完整系统集成验证通过")
✅ 验证通过 智能服务机器人 - 完整系统集成 ======================================================= 🎤 用户: 你好,请带我去3楼会议室 🤖 机器人: 好的,马上为您处理! [输入] 你好,请带我去3楼会议室 [ASR] 你好,请带我去3楼会议室 [NLU] 意图=navigate 槽位={'target': '你好,请带我3楼会议室'} [情感] neutral (60%) [任务] T0001: navigate [执行] 成功 [回复] 好的,马上为您处理! 🎤 用户: 帮我送咖啡给张总,比较着急 🤖 机器人: 好的,马上为您处理! [输入] 帮我送咖啡给张总,比较着急 [ASR] 帮我送咖啡给张总,比较着急 [NLU] 意图=deliver 槽位={'target': '帮我咖啡给张总,比较着急'} [情感] anxious (80%) [任务] T0002: deliver [执行] 成功 [回复] 好的,马上为您处理! 🎤 用户: 查询洗手间在哪里 🤖 机器人: 好的,马上为您处理! [输入] 查询洗手间在哪里 [ASR] 查询洗手间在哪里 [NLU] 意图=query 槽位={'target': '洗手间在哪里'} [情感] neutral (60%) [任务] T0003: query [执行] 成功 [回复] 好的,马上为您处理! 📊 电量: 94.0% ✅ 完整系统集成验证通过

📌 系统架构文档

class SystemArchitecture:
    """系统架构文档"""
    ARCHITECTURE = {
        "应用层": {
            "任务规划": "BehaviorTree + FSM",
            "对话管理": "状态机 + LLM兜底",
            "场景理解": "多模态融合",
        },
        "能力层": {
            "导航": "Nav2 (A* + DWA + SLAM)",
            "语音": "Whisper(ASR) + VITS(TTS)",
            "视觉": "YOLOv8 + ArcFace + MediaPipe",
            "操控": "逆运动学 + 抓取规划",
        },
        "通信层": {
            "中间件": "ROS2 (DDS)",
            "云端": "MQTT + REST API",
            "前端": "WebSocket",
        },
        "硬件层": {
            "传感器": "激光雷达 + RGB-D + 麦克风阵列",
            "执行器": "差速驱动 + 机械臂",
            "计算": "NVIDIA Jetson + 边缘推理",
        },
    }
    
    def print_architecture(self):
        for layer, components in self.ARCHITECTURE.items():
            print(f"\n🏗️ {layer}:")
            for comp, tech in components.items():
                print(f"  ├── {comp}: {tech}")

arch = SystemArchitecture()
print("系统架构文档")
print("=" * 55)
arch.print_architecture()
print("\n✅ 架构文档生成完成")
✅ 验证通过 系统架构文档 ======================================================= 🏗️ 应用层: ├── 任务规划: BehaviorTree + FSM ├── 对话管理: 状态机 + LLM兜底 ├── 场景理解: 多模态融合 🏗️ 能力层: ├── 导航: Nav2 (A* + DWA + SLAM) ├── 语音: Whisper(ASR) + VITS(TTS) ├── 视觉: YOLOv8 + ArcFace + MediaPipe ├── 操控: 逆运动学 + 抓取规划 🏗️ 通信层: ├── 中间件: ROS2 (DDS) ├── 云端: MQTT + REST API ├── 前端: WebSocket 🏗️ 硬件层: ├── 传感器: 激光雷达 + RGB-D + 麦克风阵列 ├── 执行器: 差速驱动 + 机械臂 ├── 计算: NVIDIA Jetson + 边缘推理 ✅ 架构文档生成完成

📌 部署检查清单

class DeploymentChecklist:
    """部署检查清单"""
    def __init__(self):
        self.checks = {
            "硬件": [
                {"item": "激光雷达标定", "status": True},
                {"item": "相机内外参标定", "status": True},
                {"item": "IMU校准", "status": True},
                {"item": "轮式里程计校准", "status": True},
                {"item": "机械臂零点标定", "status": False},
            ],
            "软件": [
                {"item": "ROS2节点通信测试", "status": True},
                {"item": "导航建图验证", "status": True},
                {"item": "语音交互测试", "status": True},
                {"item": "电梯协议对接", "status": False},
                {"item": "云端服务连通性", "status": True},
            ],
            "安全": [
                {"item": "急停按钮测试", "status": True},
                {"item": "碰撞检测验证", "status": True},
                {"item": "速度限制设置", "status": True},
                {"item": "隐私数据加密", "status": False},
                {"item": "网络安全配置", "status": True},
            ],
            "运维": [
                {"item": "充电桩对接", "status": True},
                {"item": "远程监控连通", "status": True},
                {"item": "告警通知配置", "status": False},
                {"item": "OTA更新测试", "status": True},
                {"item": "日志收集确认", "status": True},
            ],
        }

    def run_check(self):
        total = 0; passed = 0
        print("部署检查清单")
        print("=" * 55)
        for category, items in self.checks.items():
            print(f"\n📋 {category}:")
            for item in items:
                status = "✅" if item["status"] else "❌"
                print(f"  {status} {item['item']}")
                total += 1
                if item["status"]: passed += 1
        
        rate = passed / total * 100
        print(f"\n📊 通过率: {passed}/{total} ({rate:.0f}%)")
        if rate < 100:
            print("⚠️ 存在未通过项目,请完成后再部署!")
        else:
            print("🎉 全部通过,可以部署!")
        return rate

checklist = DeploymentChecklist()
checklist.run_check()
✅ 验证通过 部署检查清单 ======================================================= 📋 硬件: ✅ 激光雷达标定 ✅ 相机内外参标定 ✅ IMU校准 ✅ 轮式里程计校准 ❌ 机械臂零点标定 📋 软件: ✅ ROS2节点通信测试 ✅ 导航建图验证 ✅ 语音交互测试 ❌ 电梯协议对接 ✅ 云端服务连通性 📋 安全: ✅ 急停按钮测试 ✅ 碰撞检测验证 ✅ 速度限制设置 ❌ 隐私数据加密 ✅ 网络安全配置 📋 运维: ✅ 充电桩对接 ✅ 远程监控连通 ❌ 告警通知配置 ✅ OTA更新测试 ✅ 日志收集确认 📊 通过率: 16/20 (80%) ⚠️ 存在未通过项目,请完成后再部署!

📌 课程回顾与展望

📚 25课知识图谱

阶段课程核心收获
🧭 导航1-5SLAM、A*、避障、电梯、多楼层
🗣️ 交互6-10ASR/TTS、NLU、对话管理、情感、多模态
🎯 任务11-15行为树、物体识别、抓取、引导、人脸
🔧 集成16-20ROS2、云端、监控、调度、异常处理
🚀 实战21-25酒店、医院、商场、迎宾、毕业项目
💡 下一步方向:深入学习ROS2实战、大模型集成(VLA)、仿真环境(Isaac Sim)、实机部署调优。

📌 毕业练习

📝 练习 1

完成端到端场景演示:选择一个场景(酒店/医院/商场),从用户开口说话到任务完成的完整流程,所有子系统协同工作。

📝 练习 2

撰写技术论文:总结你的系统架构设计、关键技术选择、性能优化策略,3000字以上。

📝 练习 3

实现实机迁移:将仿真代码迁移到真实机器人上,记录仿真与实机的差异和适配方案。

📌 成就

🏆 本课成就

◀ 上一课 📚 目录 下一课 ▶