右键单击“程序program”或者从“工具栏菜单Program menu”中添加新指令,如上一节所示。
提示:你只能在所选指令后添加新指令。
提示:你可以在程序内或不同程序之间拖拽指令,对其重新排序。
本节将介绍如何在RoboDK图形操作界面上运用机器人离线编程。
选择“程序Program➔关节运动指令Move Joint Instruction”即可添加关节运动指令。你也可以在工具栏中选择相应按钮。
如果在添加指令时没有选中一个机器人目标,运动指令将会创建一个新目标点并关联运动与该目标。如果该目标点被移动了,运动指令也随之改变。
当程序添加第一条指令后,在该指令运行前将会添加两条指令:“参考坐标系选项Reference Frame selection”和“工具坐标系选项Tool Frame selection”。这会保证当程序运行到该运动指令时,机器人会使用相同的参考坐标系和工具坐标系来创建新目标。
注意:右键单击运动指令,然后选择“目标选项Target options… (F3)”就可以打开目标选项菜单。你可以在这个窗口直接更改数据,或者直接在3D视图中修改目标信息。
选择“程序Program➔直线运动指令 Move Linear Instruction”即可添加一个直线运动指令。你也可以在工具栏中选择相应按钮。
如果你没有在添加指令之前选择一个目标,运动指令将会创建一个新目标并使其连接。如果该目标被移动了,运动指令也随之改变。
关节运动和直线运动的移动方式一样,你可以轻松地从一种类型切换到另一种类型。
直线运动指令与关节运动指令操作相同的是,当程序添加第一条指令后,在该指令运行前程序将会添加两条指令:“参考坐标系选项Reference Frame selection”和“工具坐标系选项Tool Frame selection”
重要提示:我们建议使用关节目标与关节运动设置每个程序的第一条运动指令。这样能从第一条指令开始确保机器人使用正确的位姿,并保证真实机器人的移动方式与仿真相同。
不同与关节运动的是,机器人对直线运动的奇点和轴限制非常敏感。例如,六轴机器人在直线运动后不能越过奇点。下图的示例表示“关节5太靠近奇点(0度)。 [...]正考虑关节运动来替代Joint 5 is too close to a singularity (0 degrees). […] Consider a Joint move instead”。如下图所示:
如果不是非常必要的直线移动,你可以右键单击移动指令将其改为关节指令。
或者通过修改目标、TCP或参考坐标系的位置来避免奇点。
选择“程序Program➔ 设置参考坐标系指令Set Reference Frame Instruction”即可设置参考坐标系。这个指令会为接下来的运动指令更新控制器上的当前参考坐标系,并在RoboDK仿真中改变参考坐标系。对于特定目标(笛卡尔目标),运动指令会随着最新的参考坐标系变化。
参考坐标系的变量名有Work Object (ABB机器人),UFRAME(Fanuc机器人),FRAME(针对Motoman机器人)或者$BASE(针对KUKA机器人)。
注意:一些控制器(比如Fanuc和Motoman控制器)支持用编号设置参考坐标系。这表示参考坐标系的名字可以用数字结尾(例如Frame 4代表第4个参考坐标系)。
选择“程序Program➔ 设置工具坐标指令Set Tool Frame Instruction”即可设置工具坐标系(TCP)。
这个指令会为接下来的运动指令更新当前工具坐标系,并在RoboDK仿真中改变工具坐标系。这意味着对于特定机器人目标(笛卡尔目标)的运动指令,会随着最新的工具坐标系变化。
参考坐标系的变量名有ToolData (ABB机器人),UTOOL(Fanuc机器人), TOOL(针对Motoman机器人)或者$TOOL(针对KUKA机器人)。
注意:一些控制器(比如Fanuc和Motoman控制器)支持用编号设置工具坐标系。这表示工具坐标系的名字可以用数字结尾(例如Tool 4 代表第4个工具)。
选择“程序Program➔ 圆弧运动指令Move Circular Instruction”即可添加圆弧运动指令。你也可以在工具栏中选择相应按钮。
除非你在添加这个指令前已经有了两个目标点,则该运动指令将不会创建新的目标点。你可以在圆弧运动中添加两个或者更多的目标点,并将它们连接,如下图所示。
圆弧运动会在机器人所在点开始创建的一条曲线,紧接着运动会穿过第一个循环点(Target Linked 1),最后在目标连接点2处(Target Linked 2)结束循环。
重要提示:只通过一个圆弧指令就完成一整条曲线是不太可能的。因为一条完整的曲线必然会分割成两个曲线运动。
选择“程序Program➔ 设置速度指令Set Speed Instruction”即可添加速度和加速度指令,这个指令可以改变速度和加速度。你也可以在笛卡尔空间和关节空间处设定速度和加速度。
在程序中相应的位置设置速度或者加速度。当执行该指令时,机器人会应用设定好的速度。
你也可以在机器人参数菜单里更改机器人运动速度:双击你的机器人,然后选择参数。
注意:并不是所有机器人控制器都支持设置准确的加速度。
重要提示:设置合适的速度会对精准计算程序执行时间影响很大。更多信息请参考cycle time section。
选择“程序Program➔ 显示信息指令Show Message Instruction”,这个指令可以帮助你在示教器上显示提醒信息。
注意:并不是所有机器人控制器都支持在示教器上显示信息。所以对于那些不支持的设备,这条屏幕显示信息指令将不会起作用。
选择“程序Program➔ 暂停指令Pause Instruction”,这个指令将会在指定时间内暂停程序,或者停止程序直到操作器想要恢复它。
注意:将暂停延迟值设置为-1即可暂停,直到操作员希望恢复程序。这时该指令将自动命名为Stop。
重要提示:在仿真时,一次5秒的暂停会花1秒的时间去仿真。更多相关信息请访问Simulation section。
选择“程序Program➔ 添加函数调用/插入代码指令Program Call Instruction”即可在当前程序下的子程序里添加一个程序调用指令。
默认情况下,这是一个阻塞(blocking)调用。然而,你也可以使用“插入代码Insert Code”,在指令的位置插入代码。这对一些个别应用软件和控制器帮助很大。
提示:选择“选择程序Select program”即可自动填充该文字框。另外,文本匹配同样可以做到自动填充该文字框。当你在指令下的子程序里匹配到一个名字,这个子程序将会在RoboDK中仿真。
提示:可以输入多行指令自动连续调用多个子程序。
当你从“程序调用Program Call”切换到“开始线程Start Thread”,这时子程序将会唤起一个非块调用,机器人控制器也会开始一个新的线程。然而这个选项只适用于一些指定的控制器和操作内容。
提示:如果你的主程序是以仿真为目的,你或许可以尝试切换到“开始线程Start Thread”选项,这样你就可以在同一时间执行多个仿真程序(例如当两个及以上机器人在执行仿真时)
选择“程序Program➔ 添加信号输出/等待信号指令Set or Wait I/O Instruction”即可修改数字输出(Digital Outputs)的状态。这个指令的默认值为“设置数字输出(Set Digital Output)”。然而这个指令允许等待特定的“数字输入(Digital Input)”来转换到特定的状态。
如果你想把“IO 名字(IO Name)”作为命名变量,我们建议你对IO的名字进行编码或者用字符替代。“IO值(IO Value)”可以用数字(0代表错误1代表正确)或者字符来表示状态。
注意:这个指令同样也支持在一些机器人控制器上设置“模拟输出(Analog Outputs)”或者等待“模拟输入(Analog Inputs)”。这时你可以用十进制数字或者特殊字符命名而不仅仅只用数字。
当选择“等待数字输入(Wait for Digital Input)”,程序便会在输入数值变化到指定数值时停止。还有,如果等待时间超过了指定数值,这时大多数控制器会报错,原因是超时延迟。这时你可以去激活“超时Timeout(ms)”功能。
提示:这里有个很好的例子,如果机器人的元件上有一些特别硬件(例如工具gripper或者铣削主轴),你可以用“数字输出(Digital Output)”激活这些硬件,然后等待“数字输入(Digital Input)”来转换状态。
更改仿真“数字输入(Digital Inputs)”和“数字输出(Digital Outputs)”将会创建一个新的站变量。如果想要查看这些变量的状态,你可以右键单击这个站即可查看“站参数(Station Parameters)”。你也可以通过API读写这些变量。
选择“程序Program➔ 设置轨迹精度Set Rounding Instruction”即可修改轨迹精准度。这个轨迹精度可以用来顺滑两个连续运动的间隙。当程序执行这个指令时,轨迹精度便开始做影响(这个过程和其他指令相似),所以在程序开始前设置轨迹精度是非常必要的。
如果没有轨迹精度指令,当每次机器人运动最后,机器人速度将会降到0(除非下一个动作与前一个动作相切)。这将引起高加速度和快速变速,以确保每个运动的最佳精度。
该值也被称为Blending radius(Universal 机器人),ZoneData(ABB机器人),CNT / FINE(Fanuc机器人),Cornering(Mecademic机器人)或者$ APO.CDIS / $ APO.CPTP / Advance(KUKA机器人)。
注意:设置“轨迹精度Rounding value”为-1即可唤起运动。这样的话机器人就不会绕着路径边缘做运动。
提示:较高的轨迹精度确保机器人在通过作业路径时保持较为连贯的速度,但这是以失去精准度为代价的。根据不同的应用,通常是可以在准确度和平稳速度之间找到一个好的折衷方案。
RoboDK 路径测量系统里的“路径精准度path accuracy”测试或许会让你对不同轨迹精度的作用有一个更好的理解。
选择“程序Program➔ 仿真事件指令Simulation Event Instruction”即可唤醒一个仿真事件。仿真事件的作用不在于生成代码,而是为了唤起一些以仿真为目的的事件。
在图形操作界面进行仿真事件可以实现:
● 机器人抓取或放置工件
● 展示或者隐藏对象或者工具
● 改变对象的位置和参考坐标系
举例来说,如果我们想要机器人运动到指定位置抓取工件,此时可以创建“抓取工件Attach object”事件,此时机器人便会和该工件一起移动。机器人抓取工件且已经准备好离开时,我们可以创建“放置工件Detach object”事件,此时机器人将会放置已经抓住的工件。
注意:一些特殊事件也可以通过宏(需要编程经验)进行仿真。例如,通过使用API接口,机器人就会在特定位置随机出现的运动工件进行取和放的仿真。
注意:当将物体附加到工具时,工具会选中最近的物体(只要物体对于工具不超过一个预设距离)。默认距离是200mm并可以在此更改:“工具Tools ➔选项Options ➔对象连接至机器人工具的最大距离Maximum distance to attach an object to a robot tool”。另外,在默认情况下,该距离为TCP点到物体参考坐标系原点的距离。你也可以使用“TCP到物体的最短距离Check shortest distance between TCP and the object shape”。