设计 + AI + 生活 · 一体化智能陪伴体验
更新时间:2026-06-26 | 作者:saito
Routii 不是一个单纯的手机 App,也不是一个独立的机器人硬件
它是一个把 iPhone App、桌面宠物、语音助手和实体电机 结合在一起的交互作品——手机负责界面、传感器、语音和视觉识别;ESP32 负责接收手机指令,把指令转换成 CAN 总线命令去控制电机;电机则让桌面装置真正产生动作
简单来说,Routii 想做的是:让一台 iPhone 在日常状态下是一个可爱的健康陪伴 App,放到桌面底座上充电时,又变成一个有表情、有声音、有身体动作的桌面伙伴
整个项目秉持一个价值立场:陪伴而非监督,牵挂而非催促
健康管理 App 普遍面临用户流失问题。项目通过 296 份有效问卷调研发现,用户坚持健康习惯的困难集中在四个方面
| 困难类型 | 人次 | 占比 |
|---|
| 容易忘记,缺乏提 | 108 | 36.5% |
| 缺乏动力,难以坚 | 94 | 31.8% |
| 看不到效果,容易放弃 | 92 | 31.1% |
| 一个人很难坚持,缺乏陪 | 85 | 28.7% |
同时,用户放弃使用健康 App 的主要原因包括提醒太频繁(30.1%)、记录太麻烦(25.3%)、提醒不够智能(25.0%)和新鲜感消退(23.0%)
这些数据说明了一件事:用户缺的不是功能,是"情感理由" Routii 的出发点,就是用一个有温度的虚拟宠物,给用户一个每天愿意打开 App 的理由
基于问卷与深度访谈,项目将目标用户分为四类,并设计了差异化的配置策略
| 用户类型 | 核心特征 | 核心诉求 |
|---|
| A. 情感驱动 | 对虚拟宠物有强烈情感认同,情感细 | 被温柔地牵挂,建立专属情感纽 |
| B. 功能务实 | 更看重实用功能,理性务实 | | 功能强大且整合,提供简约模 |
| C. 谨慎观望 | 对概念有兴趣但存在顾 | 零压力、零惩罚的体验 |
| D. 习惯困难 | 健康意识强但行为难以坚持 | 有东"每天等着",帮助度过倦怠期 |
项目还设计了基于大语言模型的对话式用户分型方案:通过 6 个探测点(陪伴态度、健康习惯自评、工具期待、提醒感受、负面状态反应、激励节奏偏好)的结构化对话,在首次使用时自动匹配最优配置参数——提醒频率、反馈语气、信息密度、负面状态强度、隐私默认值等
Routii 的系统可以理解成三层
- 表现 — iPhone App 上的界面、动画、表情、健康页面和个人页面
- 感知与决策层 — 手机读取健康数据、陀螺仪、摄像头、麦克风,判断当前应该进入哪种模式、发什么动作
- 硬件执行 — ESP32 接收手机发来的 JSON 指令,再通过 CAN 总线控制三个电机和 LED
每一部分做自己最擅长的事情:iPhone 做界面与感知,ESP32 做硬件中控,CAN 电机做实体动作,小智做自然语言对话。两边通过 WebSocket 协议连接,边界清晰
flowchart LR
User["用户"] --> AppUI["iPhone Routii App"]
AppUI --> HealthKit["Apple 健康数据"]
AppUI --> Motion["CoreMotion 陀螺仪 / 姿态"]
AppUI --> Camera["摄像头 / Vision 识别"]
AppUI --> Voice["麦克风 / 唤醒词 / 小智语音"]
AppUI --> WS["本地 WebSocket<br/>ws://ESP32:8080/ws"]
WS --> ESP32["ESP32-S3"]
ESP32 --> CAN["CAN 总线"]
CAN --> M1["1号电机<br/>0x581"]
CAN --> M2["2号电机<br/>0x582"]
CAN --> M3["3号电机<br/>0x583"]
Voice --> Xiaozhi["小智服务"]
ESP32 --> LED["呼吸灯 / 状态灯"]
手机不充电时,Routii 默认进入 App 模式。这个模式更像一个完整的虚拟宠物健康陪伴应用
- 首页 — 显示 Routii 小宠物、金币、状态条和互动按钮
- 健康 — 读取 Apple HealthKit 数据(步数、活动量、周趋势),通过同步按钮刷新
- 回忆 — 整理照片、日记、成就和今日回忆,展示用户与 Routii 的互动记
- 个人 — 支持头像和昵称自定义,包含隐私、反馈、Wi-Fi 地址、声音、告警和调试设置
- 快捷记录 — 底部加号支持"点按并滑"的融合球交互,可快速选择拍照、写日记等记录方
这一模式强调"日常使用"。用户不用接触复杂硬件,也可以把 Routii 当成一个陪伴型 App 来用
当 iPhone 检测到正在充电时,App 会自动进入桌面模式,强制横屏显示
桌面模式主要负责三件事:
- 显示桌面宠物表情 — 屏幕上不再是普通 App 页面,而是一个大面积"小智眼睛"界面,根据语音状态和情绪变化切换表情
- 保持语音交互 — 用户通过唤醒词唤醒小智,唤醒后进入一段连续对话窗口,不需要每句话都重新说唤醒
- 控制实体电机 — App 根据手机姿态、摄像头识别和语音动作,向 ESP32 发送电机控制指令
充电进入后会做一组基础动作:1 号电机进入初始角度,2 号电机自动转到约 40 度的位置,3 号电机根据手机当前横竖状态计算最短补偿角,让手机更接近横屏。拔掉充电后,App 退出桌面模式,回到 App 模式,并通知硬件复位或退出闭环
判断当前显示哪种模式:普通状态显示 VirtualPetAppModeView,桌面模式显示 RobotFaceView。同时监听电池状态,充电时调用 enterChargingDesktopMotorMode(),断电时调用 exitChargingDesktopMotorMode()
把各个能力都组织在一起的统一管理中心
| 能力 | 模块 |
|---|
| 网络连接 | RotiiWebSocketClient |
| 小智语音 | XiaozhiClient |
| 麦克风与唤醒 | MicrophoneManager、WakeWordRecognizer |
| 摄像 | CameraManager |
| 视觉识别 | 手、脸、人位置识别 |
| 健康数据 | HealthDataManager |
| 手机姿 | PhoneLevelingController |
| 防丢与告 | AntiLossMonitor |
界面不直接控制电机、语音或摄像头,而是交给 AppModel 统一处理。界面负责展示,AppModel 负责状态和逻辑,结构比较清楚
桌面模式里非常关键的模块。读取 iPhone 的 CoreMotion 数据(重力方向、姿态角度、横竖状态),计算手机现在更接近横屏还是竖屏、距离目标横屏还差多少角度、3 号电机应该往哪个方向补偿
这里的重点不是"把 3 号电机转到 90 度",而是根据手机本身的姿态去算一个补偿角,让手机最终看起来更接近横屏——目标是手机横过来,不是电机数字刚好等于 90
CameraManager 通过摄像头获得画面,交给 Vision / MediaPipe 模块分析,检测人、脸、手的位置和手势,在桌面模式下让眼球跟随用户或手的方向移动,给电机跟随逻辑提供目标位置
小智语音模块负责连接小智服务器、处理麦克风输入、通过唤醒词进入对话、接收文字和音频、根据语音状态更新眼睛表情。交互逻辑更接近真实助手:唤醒词 → 连续对话窗口 → 持续说话则延续 → 长时间无话则回到待唤醒状态
通过 HealthKit 读取 Apple 健康数据(今日步数、活动数据、周趋势、同步状态),让 Routii 不只是一个桌面玩具,也能和用户真实的生活状态产生关联。回忆模块展示用户与 Routii 之间的记录——快速拍照、日记、今日回忆、成就列表、时间线,底部加号的"点按、滑动、拖动"交互让记录动作更直接
ESP32-S3 是手机和电机之间的桥梁。它负责连接 Wi-Fi、通过 mDNS 暴露设备服务、开启本地 WebSocket 服务、接收 iPhone 发来的 JSON 指令、把指令转换成 CAN 总线命令、控制 LED 呼吸灯、返回电机 ACK 和诊断信息
ESP32 端核心文件包括:
| 文件 | 职责 |
|---|
local_ws_server.c | WebSocket 服务,接收手机消 |
protocol.c | JSON 协议解析和回复生 |
motor_controller.c | 电机控制入口 |
jc_can_gimbal.c | JC 系列 CAN 电机协议逻辑 |
rotii_led_strip.c | LED 灯效 |
rotii_wifi.c | Wi-Fi 与 mDNS |
| 电机 | CAN ID | 主要用 |
|---|
| 1 号电 | 0x581 | 左右方向、水平跟随或初始姿 |
| 2 号电 | 0x582 | 上下点头、俯仰角、充电时转到约 40 度 |
| 3 号电 | 0x583 | 横竖屏补偿、摇头动作、手机横向归位 |
手机不会直接发 CAN 帧,而是发更容易理解的动作指令,ESP32 再把它翻译成电机能识别的 CAN 指令
sequenceDiagram
participant Phone as iPhone App
participant Motion as CoreMotion
participant ESP as ESP32
participant CAN as CAN 电机
Phone->>Phone: 检测到正在充电
Phone->>Phone: 切换到横屏桌面模式
Phone->>ESP: 建立 WebSocket 连接
Motion->>Phone: 持续提供手机姿态
Phone->>Phone: 等待手机放稳
Phone->>ESP: 发送 1号 / 2号基础角度
ESP->>CAN: 转发到 0x581 / 0x582
Phone->>Phone: 计算手机到横屏的补偿角
Phone->>ESP: 发送 3号电机补偿动作
ESP->>CAN: 转发到 0x583
ESP-->>Phone: 返回 ACK / CAN 状
这条链路的核心是:手机负责"知道自己歪了多少",ESP32 负责"把动作发给电"
Routii 的桌面模式不是单纯显示一个静态图,而是把语音状态和视觉状态映射成表情和动作:
| 状 | 表情 | 动作 |
|---|
| 待机 | 洋红色默认眼 | |
| 听用户说 | 气泡和眼睛轻微动 | |
| 思 | 眉毛和眼睛进入思考状态 | |
| 回答 | 表情变化 | 小幅度点头(2 号电机)或摇头(3 号电机) |
| 情绪变化 | 屏幕颜色和眼睛形态变 | 根据情绪触发对应动作 |
| 看向用户 | 眼球跟随 | 电机跟随摄像头识别结 |
这样 Routii 的反馈不只停留在屏幕上,而是会通过实体运动表现出来
当前原型已实现的关键结构特性:
- 磁吸支架结构 — 稳固吸附,可自由调整角度
- 蓝色状态灯 — 通电/连接/语音状态清晰可见
- 底座供电与走 — 底座集中供电,走线简洁稳
- 可更换头部模 — 模块化设计,轻松替换不同头部,满足多场景功能霢
- Apple Watch 替换头 — 替换为 Apple Watch 后,实现手表端的智能联动体验
Routii 的设计思路是让每一部分做自己最擅长的事情:
- iPhone 适合做界面和感知 — 好屏幕、好麦克风、好摄像头、陀螺仪和 HealthKit
- ESP32 适合做硬件中控 — 稳定连 Wi-Fi,也能直接接 CAN 模块和 LED
- CAN 电机适合做实体动作 — 比普通小舵机更适合做可控、可反馈的机械结构
- 小智适合做自然语言对话 — 语音和对话逻辑交给小智,App 只负责连接、状态和展示
这样拆分以后,App 可以快速迭代界面和交互,硬件端可以专注于稳定执行动作,两边通过 WebSocket 协议连接
- 自动模式切换 — 充电进入桌面模式,断电回到 App 模式,无需手动操作
- 手机姿态参与机械控制制 — 通过 iPhone CoreMotion 数据计算电机补偿角,实现物理归位
- 桌面宠物表情系统 — 眼睛、眉毛、气泡、颜色根据语音和情绪状态实时变
- 连续对话语音交互 — 唤醒后可连续对话,比每句话重复唤醒词更自
- 多模态视觉跟 — 摄像头识别人、脸、手的位置,让 Routii 有"注意"
- HealthKit 健康陪伴 — Apple 健康数据进入 App,连接用户日常生
- 可调试硬件协 — 电机指令为清晰 JSON,可通过电脑、网页或 App 测试
- DMC 三层设计方法论 — 动力层(核心驱动力)、机制层(行为映射与规则)、组件层(视觉与交互),以情感联结驱动行为改
- AI 对话式用户分型 — 基于大语言模型的探测点对话,在首次使用时自动匹配个性化配置
- 零惩罚机 — 宠物状态设置下限,最差只是"有点没精神",用"想念"替代"责"
- 四类用户差异化策略 — 针对情感驱动型、功能务实型、谨慎观望型、习惯困难型分别配置提醒频率、反馈语气、信息密度等参数
项目对主流游戏化健康应用进行了系统分析,明确 Routii 的差异化定位
| 案例 | 核心定位 | 动力 | 机制 | 组件 |
|---|
| Pokémon GO | IP 探索 | IP 情感资产、收集动 | 地理绑定、孵化机 | AR 技术、LBS 地图 |
| Habitica | RPG 养成 | 角色认同、损失厌 | 任务系统、社交公 | 像素风格、列表界 |
| Plant Nanny | 拟物隐喻 | 照料本能、成长见 | 单一映射、简易循 | 治愈视觉、桌面 Widget |
| 海獭健康 | 治愈陪伴 | 收集装扮 | 间接映射、专注系 | Q 版萌系、装扮系统 |
| Duolingo | 情感督促 | 连胜压力、情感勒 | 弹性目标、即时反馈 | 情感 Widget、拟人推 |
| Garmin | 硬件轻量 | 随身陪伴、极简照料 | 步数转化、状态循 | 低分辨率像素 |
Routii 的差异化在于:同时具备情感陪伴(虚拟宠物)、健康管理(HealthKit 数据)、语音交互(小智)和实体动作(电机硬件),是唯一一个将数字宠物与物理实体结合的作品
Routii 的核心不是"一个 App 控制几个电机",而是把 iPhone 的感知能力、语音助手的对话能力、HealthKit 的生活数据和 ESP32 的硬件控制能 组合起来,让一个普通手机在充电时变成有表情、有听觉、有视觉、有动作的桌面伙伴
从设计方法论到真正改善用户健康习惯的链条上,项目完成了前半段的理论建构与原型实现:基于 296 份问卷调研和深度访谈构建了四类用户分型体系,基于 DMC 三层框架设计了差异化配置策略,基于 AI 对话实现了个性化初始化机制,并在 iOS App 和 ESP32 硬件两端完成了全链路跑
在人与技术的关系中,温暖的陪伴或许比冰冷的效率更能持久地激发人们对美好生活的追求。这种可能性本身,便是值得继续深耕的方向
技术栈 — Swift / SwiftUI / CoreMotion / Vision / MediaPipe / HealthKit / WebSocket / ESP32-S3 / C / CAN 总线 / 小智语音
项目类型 — 跨端交互作品(iOS App + 嵌入式硬件 + AI 语音 + 健康数据