4. UR机器人编程环境入门
UR机器人的编程入口是示教器上的 Polyscope 图形化界面。与传统的文本代码编程不同,Polyscope 采用“程序树”的方式组织指令:一条程序由若干节点自上而下顺序执行,节点可以是运动指令、I/O 操作、条件判断、循环、赋值或子程序调用。理解这套界面与程序结构,是后续搭建柔性装配单元程序的基础。
一、Polyscope 界面与基本操作
Polyscope 界面主要分为几个区域:顶部状态栏显示机器人模式(手动/自动)、程序运行状态、速度倍率与用户权限;左侧为程序树编辑区,是编写程序的主战场;右侧为指令面板,包含“基本”、“运动”、“I/O”、“高级”等标签页;底部为控制栏,提供播放、暂停、单步、停止等运行控制按钮。
实际操作中,常用操作包括:点击“程序”进入程序编辑;点击“安装”配置 TCP、负载、I/O 与安全;点击“运行”执行程序;点击“日志”查看历史信息。手动模式下,需按住示教器背面的“自由驱动”按钮或使用“移动”标签页配合坐标轴按钮点动机器人。速度倍率滑块在手动模式下通常限制在较低范围,调试时应从小倍率开始。
二、程序结构与变量、表达式
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,表示在距离目标点多少毫米处开始向下一条指令过渡,半径越大过渡越平滑,但路径偏离也越大。
以装配单元中的“取料—插入”动作为例,典型参数设置如下:
| 指令 | 目标 | 速度 | 加速度 | 混合半径 |
|---|---|---|---|---|
| MoveJ | Home 点 | 60 °/s | 120 °/s² | — |
| MoveL | 取料上方 50 mm | 150 mm/s | 300 mm/s² | 0 mm |
| MoveL | 取料点 | 50 mm/s | 100 mm/s² | 0 mm |
| MoveL | 插入点 | 20 mm/s | 50 mm/s² | 0 mm |
上述参数为教学示例,实际值需根据工件重量、TCP 偏移和节拍要求调整。插入段速度较低,是为了避免冲击和保证对位精度;取料上方设置中间点,是为了让机器人先以较高速度接近,再以低速完成精确动作。
四、从界面到程序:一个可复现的入门练习
建议按以下顺序完成一次完整练习,以建立对 Polyscope 的直观认识:
- 在“安装”中设置 TCP 为工具中心点,负载设为 0.5 kg,确认安全配置。
- 手动模式下,将机器人移动到 Home 点,记录位姿并命名为
home。 - 新建程序,依次添加 MoveJ 到
home、MoveL 到取料上方、MoveL 到取料点。 - 在取料点后插入“赋值”指令,创建变量
count并赋初值 0,再添加count = count + 1。 - 添加“如果”指令,条件为
count ≥ 3,满足时执行“停止”。 - 将速度倍率调至 10%,单步运行,观察每个节点的实际路径与参数效果。
运行过程中,重点观察 MoveL 是否沿直线到达目标、混合半径是否导致路径提前转弯、赋值与条件判断是否按预期改变程序流向。若发现路径偏离,优先检查 TCP 设置与目标点位姿;若程序提前停止,检查 count 的初值和判断条件。