Brooks机器人

RoboDK 支持使用 GPL语言的 Brooks PreciseFlex 机器人。用户可以使用Brooks机器人的手臂、夹爪和直线导轨,完成高级实验室的自动化程序。

Brooks夹爪仿真

要控制 Brooks PreciseFlex 的夹爪,或是双夹爪完成仿真,可以跟着以下指南进行操作:

1.右键单击程序。点击:添加指令,再选择:程序调用指令。

2.添加程序调用指令的时候需要先命名,命名方法:Gripper(夹爪ID,夹爪值)。那么就是:Gripper(2, 50) ,意思是将双夹爪中的 2 号夹爪移动到 50 毫米处。

a.你也可以简化掉夹爪ID,命名为:Gripper(夹爪值)

b.如果存在多个机器人,也可以使用这样命名:Gripper(夹爪 ID, 夹爪值, item.ptr)。例如命名为:Gripper(2, 50, item.ptr) ,将把双夹爪中的 2 号夹爪移动到 50 毫米处,确保父机器人与程序相连。

3.在所有子程序的起始处以及所有子程序调用之后添加Gripper()指令。这是为了确保与后处理器的兼容性。预计会出现重复的Gripper()指令。

4.添加Python 脚本,命名为:Gripper。

5.编辑Python 脚本:Gripper,并粘贴以下内容:

from robodk import robolink

import sys

 

if len(sys.argv) < 2:

    quit()

 

def get_item(ptr_item, RDK):

    item = robolink.Item(RDK, str(ptr_item), robolink.ITEM_TYPE_PROGRAM)

    if not item.Valid(True):

        return None

    return item

 

RDK = robolink.Robolink()

gripper_id = -1

gripper_value = 0

prog_item = None

 

# Get the gripper ID, value, possibly the caller

if len(sys.argv) == 2:

    gripper_value = float(sys.argv[1])

elif len(sys.argv) >= 4:

    gripper_id = int(sys.argv[1])

    gripper_value = float(sys.argv[2])

    prog_item = get_item(int(sys.argv[3]), RDK)

elif len(sys.argv) == 3:

    prog_item = get_item(int(sys.argv[2]), RDK)

    if prog_item:

        gripper_value = float(sys.argv[1])

    else:

        gripper_id = int(sys.argv[1])

        gripper_value = float(sys.argv[2])

 

# Get candidates

grippers = [x for x in RDK.ItemList(robolink.ITEM_TYPE_ROBOT_AXES) if 'intelliguide' in x.Name().lower() and len(x.Joints().tolist()) == 1]

if len(grippers) > 1 and prog_item:

    robot_item = prog_item.getLink(robolink.ITEM_TYPE_ROBOT)

    if not robot_item.Valid():

        robot_item = RDK.ItemUserPick("Select the linked robot", robolink.ITEM_TYPE_ROBOT)

        prog_item.setRobot(robot_item)

 

    def get_flat_childs(item):

        childs = item.Childs()

        for child in item.Childs():

            childs.extend(get_flat_childs(child))

        return childs

 

    childs = get_flat_childs(robot_item)

    grippers = [x for x in childs if x.Type() == robolink.ITEM_TYPE_ROBOT and len(x.Joints().tolist()) == 1]

 

if not grippers:

    RDK.ShowMessage('Unable to find a gripper!', False)

 

# Try to find the right gripper id (i.e. Dual Gripper 1)

gripper = grippers[0]

if gripper_id > 0:

    gripper_ids = [g for g in grippers if g.Name().endswith(str(gripper_id))]

    if gripper_ids:

        gripper = gripper_ids[0]

 

gripper.MoveJ([gripper_value])

这种方法也兼容Brooks后处理器。

直线导轨

由于PreciseFlex机器人的基座框架并非安装在机器人物理基座处,因此需要在PreciseFlex机器人与PreciseFlex直线导轨之间设置特定偏移量。

