机器人离线编程

我们都知道在学会开车以后,不论驾驶哪个品牌的汽车都是差不多的操作——因为汽车的驱动原理都是一样的。电脑也是这样,如果你使用Windows电脑,用户操作界面不会因为你选择了不同牌子的电脑硬件而改变。但是,在工业机器人的使用上,情况完全不是这样。

工业机器人的使用编程)方法,绝对取决于它的硬件品牌。你可能想象着,机器人上运行的程序是用类似于C++或Visual Basic语言写成的,然而事实上,很多机器人使用的是类似于汇编语言那样的基础语言。

因为工业机器人的复杂性,机器人集成商(帮助用户装配机器人的服务企业)与大多数机器人生产商一样,会尽量使用同一个品牌的机器人硬件。不幸的是,没有哪个机器人品牌可以提供完整的产品系列以满足所有用户需求,产品本身也在不断进化。例如,史陶比尔(Stäubli)机器人,是为数不多的提供在湿润环境里作业的机器人生产商之一,而发那科(Fanuc)是唯一一个提供中等载荷的协作型机器人厂家。另外,有些企业的任务内容由投标决定,这会导致他们购买不同品牌的工业机器人。

RoboDK仿真

机器人编程语言发展缓慢,是因为工业机器人非常可靠与耐用。因此,机器人生产商必须提供产品的“向下兼容”(即新产品需要能与旧产品兼容使用)。为工业机器人更换零部件以及提供新的附加功能,几乎与销售新机器人一样利润可观。所以,机器人生产商可能一直不会改变其编程语言的基本原理。比如,ABB机器人在用户操作层面仍然(不得不)使用“四元法”表达旋转方向,虽然四元法的直观程度跟二进制代码一样。其余大多数机器人生产商使用更直观的“欧拉角”来表达旋转方向,所以ABB在控制器中增加了“四元法”与“欧拉角”之间转化的功能。大多数机器人编程语言出现在十到二十年之前,而今,当代工程师们更加习惯使用现代编程语言例如Java,C#跟Python。

发那科(Fanuc),全球四家领先的工业机器人生产商之一,提供两种不同的编程语言:TP(即:示教器)语言与KAREL语言。TP程序是二进制代码文件,只能通过示教器按钮(或触屏)修改,TP程序也可以从LS程序(人类可读的ASCII码程序)编译或反编译过来。TP程序可提供有限的汇编程序语言功能。此外,发那科允许用户使用PC电脑跟KAREL语言(类似Pascal语言)编写你自己的算法,但是KAREL程序内不允许添加机器人运动指令,也不能通过示教器编辑程序。

你可以购买发那科提供的ROBOGUIDE离线编程与仿真软件,但是如果你没有购买ROBOGUIDE的WinOLPC,或者你的发那科机器人控制器上没有安装“ASCII上传”功能(付费软件升级选项),那么你就无法使用LS程序。同时你也需要购买额外的选项来生成或编辑KAREL程序。

安川首钢(Motoman)机器人是通过INFORM语言来编程的(JBI文件),跟发那科的TP格式有些类似。INFORM的程序变量通过寄存器被所有程序共用。首钢机器人有比较完善的MotoCom函数库,用户可以通过C++,C#或Visual Basic(Windows)来实现机器人编程。

给ABB机器人编程比较简单,它们使用RAPID编程语言,与Visual Basic有些类似。ABB免费提供一款RobotStudio软件,通过它即可对机器人进行在线编程,编辑RAPID程序,并且通过网络连接与PC电脑之间传输程序文件。另外,你也可以购买软件的3D仿真器与离线编程功能。

库卡(KUKA)机器人使用的是KRL(KUKA Robot Language)语言编写的SRC程序,该程序可以通过免费的OrangeEdit编辑器、或者付费的库卡仿真器Sim Pro编译。值得一提的是,库卡KRC4控制器是一台基于Windows的电脑,示教器相当于电脑的远程桌面——但是用示教器修改程序却不太灵便,触屏的反应速度远达不到平板电脑水平。另外,库卡的协作型机器人LBR iiwa使用的是由Java编程的Sunrise控制器,它操作起来就比较直观跟快速。

