4. UR机器人编程环境入门

UR机器人的编程入口是示教器上的 Polyscope 图形化界面。与传统的文本代码编程不同,Polyscope 采用“程序树”的方式组织指令:一条程序由若干节点自上而下顺序执行,节点可以是运动指令、I/O 操作、条件判断、循环、赋值或子程序调用。理解这套界面与程序结构,是后续搭建柔性装配单元程序的基础。

一、Polyscope 界面与基本操作

Polyscope 界面主要分为几个区域:顶部状态栏显示机器人模式(手动/自动)、程序运行状态、速度倍率与用户权限;左侧为程序树编辑区,是编写程序的主战场;右侧为指令面板,包含“基本”、“运动”、“I/O”、“高级”等标签页;底部为控制栏,提供播放、暂停、单步、停止等运行控制按钮。

实际操作中,常用操作包括:点击“程序”进入程序编辑;点击“安装”配置 TCP、负载、I/O 与安全;点击“运行”执行程序;点击“日志”查看历史信息。手动模式下,需按住示教器背面的“自由驱动”按钮或使用“移动”标签页配合坐标轴按钮点动机器人。速度倍率滑块在手动模式下通常限制在较低范围,调试时应从小倍率开始。

建议在首次编程前,先在“安装”中确认 TCP 已正确设置。若 TCP 偏移错误,所有运动指令的终点都会产生系统性偏差,后续装配精度无从谈起。

二、程序结构与变量、表达式

Polyscope 程序的基本结构是“主程序 + 子程序”。主程序通常负责流程调度,子程序封装重复动作,例如“取料”、“拧螺丝”、“放料”。程序树中每个节点可展开参数,节点之间可以拖拽调整顺序。

变量分为两类:一类是 UR 内置的“姿态变量”(Pose),用于存储机器人位姿,包含 x、y、z、rx、ry、rz 六个分量;另一类是“通用变量”,支持整数、浮点数、布尔、字符串等类型。变量可在“程序”标签页中通过“赋值”指令创建和修改。

表达式用于赋值和条件判断。例如,将当前位置赋值给变量:

pose_pick = get_actual_tcp_pose()
count = count + 1
if count >= 3:
    stop

Polyscope 的表达式语法接近 Python,支持加减乘除、比较运算和逻辑运算。需要注意的是,位姿变量不能直接相加,若需偏移,应使用“位姿变换”指令或分别对 x、y、z 分量赋值。

三、运动指令类型与参数设置

UR 提供三种基本运动指令:MoveJ、MoveL、MoveP。MoveJ 为关节空间运动,机器人以最快路径到达目标点,适合大范围转移;MoveL 为直线运动,工具 TCP 沿直线到达目标,适合接近、插入、涂胶等需要路径可控的场合;MoveP 为过程运动,可设置混合半径,使路径在拐角处平滑过渡,适合连续轨迹。

每条运动指令的关键参数包括:目标点(位姿或路点)、速度、加速度、混合半径(blend)。速度与加速度可分别设置,单位分别为 mm/s 和 mm/s²(关节运动为 °/s 和 °/s²)。混合半径用于 MoveL 和 MoveP,表示在距离目标点多少毫米处开始向下一条指令过渡,半径越大过渡越平滑,但路径偏离也越大。

以装配单元中的“取料—插入”动作为例,典型参数设置如下:

指令目标速度加速度混合半径
MoveJHome 点60 °/s120 °/s²—
MoveL取料上方 50 mm150 mm/s300 mm/s²0 mm
MoveL取料点50 mm/s100 mm/s²0 mm
MoveL插入点20 mm/s50 mm/s²0 mm

上述参数为教学示例,实际值需根据工件重量、TCP 偏移和节拍要求调整。插入段速度较低,是为了避免冲击和保证对位精度;取料上方设置中间点,是为了让机器人先以较高速度接近,再以低速完成精确动作。

UR 程序结构与运动指令参数关系示意 Polyscope 程序树 主程序 Main MoveJ → Home MoveL → 取料上方 MoveL → 取料点 赋值 count = count + 1 If count ≥ 3 → 停止 MoveL → 插入点 MoveL → 退出 子程序:拧螺丝 运动指令参数与路径关系 Home 取料上方 取料点 插入点 退出点 MoveJ:关节空间,速度 °/s,加速度 °/s² MoveL:直线路径,速度 mm/s,加速度 mm/s²,blend 混合半径 v=150 mm/s v=50 mm/s v=20 mm/s 变量与表达式 pose_pick = get_actual_tcp_pose() count = count + 1 条件判断 if count ≥ 3: stop

四、从界面到程序:一个可复现的入门练习

建议按以下顺序完成一次完整练习,以建立对 Polyscope 的直观认识:

  1. 在“安装”中设置 TCP 为工具中心点,负载设为 0.5 kg,确认安全配置。
  2. 手动模式下,将机器人移动到 Home 点,记录位姿并命名为 home。
  3. 新建程序,依次添加 MoveJ 到 home、MoveL 到取料上方、MoveL 到取料点。
  4. 在取料点后插入“赋值”指令,创建变量 count 并赋初值 0,再添加 count = count + 1。
  5. 添加“如果”指令,条件为 count ≥ 3,满足时执行“停止”。
  6. 将速度倍率调至 10%,单步运行,观察每个节点的实际路径与参数效果。

运行过程中,重点观察 MoveL 是否沿直线到达目标、混合半径是否导致路径提前转弯、赋值与条件判断是否按预期改变程序流向。若发现路径偏离,优先检查 TCP 设置与目标点位姿;若程序提前停止,检查 count 的初值和判断条件。

Polyscope 中变量作用域为整个程序,子程序与主程序共享变量。若在子程序中修改了同名变量,主程序中的值也会改变。建议对关键变量使用统一命名前缀,避免误改。