🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

NoneadChina/dsh-nonead-universal-robots

DeepSeek Harnessspec-screened扫描:中风险在 GitHub 查看 ↗
⚠ 装前注意

一个让 DSH 用自然语言直接控制 Universal RobotsUR机械臂的插件,由拓德科技Nonead基于自研的…

基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/9/9 · 已提供中文文档

一个使DSH能够使用自然语言直接控制Universal Robots(UR)机械臂的插件,由Nonead Technology基于自主研发的nUR MCP Server的源码逻辑开发。(苏州诺尼德机器人技术有限公司)

综合分
31.8
GitHub 分
31.8
用户评分
—
★ Stars
4
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add NoneadChina/dsh-nonead-universal-robots
未发布到 npm registry,仅可从源码安装,改用 GitHub 源安装
信任档位:已验证本站已于 3 天前真实安装成功(L4 · 真实安装)
是什么
dsh 原生插件 · tool
装得上吗
本站已真实安装成功(L4 · 真实安装,非静态推断)
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
活跃:最近一次提交在 16 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

🟢实装验证通过· 2026/9/23
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/20(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-nonead-universal-robots(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖要求 ^0.1.2-rc.1 · 最新 ? 兼容
✓入口文件main/exports/bin 已声明

未发布到 npm registry,仅可从源码安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/20 13:59:32

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh@deepseek-ai/dsh-tools@deepseek-ai/cordis@deepseek-ai/schemastery
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
dsh-nonead-universal-robots

一个让 DSH 用自然语言直接控制 Universal Robots(UR)机械臂的插件,由拓德科技(Nonead)基于自研的 nUR MCP Server 同源逻辑开发。(Suzhou Nonead Robot Technology Co., Ltd.)

本插件与该公司的 Nonead-Universal-Robots-MCP(见「参考实现」一节)同源,把「用 AI 控制 UR 机器人」的能力以原生 DSH 工具的形式接入:插件启动一个常驻的 Python worker(内部复用 vendored 的 URBasic 库),工具通过该 worker 与机器人通信,connect 一次后即可在同一 IP 上持续发指令。

⚠️ 安全提示:本插件会直接驱动真实机械臂。使用时务必保证机器人可见、急停按钮在触手可及处、工作区无障碍物/人员。把它当作授予 bash 工具一样慎重对待。你(或模型)对任何运动指令负全责。

🛡️ 运动审批门禁:ur_movej / ur_movel / ur_move_x|y|z / ur_draw_ / ur_load_program / ur_run_program / ur_send_script / ur_reset_error 这些会驱动机器人运动或执行程序的指令,在真正下发到机器人前会暂停等待人工确认。交互式部署(审批策略为 ask)会在界面上弹出确认框;未组合审批服务或无代理的调用会以拒绝方式安全关闭(fail-closed),绝不会在未获批准时运动。可用配置 requireApprovalForMotion: false 关闭此门禁。

功能一览

| 类别 | 工具(ur_) | 说明 |
|---|---|---|
| 连接 | ur_connect / ur_disconnect | 按 IP 连接 / 断开一台 UR 机器人 |
| 状态 | ur_get_status | 一次性读取 TCP、关节、型号、序列号、版本、安全模式、运行/程序状态、电压、电流、温度、开机时长 |
| 位姿 | ur_get_tcp_pose / ur_get_joint_pose | 读取当前 TCP 位置 / 关节角度 |
| 设备信息 | ur_get_robot_model / ur_get_serial_number / ur_get_uptime / ur_get_software_version / ur_get_safety_mode / ur_get_robot_mode | 型号(含 remote_control 字段)/ 序列号 / 开机时长 / 软件版本 / 安全模式 / 运行状态 |
| 程序 | ur_get_program_state / ur_load_program / ur_run_program / ur_stop_program / ur_pause_program / ur_list_programs | 程序状态、加载、运行、停止、暂停、SSH 列表(list_programs 兼容真机 /programs 与 URSim ~/URSim_Linux-/programs.;load/run 支持完整路径/URSim 路径与 programs_dir) |
| 寄存器 | ur_get_int_register / ur_get_double_register / ur_get_bit_register | 读取 Int / Double / Bool 寄存器 |
| 健康检查 | ur_ping | 无需连接机器人,检测 worker/Python/URBasic 就绪 |
| I/O | ur_get_digital_in / ur_set_digital_out / ur_get_digital_in_bits / ur_get_digital_out_bits / ur_get_analog_in / ur_set_analog_out | 数字输入/输出(含批量读位、which="tool" 的工具端数字 I/O)、标准模拟输入/输出 |
| 工具配置 | ur_set_tool_voltage / ur_set_tcp / ur_set_payload | 工具电压、TCP、负载质量/重心 |
| 传送带 | ur_get_conveyor / ur_set_conveyor_tick | 传送带 tick 读取 / 设置 |
| 运动 | ur_movej / ur_movel / ur_movep / ur_movec / ur_servoj / ur_move_x / ur_move_y / ur_move_z | 关节空间 / 直线 / 路径 / 圆弧 / 连续流 / 沿轴直线运动 |
| 绘图 | ur_draw_circle / ur_draw_square / ur_draw_rectangle / ur_draw_star | 画圆 / 正方形 / 长方形 / 五角星(含 URSim 路径) |
| 脚本 / 紧急 | ur_send_script / ur_reset_error | 发送 URScript / 复位错误 |

除「连接」外,所有工具都接受 ip 参数,且都要求先连接该 IP。

安装到 DSH profile

方式一:作为 bundle 手动安装

1. 在目标 profile 的 package.json 中把本插件加入依赖:

// C:\Users\\.dsh\profiles\web\package.json
{
"dependencies": {
"dsh-nonead-universal-robots": "^0.3.8"
},
"dsh": {
"profile": {
"bundles": [               // 把本插件加到数组里(顺序靠后即可)
"...",
"dsh-nonead-universal-robots"
]
}
}
}

2. 通过 dsh plugin(等价于在 profile 目录内跑 pnpm)安装依赖:

dsh plugin --profile web install
或 cd "$DSH_HOME/profiles/web" && pnpm install

3. 重启 DSH。插件的 cordis.patch.yml 会自动把插件行插入配置树,工具以 ur_ 形式出现在模型工具列表中。

方式二:本地路径(开发时)

把仓库路径加入 profile 依赖(pnpm 支持 file:),便于在本仓库迭代:

"dependencies": {
"dsh-nonead-universal-robots": "file:D:/MyProgram/GitLab/dsh-Nonead-Universal-Robots/dsh-nonead-universal-robots"
}

Python 运行时

插件需要一个可用的 Python 与若干依赖(numpy、paramiko)来启动 worker。可用 pythonBin 配置指向解释器:

pip install -r requirements.txt

cordis.patch.yml 中的 pythonBin(默认 python)、commandTimeoutMs(运动/脚本超时,默认 60000)、connectTimeoutMs(首次连接超时,默认 30000)都可按部署覆盖。若 python 不在 PATH,改成绝对路径,例如 "C:\\Python312\\python.exe" 或 "/usr/bin/python3"。

健康检查 / 测试

无需连接真实机器人即可验证插件与 Python 运行时是否就绪:

npm run test:python   # python ur_worker.py --selfcheck:校验 Python/numpy/paramiko/URBasic/RTDE 配置
npm test              # 起一个真实 worker,走一遍 ping + 异常操作(验证 stdio 协议与进程管理)

npm test 会返回 selftest passed. 或非零退出。若 python 不在 PATH,用环境变量指定:

UR_PYTHON=C:\\Python312\\python.exe npm test

首次连接到某机器人时,ur_connect 有约 20s 的 RTDE 就绪等待,超时会返回清晰错误而非卡死。

工作原理

DSH 模型        @deepseek-ai/dsh-tools        python/ur_worker.py          UR 机器人
│  ur_movej(...)  │                              │                          │
├────────────────►  ctx.tools.register(defineTool)                        │
│                  │  lib/worker.js               │                          │
│                  ├── spawn(ur_worker.py) ──────►│  import URBasic          │
│                  │   {id,op,params} ───────────►│  RTDE+Dashboard+RTC      │
│                  │  ◄── {message,data} ─────────┤  各 op 执行              │
│  ◄── text ───────┤                              │                          │

- python/ur_worker.py:常驻 stdio JSON worker。维护 ROBOTS / ROBOT_MODELS 字典,按 IP 连接,每次调用一条指令。运动指令用「到位确认」轮询(有界),并在出错时返回结构化错误。
- lib/worker.js:按需拉起 worker 一次并保持存活,行分隔 JSON 协议配对请求/响应,带超时与取消(转发 exec.signal)。
- lib/index.js:Cordis 插件,导入 defineTool 把上述控制逻辑注册成工具;inject: ['tools']。

工具命名与示例

工具名稳定为 ur_,示例提示词:

连接 192.168.1.199,读取当前 TCP 位姿。

ur_connect(ip="192.168.1.199")
ur_get_tcp_pose(ip="192.168.1.199")

让 192.168.1.199 的 TCP 沿 Z 轴下降 20mm。

ur_get_tcp_pose(ip="192.168.1.199")
ur_move_z(ip="192.168.1.199", distance=-0.02)

绘制一个半径 50mm 的圆(竖直平面)。

ur_draw_circle(ip="192.168.1.199", center=[0.3,-0.2,0.4,0,3.14,0], r=0.05)

参考实现

- 本插件仓库:

本插件与拓德科技的 Nonead-Universal-Robots-MCP(GitHub: )同源,复用其中的 URBasic 库与机器人控制逻辑,由同一团队面向 DeepSeek Harness 重新封装为本插件的 ur_* 工具与 stdio worker 协议。URBasic 为 MIT(© Tony Ke & Anthony Zhuang / Universal Robots,2009-2025)。

注意事项 / 限制

- 连接持久性:worker 进程在插件生命周期内常驻,机器人连接按 IP 保留;worker 崩溃或 DSH 重启后需重新 connect。
- 远程控制模式:部分 UR 机器人需处于「远程控制」才能执行运动/程序指令;ur_connect 会提示该状态。
- 工具端数字 I/O:ur_get_digital_in / ur_set_digital_out 的 which="tool" 用于工具端(法兰侧)数字 I/O。工具端数字信号不经 RTDE:读取工具输入会经 SendProgram 发送一段短的 URScript 程序,可能打断正在运行的程序;写入工具输出则发送 URScript write_tool_digital_out 命令。工具端数字输出的读回不支持(无可靠的 read_tool_digital_out 表达式)。
- 关节电流:当前 RTDE 配方未直接暴露单关节电流,故未提供 ur_get_joint_current(参考实现中的该工具存在取值错误,本实现未沿用)。
- 线程/取消:运动指令为阻塞到位的轮询,commandTimeoutMs 内完成;对长时间轨迹,请在描述中提醒模型设置合理超时或分步执行。
- 非安全边界:此插件与 bash 工具同级,可驱动物理设备,务必在真实机器人上充分测试后再用于生产。

License

本项目采用区分用户的双重许可 (User-Segmented Dual Licensing) 模式:

- AGPLv3:适用于个人用户及10人及以下企业/组织(开源;详见 )。
- 商业许可证(必须):适用于超过10人的组织,或任何需要规避 AGPLv3 源代码公开义务(如 SaaS / 闭源分发)的用户。

完整条款见 LICENSE。商业授权请联系 service@nonead.com。

python/URBasic(vendored)仍沿用其自身 MIT 许可(© Universal Robots,2009-2025)。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群