上一篇讲了优傲UR5e的物理接线和基本操作,这篇切换到软件层面。很多人拿到UR5e之后,对着Polyscope触摸屏发懵,或者想写URScript但找不到入口。这篇把两条路都走一遍:先用Polyscope图形化编程跑通第一个移动+抓取,再用URScript写同一段逻辑看看底层是什么样的。
Polyscope图形编程:零代码5分钟出程序
Polyscope是优傲示教器上的图形化编程界面,核心逻辑就是「建路径点+串动作」。打开示教器,进Program界面,点New创建新程序。在Basic命令区点Waypoint,程序树会自动添加一个MoveJ节点和一个路径点。
接下来教路径点:选中Waypoint_1,按住示教器背面的Freedrive按钮(三键按压),然后用手拖着机械臂到目标位置。到了位置松手,点OK,这个点就记下了。再建Waypoint_2,拖到放物位置。两个点之间插一个IO信号控制夹爪闭合,程序就完成了。点Play,手臂就在两个点之间来回跑。
Polyscope里有四种Move类型要搞清楚。MoveJ是关节空间最优路径,两点之间走曲线但最快,适合非关键路径的空间移动。MoveL是直线插补,TCP走直线,适合焊接、涂胶这类需要精确路径的工序。MoveP是匀速直线加圆弧过渡,适合速度敏感的工艺。MoveCircle是圆弧运动,只能从MoveP里添加。做抓取程序,用MoveJ到位+MoveL最后逼近就行,这是最常用的组合。
URScript:想深入控制就得看这个
Polyscope够用但不够灵活。想做复杂逻辑(条件判断、循环、外部通信),得用URScript。URScript是优傲的脚本语言,语法类似Python,通过TCP端口30002发送给控制器执行。
核心运动指令就四个:movej关节运动、movel直线运动、movep匀速运动、movec圆弧运动。用法很直观,比如movel(p[0.3, 0.0, 0.5, 0.0, 3.14, 0.0], a=1.2, v=0.25)表示TCP直线移动到坐标(0.3, 0.0, 0.5)米,加速度1.2m/s²,速度0.25m/s。movej([-1.95, -1.58, 1.16, -1.15, -1.55, 1.18], a=1.0, v=0.1)表示六个关节分别运动到指定弧度值。
URScript的通信方式有两种:一是通过示教器的Script节点直接嵌入脚本代码(最常用),二是从外部PC通过socket端口30002发送脚本(适合Python/MATLAB上位机控制)。第一种方式门槛最低,在Polyscope程序树里加一个Script节点,直接写代码就行。
第一个完整抓取程序的逻辑
用URScript写一个完整的抓取程序,逻辑大概是这样:先定义两个pose变量(取物位和放物位),然后movej到取物位上方,movel下降到位,set_digital_out关闭夹爪(抓取),movel抬升,movej到放物位上方,movel下降,set_digital_out打开夹爪(释放),movel抬升回初始位。
几个关键的坑要注意。第一,URScript里坐标单位是米不是毫米,p[0.5, 0.3, 0.2]代表50cm、30cm、20cm,写错了直接撞。第二,movej用关节角度(弧度),movel用笛卡尔坐标(pose),别混了。第三,URScript程序必须以def关键字开头、end关键字结尾,缩进至少一个空格,这是语法硬要求,格式不对控制器直接拒绝。
调试阶段最容易遇到的问题
奇异位是第一个坑。当机械臂的某个关节完全伸直(比如肘关节180度)时,会出现奇异位,这时逆运动学无解,手臂会卡住或报错。解决方法是在路径点里避免关节完全伸直,保持微小的弯曲角度。
第二个坑是TCP标定。如果你的末端工具(夹爪、吸盘等)不在法兰中心,必须先做TCP标定,不然movel的坐标和实际位置对不上。在Polyscope的Installation里设置TCP,用四点法或六点法标定,5分钟搞定。
第三个坑是速度和加速度设置。URScript默认的movej速度是1.05rad/s,加速度是1.4rad/s²,对新手来说已经很快了。建议第一次跑程序时把速度和加速度都降到20%以下(v=0.2, a=0.3),确认路径没问题再逐步提高。
总结
优傲的编程体系分两层:Polyscope做快速示教和简单任务,URScript做复杂逻辑和外部集成。新手从Polyscope入手,5分钟能出第一个程序;想深入就得学URScript,掌握movej/movel/坐标系统这三件套就够应付80%的场景了。这两条路不冲突,实际项目里通常混着用,Polyscope搭框架、URScript填细节。
URScript语法确实像Python,def/end/缩进这套很熟悉。不过有个区别:URScript不支持类(class),做复杂项目的话模块化会比较痛苦。
URScript的坐标单位是米这个坑我当年栽过,第一次写的时候直接用了500mm写成p[500,0,0],好在仿真模式先跑了一下发现直接飞出去了。
Polyscope的Freedrive拖拽示教是真的方便,比传统工业机器人用示教器一个个按键调坐标效率高太多了。协作机器人的编程体验确实不一样。
movej和movel的区别讲得很清楚。补充一点:movel走直线的时候各关节是联动的,速度越慢越精确但越耗时,高速场景建议用movej+blending。
奇异位这个坑必须强调,我第一次跑程序的时候肘关节打直直接报了奇异位错误,手臂卡在中间动不了,按了紧急停止才恢复。