关于不同的机器人编程语言我们就先说到这里,因为来自全球有至少几十个不同的机器人生产商。有些品牌不提供离线编程软件,例如优傲(Universal Robots)机器人,用户需要通过机器人的示教器界面(优傲的设计非常直观,但是功能也比较有限),或使用ASCII编辑器用UR脚本语言(基于Python)编程。其他机器人生产商致力于开发计算机辅助设计(CAD)软件插件,比如日立(Mitsubishi)机器人的MelfaWorks软件插件可直接连接SolidWorks。

工业机器人发展至今,没有一种统一的机器人编程方式让人感到失望。数控机床使用的G代码程序在50年代被引入,它出现在数控技术产生后不久,现今大部分数控机床(CNC)都使用G代码编程。但是对于工业机器人来说却没有这样一款通用的编程语言。

当今市场上有支持多品牌机器人的离线编程工具,每款软件也各有自己的优缺点。但是,这些工具也都较为昂贵。免费的工具有例如Gazebo(需要跟ROS一起使用),但是用户需要具备专家级的编程能力。而且该软件是针对广义的机器人,对于工业机器人的仿真与离线编程需要不太贴合。

这就是我们开发出RoboDK软件的原因:它是一款价格合理的工业机器人仿真工具,为用户提供直观的编程方式。仿真器支持多种应用,例如取放,喷涂,机器人加工等等。软件内的优化工具可自动转化计算机辅助加工(CAM)程序,生成机器人程序。RoboDK是从加拿大最大的机器人研究中心之一的CoRo实验室拆分出来的独立公司,在各主要品牌的机器人上都完成了测试。

RoboDK的机器人模型库包括300多款来自30多个品牌的工业机器人,我们也有意向为新的机器人品牌提供支持。任何机器人品牌的生产商都可以在我们的模型库中添加他们的机器人,为机器人的离线或在线编程提供接口。离线编程通过针对每个品牌的“后置处理器”完成,而在线编程需要通过一个连接机器人硬件与机器人仿真器的驱动器实现。在线编程可实现分步骤运行机器人程序、读取机器人位置或发送移动机器人指令。下面的视频演示了优傲UR10机器人的在线编程。

RoboDK的独特之处在于,你可以通过Python与RoboDK的应用程序接口(API)给任何机器人编程。Python提供强大的函数工具库,例如,转化SVG图像成为机器人的XY坐标。以下几行程序就是结合RoboDK的API与Python的面向对象编程的范例:

# 目标对象是一个机器人
# 目标点通过一个4x4的矩阵表示,定义方位(位置和方向)
robot.MoveJ(target*transl(0,0,-100))    # 通过关节移动,将机器人移动至“接近目标点”
robot.MoveL(target)                     # 通过线性移动,将机器人移动至目标点
CloseGripper()                          # 用户自定义动作,比如抓取零件
robot.MoveL(target*transl(0,0,-100))    # 移动机器人回到“接近目标点”

以上小段程序将机器人安全移动到目标点(前后都经过“接近目标点”确保机器人以恰当的角度接近目标)。我们的软件中包括更多的例子,有的需要Python编程,有的则不需要。

机器人工作空间我们相信,将有一天机器人工程师可以使用一个国际通用的语言例如Python来给任何品牌的机器人编程。编程人员跟机器人用户将欢迎这个选项,因为这意味着他们不再需要依赖同一品牌的工具。我们向Mecademic(也是CoRo实验室的拆分公司)致意,他们制作出了第一款可以通过任何现代编程语言编程的工业机器人,当然这款机器人也需要使用到一些独有的指令。

自2015年产品进入市场之后,RoboDK已被安装在超过3万台电脑上。RoboDK吸引了很多高校使用它作为学习工业机器人的工具(例如,你可以用它查看DH坐标系),也引起了新兴机器人生产商的注意。我们欢迎机器人集成商通过RoboDK的应程序接口(API)开发出新的功能,这样做的优势是在一个机器人品牌上开发的功能可以转嫁到其他品牌上。

RoboDK可以免费下载与试用,它的教育功能将永远免费。我们相信RoboDK是目前市场上价格最合理的工业机器人离线编程工具。

Leave a Reply

Your email address will not be published. Required fields are marked *