Brooks PreciseFlex 直线导轨0度配置:

a.Brooks PreciseFlex 400:[118,0,45.6,0,0,0]

b.Brooks PreciseFlex 3400: [118,0,62.6,0,0,0]

Brooks PreciseFlex 直线导轨 -90 度配置:

a.Brooks PreciseFlex 400:[101.6, 0, 45.6, 0, 0, 0]

b.Brooks PreciseFlex 3400:[101.6,0,62.6,0,0,0]

必须同步直线导轨轴位置才能使后处理器进行坐标计算,具体方法信息参考https://robodk.com/doc/cn/General.html#SyncAxes章节。

为正确保存机器人世界坐标系中的目标点,并确保这些目标点可在后处理器生成的GPL项目中调用,用户需新建一个参考坐标系。该坐标系需基于工作站参考坐标系定义,且必须采用前文所述的机器人基座与线性导轨间相同偏移量(即上述数据)。所有目标点均需相对于该参考坐标系进行定义。

下图展示了0度配置下搭载于1米线性导轨的PreciseFlex 400机器人,以及被定义为机器人世界坐标系的参考坐标系示意图。

Robots Brooks - 图片 1

生成GPL项目后,使用任意文本编辑器打开Main.gpl文件,并注释掉定义机器人基础参考坐标系的那一行代码:

Robots Brooks - 图片 2

后处理器

本节介绍与生成Brooks机器人程序相关的注意事项。

工具中心点 (TCP)

RoboDK中的工具中心点(TCP)必须与机器人控制器中定义的TCP保持一致。若使用夹爪机构,需通过"添加工具(TCP)"功能设置符合夹爪实际位置的TCP。新建工具TCP应与夹爪机构TCP完全匹配。Brooks PreciseFlex机器人的TCP参数可通过网页界面按以下路径查询:

1.Admin

2.Setup – Parameter Database

3.Robot

4.Joint/Cartesian control

5.Dynamic Parameters

6.DataID 16051

夹爪配置

关于如何正确定义与后处理器兼容的夹爪指令,请参阅前一个章节:夹爪仿真。该方法能准确定义GPL项目中的位置数据,避免夹爪轴系意外移动。

现有Brooks PreciseFlex IntelliGuide夹爪型号包括:

1.Brooks PreciseFlex IntelliGuide s23

2.Brooks PreciseFlex IntelliGuide s60

3.Brooks PreciseFlex IntelliGuide s23D

4.Brooks PreciseFlex IntelliGuide v23

5.Brooks PreciseFlex IntelliGuide v60

各型号夹爪的基坐标系定义均不相同。为正确安装夹爪至机器人法兰坐标系,需使用以下参考位置数据:

 

IntelliGuide s23

IntelliGuide s60

IntelliGuide s23D

IntelliGuide v23

IntelliGuide v60

 

PreciseFlex 400

[0.603,0,0,0,0,0]

N/A

N/A

[0,0,0,0,0,0]

N/A

PreciseFlex 3400

[0.033,0,0,0,0,0]

[0.033,0,0,0,0,0]

[0.033,0,0,0,0,0]

[-0.57,0,0,0,0,0]

[0,0,0,0,0,0]

PreciseFlex DD 4-axis

[-70.5,0,0,0,180,180]

[-70.5,0,0,0,180,180]

[-70.5,0,0,0,180,180]

[-71.1,0,0,0,180,180]

[-71.5,0,0,0,180,180]

PreciseFlex c10

[-82.5,0,0,0,180,180]

[-82.5,0,0,0,180,180]

[-82.5,0,0,0,180,180]

[-82.5,0,0,0,180,180]

[-82.5,0,0,0,180,180]

PreciseFlex c3

[0.313,0,0,0,0,0]

[0.313,0,0,0,0,0]

[0.313,0,0,0,0,0]

[-0.291,0,0,0,0,0]

