📦 JoyIn Robot Control — 机器人遥控

v1.1.0

通过 OpenAPI 远程控制 JoyIn AI 机器人(W-1 Walle / M-1 Mini),实现移动、跟随、拍照、录像、直播、语音合成、智能体配置及设备状态查询等功能。

0· 207·0 当前·0 累计
下载技能包
最后更新
2026/3/15
0
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
技能代码、运行指令及所需环境变量均与其声明的 JoyIn 机器人远程控制用途一致,未索取无关凭据或安装任意代码。
评估建议
该技能与其声明用途一致,但安装前请注意:1)确认 JOYIN_API_BASE 指向官方 JoyIn API,避免使用测试或个人主机(除非确实需要);2)妥善保管 JOYIN_AUTH_KEY,建议通过安全环境/服务注入而非明文写入 openclaw.json;3)尽量使用作用域受限的机器人控制令牌并定期轮换;4)先用非生产/测试设备验证行为,并在发送移动指令前运行提供的预检命令;5)代理可默认自动调用此技能,若涉及物理安全,请仅向可信代理/用户开放访问。...
详细分析 ▾
用途与能力
名称/描述与内容一致:一个调用 JoyIn OpenAPI 的 Python CLI。所需二进制(python3)及环境变量(API 基址、认证密钥、设备 SN)合理且为所述机器人控制功能所必需。
指令范围
SKILL.md 指示代理运行附带的 Python 脚本并在执行命令前进行预检。指令仅引用声明的环境变量及附带示例配置,未索取无关文件、系统密钥或向意外端点传输数据。
安装机制
无安装规范或外部下载;技能仅为指令形式,附带仅使用标准库的 Python 脚本。安装期间不会从任意 URL 获取内容或写入系统目录。
凭证需求
技能仅请求一个服务凭据(JOYIN_AUTH_KEY)及 API 基址和设备标识符,均与调用机器人 API 直接相关。环境变量的数量与命名与功能规模成比例。
持久化与权限
技能未请求 always:true,也未修改其他技能或全局代理设置。disable-model-invocation 为 false(正常),允许自主调用,但未与可疑访问模式结合。
安全有层次,运行前请审查代码。

运行时依赖

无特殊依赖

版本

latestv1.1.02026/3/15

新增预检检查命令及状态感知的代理工作流规则。

无害

安装命令

点击复制
官方npx clawhub@latest install joyin-robot-control
镜像加速npx clawhub@latest install joyin-robot-control --registry https://cn.longxiaskill.com

技能文档

设置

OpenClaw 配置 在 ~/.openclaw/openclaw.json 中添加以下内容: ``json5 { "skills": { "entries": { "joyin-robot-control": { "enabled": true, "apiKey": "YOUR_AUTH_KEY", "env": { "JOYIN_API_BASE": "https://api-open-test.joyin-ai.com", "JOYIN_AUTH_KEY": "YOUR_AUTH_KEY", "JOYIN_DEVICE_SN": "YOUR_DEVICE_SN", "JOYIN_DEVICE_TYPE_ID": "3" } } } } } ` 完整模板见 {baseDir}/openclaw.config.example.json5

环境变量 | 变量 | 必须 | 说明 | |----------|----------|-------------| | JOYIN_API_BASE | 是 | API 基地址(测试环境:https://api-open-test.joyin-ai.com) | | JOYIN_AUTH_KEY | 是 | 授权密钥(联系 JoyIn 工作人员获取) | | JOYIN_DEVICE_SN | 是 | 目标设备序列号 | | JOYIN_DEVICE_TYPE_ID | 否 | 3 表示 Walle(默认),2 表示 Mini | OpenClaw 在 agent 运行时通过 skills.entries.*.env 注入,作用域仅限本次运行,不会泄漏到全局 shell 环境。

工具 ` python3 {baseDir}/scripts/robot_cmd.py [options]

Agent 工作流规则(重要) 任何机器人指令前必须先执行 preflight,用于检查设备是否在线、电量及当前工作模式。

决策流程: 1. 运行:python3 {baseDir}/scripts/robot_cmd.py preflight 2. 检查结果: - "ready": false → 告知用户原因(离线/OTA/低电量)。禁止发送指令。 - "ready": true,且 "note" 提示当前模式 → 先告知用户,再继续。 - "ready": true,且 idle → 直接执行指令。 3. 执行用户请求的指令。 4. 向用户汇报结果。

