# 对话动作 chat_v1

动作内容重新设计，播放机制使用设备原有的 Blender JSON parser 和本地轨迹队列。固件 `WatcheRobot_esp32/firmware/s3/spiffs/actions/chat_v1_*.json` 为作者资源真源，本目录是 Application 的可分发快照，manifest.json 校验其 SHA-256。升级动作内容时换版本 ID，并同时更新两端资源与 manifest，不在同一 ID 下悄悄改变时间线。SD 卡中不得安装同名覆盖资源，否则设备 catalog 的覆盖规则会改变实机轨迹。

| 状态 | 动作 | 时长（ms） | 表现 |
| --- | --- | ---: | --- |
| 平静讲话 | chat_v1_talk | 2540 | 左右轻摆、短停、归中 |
| 微笑 | chat_v1_smile | 1420 | 一次轻点头、停留、归中 |
| 开心 | chat_v1_happy | 2660 | 两次侧摆与抬落头、停留、归中 |
| 生气 | chat_v1_angry | 2960 | 稍转头、停留、缓慢回摆、归中 |
| 专注 | chat_v1_focus | 2360 | 偏头抬起、长停留、归中 |
| 伤心 | chat_v1_sad | 2820 | 缓慢低头、长停留、归中 |
| 无语 | chat_v1_resigned | 3460 | 转头、长停顿、反向轻摆、归中 |

中位 90°/108°；当前动作 pan 84–98°、tilt 103–114°。移动与停留独立，按线性 50Hz、pan 6us/frame、tilt 4us/frame 预算校验。真实速度和重力负载仍需机械验收；ACK/DONE 只代表协议/命令轨迹完成。Application 在命令 ACK 后采样同一 JSON 得到预计姿态，继续等完整时长与 120ms 缓冲后才能选下一段，不能视为 ADC 测量。

情绪状态进入时播放一次，讲话可在完整动作结束和 400ms 停顿后重复；正在执行时仅保留最新状态。表情独立跟随情绪，不等待头部动作；嘴型独立跟随机器人真实 PCM。