[0.279,0,0,0,0,0]

PreciseFlex c3x

[-14.655,0,0,0,0,0]

[-14.655,0,0,0,0,0]

[-14.655,0,0,0,0,0]

[-15.258,0,0,0,0,0]

[-14.688,0,0,0,0,0]

PreciseFlex c5

[113,0,0,0,0,0]

[113,0,0,0,0,0]

[113,0,0,0,0,0]

[112.4,0,0,0,0,0]

[113,0,0,0,0,0]

Robots Brooks - 图片 3

对于Brooks PreciseFlex DD 4轴和c10机型,需从机器人库加载IntelliGuide ISO法兰模型用于可视化(DD 4轴机器人的ISO法兰几何体需上移9mm)。

Robots Brooks - 图片 4

取整

输入值-1表示机器人将在运动终点完全停止并启用严格位置误差约束(对应GPL代码:prof1.InRange = 100)。
输入值0表示机器人将在运动终点停止但采用宽松位置误差约束(对应GPL代码:prof1.InRange = 10)。
输入正值表示机器人将执行平滑过渡运动而不完全停止(对应GPL代码:prof1.InRange = -1)。

速度与加速

有Brooks PreciseFlex机器人的最大线速度、角速度及关节速度/加速度参数可通过网页界面按以下路径查询:

1.Admin

2.Setup – Parameter Database

3.Robot

4.Joint/Cartesian control

5.Dynamic Parameters

6.DataIDs 2700, 2701, 2702, and 2703

用户可参照上述数据ID值设置RoboDK速度/加速度指令的输入参数。后处理器将根据这些基准值,按GPL Profile类的要求计算出各机器人最大速度/加速度的百分比值。要更改后处理器使用的限制,可以根据使用的具修改后处理器限值时,需根据具体机型调整后处理器参数。默认配置适用于PreciseFlex 400和3400机型,修改方法参见文档章节:https://robodk.com/doc/en/Post-Processors.html#PPEditor

当线加速度/角加速度指令输入值小于1时,该值将被视为达到峰值加速度/减速度所需的斜坡时间(秒)(对应GPL代码:prof1.AccelRamp/prof1.DecelRamp = 输入值)。

下图展示了控制器规划机器人运动轨迹的相关原理。

Robots Brooks - 图片 5

暂停指令

输入正值将生成对应时长的程序暂停命令(单位:秒)。输入负值将在网页操作控制面板弹出对话框,用户点击按钮:Continue,前程序保持暂停状态。查看对话框需点击控制面板上的按钮:Dialog Active。

Robots Brooks - 图片 6Robots Brooks - 图片 7

FTP程序传输

通过FTP从RoboDK向Brooks机器人传输程序的步骤:

1.在 RoboDK 中右击机器人

2.点击:连接机器人...

3.输入机器人IP和端口(默认IP 192.168.0.1,端口21)

4.输入远程 FTP 路径(通常为 /flash/projects)

一旦 RoboDK 程序准备就绪,就可以发送给机器人:

1.在RoboDK中右键点击程序

2.选择:发送程序到机器人(Ctrl+F6)          
系统将自动生成程序并尝试传输至机器人控制器,弹出窗口显示FTP传输状态。

启动机器人程序

必须使用机器人的 Web 界面来加载和启动 GPL 项目(使用任何浏览器搜索机器人的 IP 地址,即可访问机器人的 Web 界面)。下面是网络界面首页的图片。

1.打开浏览器

2.输入机器人 IP 地址

Robots Brooks - 图片 8

从网页上启动程序

1.选择:Admin -> Control Panels -> Operator Control Panel -> Load

2.选择: the GPL project created using RoboDK

3.点击:Select

4.点击:Start”

此时,机器人将执行程序。下图显示了操作员控制面板界面,以及允许用户选择和加载所需 GPL 项目的窗口。

Robots Brooks - 图片 9