状态感知行为: | current_status | 含义 | 处理方式 | |----------------|---------|------------| | offline | 设备离线 | 告知用户,禁止发送指令。 | | idle | 空闲就绪 | 正常继续。 | | follow | 跟随模式中 | 发送冲突指令前(如 remote_control)需先警告。先 stop。 | | remote_control | 摇杆已激活 | 已在 RC 模式,可直接发送移动指令。 | | patrol | 巡逻中 | 中断前需警告,先 stop。 | | go_charge | 回充中 | 中断前需警告。 | | guard | 值守中 | 中断前需警告。 | | ota | 固件升级中 | 禁止任何指令,等待完成。 | | build_map | 建图中 | 禁止中断。 | | active_action | 执行动作中 | 与 follow 冲突,必要时先 stop。 |

电量规则: - < 10% 且未充电 → 建议先执行 charge 再移动。 - < 5% → 拒绝移动类指令,仅允许 chargestatus

快速示例 bash # 务必先执行预检 python3 {baseDir}/scripts/robot_cmd.py preflight

# 机器人前进 python3 {baseDir}/scripts/robot_cmd.py move --direction forward

# 停止所有运动 python3 {baseDir}/scripts/robot_cmd.py stop

# 让机器人说话 python3 {baseDir}/scripts/robot_cmd.py tts --text "你好,我是你的机器人助手"

# 查看设备状态(电量、在线、充电) python3 {baseDir}/scripts/robot_cmd.py status

# 获取实时视频流地址 python3 {baseDir}/scripts/robot_cmd.py live_pull_url ` ---

指令参考

