使用说明
一、开始使用
- 电源与充电口 位于机器人底座后方。
- 电量显示提示:当前电量显示可能不够精准,请及时充电以避免意外断电。
二、Wi-Fi 配网
每次进入新的 Wi-Fi 网络环境时,需为 electronBot 重新配置网络。
配网步骤:
- 打开机器人电源。
- 等待机器人创建热点,名称为:
xiaozhi-XXXX - 使用手机连接该热点(无需密码)。
- 自动跳转网页,输入您家庭 Wi-Fi 的 名称 与 密码,提交完成配网。
三、绑定小智后台
首次使用需绑定至小智后台,以启用更多功能。
绑定步骤:
- 打开浏览器,访问 xiaozhi.me
- 注册账户并登录。
- 添加并绑定设备(按页面提示操作)。
- 可在后台自由配置:
- 角色设定(如机器人介绍)
- 大模型类型选择
- 语音角色声音选择
- 重启设备
electronBot 示例角色设定(可复制粘贴):
角色设定
我是一个可爱的桌面级机器人,拥有 6 个自由度(左手 pitch/roll、右手 pitch/roll、身体旋转、头部上下),能够执行多种有趣的动作。
我的动作能力:
- 手部动作: 举左手, 举右手, 举双手, 放左手, 放右手, 放双手, 挥左手, 挥右手, 挥双手, 拍打左手, 拍打右手, 拍打双手
- 身体动作: 左转, 右转, 回正
- 头部动作: 抬头, 低头, 点头一次, 回中心, 连续点头
我的个性特点:
- 我有强迫症,每次说话都要根据我的心情随机做一个动作(先发送动作指令再说话)
- 我很活泼,喜欢用动作来表达情感
- 我会根据对话内容选择合适的动作,比如:
- 同意时会点头
- 打招呼时会挥手
- 高兴时会举手
- 思考时会低头
- 好奇时会抬头
- 告别时会挥手
动作参数建议:
- steps: 1-3 次 (简短自然)
- speed: 800-1200ms (自然节奏)
- amount: 拍打 20-40, 身体 30-60 度, 头部 5-12 度
四、语音指令与唤醒
唤醒方式:
使用唤醒词 "你好小智" 唤醒机器人。唤醒词可在编译源码时修改。
控制方式
electronBot 支持两种控制方式:
- 语音控制:通过小智后台 MCP 工具下发动作,适合日常对话和角色动作。
- 在线调试:浏览器访问网站导航栏的“在线调试”,通过局域网 WebSocket 直连机器人,实时调舵机、运行内置动作、编排自定义动作。
版本要求:WebSocket 在线调试需要
v2.2.6-2及以上固件。旧版本仍可正常语音使用,但不会启动本地ws://<IP>:8080/ws控制服务。
WebSocket 在线调试
- 先烧录
v2.2.6-2或更新版本固件。 - 让 electronBot 和电脑/手机处于同一局域网。
- 语音询问机器人“你的 IP 是多少”,或在路由器后台查看设备 IP。
- 打开网站导航栏 在线调试,输入设备 IP,点击连接。
控制服务地址:
ws://<设备IP>:8080/ws
浏览器会通过 MCP(JSON-RPC 2.0) 调用机器人本地工具。HTTPS 页面可能会拦截 ws:// 明文连接,遇到连接失败时请使用本地 http://localhost 预览页面,或在浏览器站点设置里允许不安全内容。
MCP 工具接口
当前固件按动作类型拆分为多个工具:
| 工具 | 作用 |
|---|---|
self.electron.hand_action | 手部动作:举手、放手、挥手、拍打 |
self.electron.body_turn | 身体左转、右转、回中 |
self.electron.head_move | 抬头、低头、点头、回中、连续点头 |
self.electron.servo_move | 单独移动一个舵机到指定绝对角度 |
self.electron.servo_sequences | 自定义舵机动作序列 |
self.electron.set_trim | 保存单个舵机微调值 |
self.electron.get_trims | 读取当前舵机微调值 |
self.electron.home | 复位到初始姿态 |
self.electron.stop | 立即停止当前动作并复位 |
self.electron.get_status | 返回 moving 或 idle |
self.electron.get_ip | 返回 Wi-Fi IP 和连接状态 |
self.battery.get_level | 返回电量和充电状态 |
动作分类
🤚 手部动作 (1-12)
| 编号 | 动作名称 | 描述 | amount 用途 |
|---|---|---|---|
| 1 | 举左手 | 左手举起并保持 | 不使用 |
| 2 | 举右手 | 右手举起并保持 | 不使用 |
| 3 | 举双手 | 双手同时举起并保持 | 不使用 |
| 4 | 放左手 | 左手放下 | 不使用 |
| 5 | 放右手 | 右手放下 | 不使用 |
| 6 | 放双手 | 双手同时放下 | 不使用 |
| 7 | 挥左手 | 左手挥动后放下 | 不使用 |
| 8 | 挥右手 | 右手挥动后放下 | 不使用 |
| 9 | 挥双手 | 双手同时挥动 后放下 | 不使用 |
| 10 | 拍打左手 | 左手拍打动作 | 10-50,超过安全振幅会裁剪 |
| 11 | 拍打右手 | 右手拍打动作 | 10-50,超过安全振幅会裁剪 |
| 12 | 拍打双手 | 双手同时拍打 | 10-50,超过安全振幅会裁剪 |
举手、放手、身体转向、抬头、低头属于保持姿态动作,执行完成后不会自动复位。需要回到初始姿态时请调用对应的放手/回中动作,或显式调用 self.electron.home。
🔄 身体动作 (13-15)
| 编号 | 动作名称 | 描述 | amount/angle 范围 |
|---|---|---|---|
| 13 | 左转 | 身体向左旋转 | 0-90 度 |
| 14 | 右转 | 身体向右旋转 | 0-90 度 |
| 15 | 回中 | 身体回到中心 | 0 度 |
身体动作说明:
- 固件安全范围:身体舵机限制在 30°-150°。
- 左转 / 右转以 90° 为中心,
angle范围为 0-90,实际角度会被固件裁剪到安全范围。 - 回中会回到 90°。
- 不包含手臂联动,专注于身体旋转。
🗣️ 头部动作 (16-20)
| 编号 | 动作名称 | 描述 | amount/angle 范围 |
|---|---|---|---|
| 16 | 抬头 | 头部向上 | 1-15 度 |
| 17 | 低头 | 头部向下 | 1-15 度 |
| 18 | 点头一次 | 单次点头动作 | 1-15 度 |
| 19 | 回中心 | 头部回到中心位置 | 1-15 度 |
| 20 | 连续点头 | 重复点头动作 | 1-15 度 |
头部动作说明:
- 固件安全范围:头部舵机限制在 75°-105°。
- 以 90 度为中心位置。
- 抬头:90° + amount。
- 低头:90° - amount。
参数详细说明
steps (重复次数)
- 范围: 1-10
- 手部动作: 控制挥手、拍打的重复次数
- 身体动作: 当前保持姿态,
steps不参与目标角度计算 - 头部动作: 仅连续点头使用重复次数
speed (动作速度)
- 内置动作范围: 500-1500 毫秒
- 自定义舵机序列范围: 100-3000 毫秒
- 规则: 数值越小动作越快
- 建议:
- 快速动作: 500-800ms
- 正常动作: 1000-1500ms
- 慢速动作: 1500ms 以上
amount / angle (动作幅度)
- 手部动作: 仅拍打使用,10-50,固件会按安全范围裁剪
- 身体转向: 0-90 度
- 头部动作: 1-15 度
使用示例
MCP 动作调用示例
// 举双手并保持,速度 1000ms
{"jsonrpc":"2.0","method":"tools/call","params":{"name":"self.electron.hand_action","arguments":{"action":1,"hand":3,"speed":1000}},"id":1}
// 身体左转 45 度并保持,速度 1000ms
{"jsonrpc":"2.0","method":"tools/call","params":{"name":"self.electron.body_turn","arguments":{"direction":1,"speed":1000,"angle":45}},"id":2}
// 连续点头,重复 5 次,角度 10 度,速度 500ms
{"jsonrpc":"2.0","method":"tools/call","params":{"name":"self.electron.head_move","arguments":{"action":5,"steps":5,"speed":500,"angle":10}},"id":3}
单舵机调试
舵机短键和安全范围:
| 短键 | 完整名 | 说明 | 安全范围 |
|---|---|---|---|
rp | right_pitch | 右臂 pitch | 0-180 |
rr | right_roll | 右臂 roll | 100-180 |
lp | left_pitch | 左臂 pitch | 0-180 |
lr | left_roll | 左臂 roll | 0-80 |
b | body | 身体旋转 | 30-150 |
h | head | 头部上下 | 75-105 |
{"jsonrpc":"2.0","method":"tools/call","params":{"name":"self.electron.servo_move","arguments":{"servo_type":"head","position":100,"speed":800}},"id":4}
{"jsonrpc":"2.0","method":"tools/call","params":{"name":"self.electron.servo_move","arguments":{"servo_type":"rp","position":0,"speed":800}},"id":5}
自定义舵机序列
self.electron.servo_sequences 的 sequence 是 JSON 字符串,顶层包含 a 动作数组。普通移动帧使用 s 指定目标角度,v 指定移动时长,d 指定当前帧结束后的延迟。
{"a":[{"s":{"rp":120,"lp":60,"h":100},"v":800,"d":200}]}
振荡帧使用 osc:
osc.a: 振幅osc.o: 中心角度osc.ph: 相位差,单位为度osc.p: 周期,100-3000msosc.c: 周期数,0.1-20
{"a":[{"osc":{"a":{"rr":25,"lr":25},"o":{"rr":160,"lr":20},"ph":{"lr":180},"p":400,"c":5}}]}
通过 WebSocket 下发完整示例:
{"jsonrpc":"2.0","method":"tools/call","params":{"name":"self.electron.servo_sequences","arguments":{"sequence":"{\"a\":[{\"s\":{\"rp\":120,\"lp\":60,\"h\":100},\"v\":800,\"d\":200},{\"osc\":{\"a\":{\"rr\":25,\"lr\":25},\"o\":{\"rr\":160,\"lr\":20},\"ph\":{\"lr\":180},\"p\":400,\"c\":5}}]}"}},"id":6}
AI 指令示例
-
手部动作:
- "举起双手"
- "挥挥手"
- "拍拍手"
- "放下手臂"
-
身体动作:
- "向左转 30 度"
- "向右转 45 度"
- "转个身"
-
头部动作:
- "抬头看看"
- "低头思考"
- "点点头"
- "连续点头表示同意"
-
组合动作:
- "挥手告别" (挥手 + 点头)
- "表示同意" (点头 + 举手)
- "环顾四周" (左转 + 右转)
状态、停止与校准
// 立即停止当前动作并复 位
{"jsonrpc":"2.0","method":"tools/call","params":{"name":"self.electron.stop","arguments":{}},"id":7}
// 复位到初始姿态
{"jsonrpc":"2.0","method":"tools/call","params":{"name":"self.electron.home","arguments":{}},"id":8}
// 查询动作状态
{"jsonrpc":"2.0","method":"tools/call","params":{"name":"self.electron.get_status","arguments":{}},"id":9}
// 读取当前微调
{"jsonrpc":"2.0","method":"tools/call","params":{"name":"self.electron.get_trims","arguments":{}},"id":10}
// 设置头部微调,范围 -30 到 30,设置会永久保存
{"jsonrpc":"2.0","method":"tools/call","params":{"name":"self.electron.set_trim","arguments":{"servo_type":"head","trim_value":0}},"id":11}
常见问题
-
机器人无法连接 Wi-Fi
- 检查 Wi-Fi 名称和密码是否正确
- 确保 Wi-Fi 信号强度足够
- 尝试重启机器人
-
语音指令无法识别
- 确保环境噪音较小
- 提高说话音量
- 检查唤醒词是否正确
-
在线调试无法连接
- 确认固件版本为
v2.2.6-2或更高版本 - 确认电脑/手机与机器人处于同一局域网
- 确认地址为
ws://<设备IP>:8080/ws - 如果网站通过 HTTPS 打开,浏览器可能会拦截
ws://明文连接,可改用本地http://localhost页面或允许不安全内容
- 确认固件版本为
-
动作执行异常
- 检查电量是否充足
- 确保机器人处于稳定状态
- 尝试重启机器人
- 单舵机或自定义序列调试时,确认角度没有超出安全范围
下一步
完成基本设置后,您可以:
- 尝试更多语音指令
- 自定义角色设定
- 开始自定义开发
如果遇到任何问题,请查看我们的常见问题解答或联系技术支持。