2. UR机器人基础操作与编程环境

UR机器人的所有现场操作,几乎都围绕两个东西展开:示教器(Teach Pendant)和它背后的控制器软件 Polyscope。理解这两者的分工,是后续做视觉引导抓取的前提。示教器是人与机器人交互的窗口,Polyscope 是运行在控制器上的图形化编程环境,而 URScript 则是 Polyscope 底层真正驱动关节运动的脚本语言。三者关系可以概括为:Polyscope 负责“编排”,URScript 负责“执行”,示教器负责“操作与观察”。

一、示教器界面与 Polyscope 的对应关系

UR 示教器本质上是一台运行 Polyscope 的触摸平板,通过它与控制器通信。开机后进入的界面通常包含几个固定区域:顶部状态栏显示机器人模式(手动/自动)、程序运行状态、速度倍率;左侧或底部是程序树(Program Tree),用于搭建程序结构;右侧是命令选项卡,包括“基本”“运动”“I/O”“高级”等分类;还有一组物理按键,如急停、使能开关(背面)、自由驱动(Freedrive)按钮。

需要特别注意的是三种运行模式:手动模式(Manual)下必须按住示教器背面的使能开关才能上电运动;自动模式(Automatic)用于程序连续运行;本地控制则决定由示教器还是外部 I/O 触发程序。做视觉抓取时,通常先在手动模式下示教点位、验证 TCP,再切到自动模式配合视觉触发。

二、URScript 与 Polyscope 编程

Polyscope 的图形化编程适合搭建流程,但视觉引导抓取往往需要动态计算目标位姿,这时就要用 URScript。URScript 是一种类 Python 的脚本语言,可以直接在 Polyscope 的“高级”→“脚本”节点中插入,也可以通过 TCP 端口 30001/30002/30003 由外部视觉程序发送。

几个最常用的运动指令必须记牢:

movej(q, a=1.4, v=1.05, t=0, r=0)      # 关节空间运动,适合大范围快速移动
movel(pose, a=1.2, v=0.25, t=0, r=0)   # 直线运动,适合接近/离开抓取点
movep(pose, a=1.2, v=0.25, r=0)        # 过程运动,保持 TCP 匀速,适合涂胶/抓取

其中 pose 是笛卡尔位姿 p[x, y, z, rx, ry, rz],位置单位为米,姿态为旋转矢量(轴角)表示,单位为弧度。视觉系统给出的目标通常就是这个格式。例如视觉识别到工件中心在基坐标系下为 p[0.35, -0.12, 0.08, 3.14, 0, 0],就可以先 movel 到其上方 0.1 m 的接近点,再直线下降到抓取点。

UR 的姿态用旋转矢量表示,不是欧拉角。若视觉输出的是旋转矩阵或四元数,需要先转换,否则姿态会出错。

三、I/O 控制

UR 控制器提供数字输入/输出、模拟输入/输出以及工具端 I/O。抓取系统里,夹爪开合、真空吸盘通断、视觉触发信号都靠 I/O 完成。在 Polyscope 中可以直接拖入“设置数字输出”节点,在 URScript 中则用:

set_digital_out(0, True)     # 打开夹爪/吸盘
set_digital_out(0, False)    # 关闭
wait_digital_input(1, True)  # 等待传感器到位信号

工具端 I/O 编号通常从 0 开始,控制柜 I/O 则另有一套编号,接线和编程时要区分清楚。视觉触发常用一个数字输出脉冲通知相机拍照,再用一个数字输入等待“识别完成”。

四、安全配置与仿真环境搭建

安全配置不是可选项。UR 的安全设置包括安全平面、关节限位、TCP 速度与力限制、工具与负载。在 Polyscope 的“安装”→“安全”中设置。做视觉抓取时,至少应设置一个安全平面限制机器人不撞向料框或相机支架,并正确填写工具重心和负载,否则碰撞检测会误触发或失效。

仿真环境方面,UR 官方提供 URSim,可在虚拟机或 Docker 中运行,界面与真实示教器一致。搭建步骤大致为:安装 URSim → 选择对应型号(如 UR5e)→ 启动 Polyscope → 在“安装”中配置 TCP、负载、安全 → 编写并运行程序。URSim 支持通过 30001/30002 端口接收 URScript,因此可以在没有真机的情况下调试视觉通信逻辑。仿真中验证通过后,再把程序迁移到真机,能显著降低调试风险。

UR 视觉抓取系统:编程环境与信号链 示教器 / Polyscope 程序树 · 命令选项卡 手动 / 自动模式 使能开关 · 急停 Freedrive 自由驱动 URScript 脚本 movej / movel / movep set_digital_out() wait_digital_input() 端口 30001/30002/30003 UR 控制器 安全平面 · 关节限位 TCP 速度 / 力限制 工具重心 · 负载 数字 / 模拟 I/O 视觉系统 相机拍照 · 识别工件 输出目标位姿 p[x,y,z,rx,ry,rz] 抓取执行 接近点 → 抓取点 夹爪 / 吸盘动作 放置点 → 复位 URSim 仿真 虚拟示教器 端口通信调试 验证后再上真机 典型信号链 视觉触发 DO → 相机拍照 → 识别完成 DI → URScript 计算位姿 → movel 抓取 → 夹爪 DO → 放置

五、从仿真到真机的迁移要点

在 URSim 中调试好的程序,迁移到真机时最容易出问题的地方有三处:一是TCP 标定,仿真里可以随便设,真机上必须用四点法或六点法实测;二是负载与重心,夹爪和工件的实际重量、重心位置要填对,否则 movel 会出现抖动或保护性停止;三是I/O 编号,仿真与真机的工具端/控制柜 I/O 映射可能不同,接线前务必核对。

建议的迁移顺序是:先在 URSim 中跑通逻辑 → 真机手动模式下逐点示教并核对 TCP → 低速(如 10% 速度倍率)试运行 → 确认安全平面和碰撞检测有效 → 逐步提速到正常节拍。视觉引导抓取对位姿精度敏感,接近点与抓取点之间建议保留 0.05~0.1 m 的直线过渡,避免姿态突变导致抓取偏移。

安全配置修改后必须重新验证。安全平面、关节限位一旦放宽,碰撞检测的保护范围会同步变化,切勿在未确认的情况下直接切自动模式运行。

掌握示教器操作、Polyscope 编程、URScript 运动指令、I/O 控制与安全配置这五块内容后,就具备了把视觉系统给出的目标位姿转化为机器人实际抓取动作的完整能力。下一阶段的工作,是把视觉坐标系与机器人基坐标系对齐,也就是手眼标定。