1. 移动 — 遥控模式 进入/退出遥控模式: `bash python3 {baseDir}/scripts/robot_cmd.py rc_enter python3 {baseDir}/scripts/robot_cmd.py rc_exit

底盘移动(8 方向,需约 100 ms 连续发送,停止指令即停车): bash python3 {baseDir}/scripts/robot_cmd.py move --direction forward python3 {baseDir}/scripts/robot_cmd.py move --direction backward python3 {baseDir}/scripts/robot_cmd.py move --direction left python3 {baseDir}/scripts/robot_cmd.py move --direction right python3 {baseDir}/scripts/robot_cmd.py move --direction left_up python3 {baseDir}/scripts/robot_cmd.py move --direction right_up python3 {baseDir}/scripts/robot_cmd.py move --direction left_down python3 {baseDir}/scripts/robot_cmd.py move --direction right_down

# 停止底盘 python3 {baseDir}/scripts/robot_cmd.py move_stop


头部控制(仅 Walle) — 上下左右,约 100 ms 连续: 
bash python3 {baseDir}/scripts/robot_cmd.py head --direction up python3 {baseDir}/scripts/robot_cmd.py head --direction down python3 {baseDir}/scripts/robot_cmd.py head --direction left python3 {baseDir}/scripts/robot_cmd.py head --direction right python3 {baseDir}/scripts/robot_cmd.py head --direction stop

手臂控制(仅 Walle) — 左臂或右臂: 
bash python3 {baseDir}/scripts/robot_cmd.py arm --side left --direction up python3 {baseDir}/scripts/robot_cmd.py arm --side left --direction down python3 {baseDir}/scripts/robot_cmd.py arm --side left --direction stop python3 {baseDir}/scripts/robot_cmd.py arm --side right --direction up python3 {baseDir}/scripts/robot_cmd.py arm --side right --direction stop

复位(仅 Walle): 
bash python3 {baseDir}/scripts/robot_cmd.py reset --target all # 全部复位 python3 {baseDir}/scripts/robot_cmd.py reset --target head # 仅头部 python3 {baseDir}/scripts/robot_cmd.py reset --target arm # 仅手臂

2. 固定动作(仅 Mini)

bash python3 {baseDir}/scripts/robot_cmd.py car_on # 上车 python3 {baseDir}/scripts/robot_cmd.py car_off # 下车 python3 {baseDir}/scripts/robot_cmd.py standup # 站立 python3 {baseDir}/scripts/robot_cmd.py boot_off # 收脚 python3 {baseDir}/scripts/robot_cmd.py boot_on # 卡脚 python3 {baseDir}/scripts/robot_cmd.py hello # 打招呼 python3 {baseDir}/scripts/robot_cmd.py hello_off # 收手 python3 {baseDir}/scripts/robot_cmd.py head_up # 抬头 python3 {baseDir}/scripts/robot_cmd.py head_down # 回头 (低头) python3 {baseDir}/scripts/robot_cmd.py charge # 回充电桩 python3 {baseDir}/scripts/robot_cmd.py charge_stop # 停止回充

3. 紧急停止

bash python3 {baseDir}/scripts/robot_cmd.py stop # 急停,停止所有移动和功能

4. 语音 — TTS

bash # 在设备扬声器播放文本 python3 {baseDir}/scripts/robot_cmd.py tts --text "你好世界"

# 播放后关闭麦克风(keep_silent=1) python3 {baseDir}/scripts/robot_cmd.py tts --text "请安静" --keep-silent


5. 设备状态与预检

bash # 飞行前检查(任何指令前必跑) python3 {baseDir}/scripts/robot_cmd.py preflight # 返回:ready (bool)、current_status、battery、is_charging、issues[]、suggestion

# 获取原始设备状态 python3 {baseDir}/scripts/robot_cmd.py status


预检返回示例(就绪): 
json { "ready": true, "current_status": "idle", "current_status_name": "空闲", "battery": 85, "is_charging": false, "note": "Device is online and idle. Ready to accept commands." }

预检返回示例(未就绪): 
json { "ready": false, "current_status": "offline", "battery": -1, "issues": ["Device is OFFLINE — cannot accept commands"], "suggestion": "Device is OFFLINE — cannot accept commands" }

6. 实时视频

bash # 启动设备摄像头推流 python3 {baseDir}/scripts/robot_cmd.py live_push --status 1

# 停止推流 python3 {baseDir}/scripts/robot_cmd.py live_push --status 0

# 获取拉流地址(HLS/RTMP) python3 {baseDir}/scripts/robot_cmd.py live_pull_url

# 获取推流地址 python3 {baseDir}/scripts/robot_cmd.py live_push_url


7. ASR 结果

bash # 获取机器人最新的语音识别结果 python3 {baseDir}/scripts/robot_cmd.py asr_result

8. WiFi 配置

bash # 配置机器人 WiFi(SSID 与密码需 base64 编码) python3 {baseDir}/scripts/robot_cmd.py wifi --ssid "MyWiFi" --password "12345678"

9. LLM 配置(注册自定义模型)

bash # 注册自定义 LLM python3 {baseDir}/scripts/robot_cmd.py llm_register --name "My GPT" --base-url "https://api.openai.com/v1" --api-key "sk-xxx" --model "gpt-4"

# 列出已注册 LLM python3 {baseDir}/scripts/robot_cmd.py llm_list

# 更新已注册 LLM python3 {baseDir}/scripts/robot_cmd.py llm_update --id 123 --model "gpt-4o"


10. Agent 配置

bash # 使用已注册 LLM 创建 agent python3 {baseDir}/scripts/robot_cmd.py agent_create --name "My Agent" --llm-id 123

# 列出 agents python3 {baseDir}/scripts/robot_cmd.py agent_list

# 更新 agent python3 {baseDir}/scripts/robot_cmd.py agent_update --id 123 --name "New Name"

# 将 agent 绑定到设备 python3 {baseDir}/scripts/robot_cmd.py agent_bind --agent-id 123

# 查询设备已绑定 agent python3 {baseDir}/scripts/robot_cmd.py agent_query

# 恢复默认 JoyIn agent python3 {baseDir}/scripts/robot_cmd.py agent_reset `


设备类型 | 类型 ID | 型号 | 代号 | 主要能力 | |---------|-------|----------|-----------------| | 3 | W-1 (Walle) | walle | 底盘+头部+手臂控制,8 方向摇杆,位置复位 | | 2 | M-1 (Mini) | mini | 底盘控制,固定身体动作(站立/上车/打招呼/抬头),回充 |

API 协议 - 基地址https://api-open-test.joyin-ai.com(测试环境) - 认证:所有请求需带 3 个 header — AuthorizationDevice-SnDevice-Type-Id - 机器人指令POST /v1/device/interaction/cmd,body 为 {"cmd_type":"...","status":"...","name":"...","data":{...}} - 返回格式{"code": 200, "msg": "success", "data": {...}}

重要提示 - 设备必须 在线 才能执行指令。 - 摇杆类指令(move/head/arm)需 约 100 ms 连续发送,停止即自动停车。 - TTS 的 keep_silent=1` 表示播放后关闭麦克风。 - 部分 API(LLM 配置、Agent 配置)标注为 "开发中",可能未完全开放。

数据来源ClawHub ↗ · 中文优化:龙虾技能库