项目 GitHub:https://github.com/ace-trump-tech/MindPaw
传统的机器狗只是一台执行命令的机械装置——你按前进它就前进,你说坐下它就坐下,没有情感、没有个性、没有“灵魂”。
MindPaw 的不同之处在于:它内置了一套情感引擎,让机器狗具备“情绪”。情感状态会实时影响它的动作幅度(快乐时更活跃,悲伤时更低沉)、OLED 表情显示(14 种表情切换),以及AI 对话的语气(带情绪的回复)。
这套情感引擎的核心是心理学经典的PAD 三维情感模型,并结合了多模态情感融合与大五人格个性过滤机制。本文将从理论到实现,完整拆解 MindPaw 情感引擎的设计原理。
一、PAD 三维情感模型:情感的数学表达
1.1 为什么需要三维?
情感是复杂的、连续的、多维度的。用一个标签(如“开心”)无法描述情感的强度和细微差别。MindPaw 采用了 Mehrabian & Russell(1974)提出的PAD 三维情感模型,将情感表示为三个连续维度的数值:
| 维度 | 含义 | 取值范围 | 示例 |
|---|---|---|---|
| P(Pleasure) | 愉悦度 | -1 ~ +1 | 快乐 → +0.8,悲伤 → -0.7 |
| A(Arousal) | 唤醒度/激活度 | -1 ~ +1 | 兴奋 → +0.8,平静 → -0.5 |
| D(Dominance) | 支配度/控制感 | -1 ~ +1 | 自信 → +0.7,顺从 → -0.5 |
在 PAD 模型中,每一种情感都唯一对应一个 PAD 空间坐标位置。例如:
| 情感 | P | A | D |
|---|---|---|---|
| 快乐 | +0.8 | +0.6 | +0.5 |
| 悲伤 | -0.7 | -0.4 | -0.3 |
| 愤怒 | -0.5 | +0.8 | +0.7 |
| 平静 | +0.2 | -0.5 | +0.1 |
| 恐惧 | -0.6 | +0.7 | -0.5 |
| 兴奋 | +0.6 | +0.9 | +0.4 |
初始状态设定为中性:P=0, A=0, D=0。
1.2 PAD 状态更新方程
当外部输入(语音命令、手势、文本)带有情感标签时,PAD 状态会按以下方式更新:
ΔP = 0.3 × (P_target − P_current) × (1 + 0.5 × (Extraversion − 0.5)) ΔA = 0.2 × (A_target − A_current) × (1 + 0.5 × (Neuroticism − 0.5))关键设计:
- P_target / A_target:输入信号携带的情感目标值
- P_current / A_current:当前情感状态
- 系数 0.3 / 0.2:控制情感变化速度(值越大变化越快)
- Extraversion / Neuroticism:来自大五人格参数,实现“个性化”情感响应(详见下文)
同时,情感状态会指数衰减回归基线——如果长时间没有交互,机器狗的情感会逐渐恢复到中性状态。这模拟了真实情感的自然消退过程。
二、多模态情感融合:语音 + 手势 + 文本 → 统一情感上下文
MindPaw 的情感引擎不是单一通道驱动的,而是将三种感知模态的信息在中央决策层融合:
┌─────────────┐ │ 语音命令 │ ──→ 语音意图 + 情感标签 ├─────────────┤ │ 手势识别 │ ──→ 手势类型 + 置信度 ├─────────────┤ │ 文本输入 │ ──→ 文本意图 + 情感标签 └─────────────┘ ↓ ┌─────────────────────────────────┐ │ 多模态情感融合层 │ │ • 输入归一化(不同模态权重) │ │ • 情感上下文构建 │ │ • PAD 状态自动更新 │ └─────────────────────────────────┘2.1 三种模态的情感映射
① 语音命令
语音识别结果直接映射到预设的情感标签。例如:
- 用户说“你好” → 快乐(P+0.2, A+0.1)
- 用户说“再见” → 悲伤(P-0.2, A-0.1)
② 手势识别
手势类型触发对应的情感响应:
- 挥手 → 快乐(积极社交信号)
- 推掌 → 愤怒(攻击性信号)
- 手指向上/下 → 不同程度的唤醒度变化
③ 文本输入(AI 对话)
用户通过网页聊天框输入的文本,会经过简单的情感词检测:
- 包含“开心”“喜欢”等正向词 → P 上升
- 包含“难过”“讨厌”等负向词 → P 下降
2.2 加权融合策略
不同模态的置信度不同,融合时赋予不同权重:
- 语音命令:权重最高(离线识别确定性高,指令明确)
- 手势识别:权重中等(存在误判可能,依赖光照)
- AI 文本分析:权重较低(依赖简单的关键词匹配,精度有限)
融合后的新 PAD 值经过一阶低通滤波平滑过渡,避免情绪突变:
P_new = α × P_input + (1-α) × P_old // α为融合系数,通常0.3~0.5三、14 种情感状态与 OLED 表情映射
PAD 连续空间被离散化为14 种情感状态,每种状态对应一个 OLED 表情图案:
快乐、悲伤、愤怒、惊讶、恐惧、厌恶、平静、兴奋、疲惫、困惑、调皮、专注、害羞、期待
状态转移逻辑:
- 当前 PAD 值落入哪个情感状态的 PAD 区间 → 切换到该状态
- 切换时更新 OLED 显示对应的表情图案
- 同时更新动作参数(快乐时振幅大,悲伤时振幅小)
这种VAD-to-Motion 映射机制让情感不只是屏幕上的一个图标,而是贯穿机器狗行为表现的底层驱动。
四、大五人格过滤:让每个机器狗拥有“性格”
MindPaw 引入了大五人格(Big Five)个性过滤机制,让不同机器狗对相同输入做出不同的情感响应:
| 人格维度 | 对情感的影响 |
|---|---|
| 外倾性(Extraversion)高 | 积极情感变化更快 → 更容易开心 |
| 神经质(Neuroticism)高 | 消极情感变化更快 → 更容易难过 |
| 开放性(Openness) | 影响对新奇刺激的好奇心表达 |
| 宜人性(Agreeableness) | 影响交互的友好程度 |
| 尽责性(Conscientiousness) | 影响任务执行的认真程度 |
从上面的 PAD 更新方程可以看出,外倾性直接放大了正向情感的变化速率,而神经质则放大了负向情感的变化速率。这意味着:
- 一个高外倾性的机器狗,听到“你好”会更快地变得开心
- 一个高神经质的机器狗,听到批评会更快地变得难过
这种机制让每个 MindPaw 都可以拥有独特的“性格”,不再是千篇一律的机器人。
五、Affective Prompt Injection:让大模型带“情绪”
这是 MindPaw 情感引擎的核心创新。
在与豆包大模型对话时,当前情感状态会以特殊标记嵌入到用户提示中:
[情感:快乐|P=0.81|A=0.65|D=0.57] 用户问题:今天天气怎么样?大模型接收到这个 prompt 后,会感知到机器狗当前的“情绪”,生成的回复会带有相应情感色彩。例如:
- 如果机器狗当前是“快乐”状态,回复可能更活泼、更积极
- 如果机器狗当前是“悲伤”状态,回复可能更低沉、更温柔
同时,回复内容经情感词检测后反馈回情感状态机,形成闭环——对话本身也会反过来影响机器狗的情绪。
技术意义:这套机制让 MindPaw 的 AI 对话不再只是“一问一答”,而是带有情感上下文的智能推理。它展示了多模态交互系统的典型架构——不同感知通道的信息如何在中央决策层融合,并影响最终输出。
六、情感驱动的动作生成
情感状态不仅影响对话和表情,还直接影响机器狗的动作风格。
MindPaw 使用正弦波参数化生成舵机运动:
pos_i(t) = center_i + amplitude_i × sin(2π × freq_i × t + phase_i)其中amplitude(振幅)和freq(频率)随情感强度动态缩放:
- 快乐/兴奋:振幅增大 → 动作更夸张、更活跃
- 悲伤/疲惫:振幅减小 → 动作更微弱、更低沉
- 愤怒:频率加快 → 动作更急促
这种设计让机器狗的动作风格随情感状态连续变化,而非在几个固定动作间硬切换。你看到的不是一台机械执行指令的机器,而是一只“有情绪”的机器狗。
七、教学意义与工程价值
MindPaw 的情感引擎在工程上实现了三个重要的教学目标:
连续情感空间建模:在资源受限的 MCU(ESP8266)上实现了 PAD 三维情感模型,这是 HRI(人机交互)领域的核心概念
多模态融合架构:展示了语音、手势、文本三种模态如何在中央决策层融合并影响最终输出
参数化行为控制:情感驱动的参数化动作生成,相比硬编码序列更灵活、更省存储空间
正如项目作者所说:“不靠昂贵硬件,也能做出有’灵魂’的机器人。”
🔗 相关链接:
- 项目 GitHub:https://github.com/ace-trump-tech/MindPaw
- 项目发布文章(CSDN):https://blog.csdn.net/qq_63129682/article/details/163312239
- 项目文档(API Guide):https://github.com/ace-trump-tech/MindPaw/blob/main/Docs/07_API_Guide.md