设置抓取策略

本章会详细介绍如何设置抓取策略。所有抓取任务的设置抓取策略流程都是一样的。

../../_images/Pick_intro.png

抓取策略决定了机器人该如何抓取物体。设置流程包括以下4步:

1. 设置夹爪模型

  1. 选择一个夹爪模型,然后点击保存夹爪模型。该模型用于显示目的以及避碰环节的避碰处理,如果不需要避碰处理可以选择一个随意的预设夹爪模型来作为显示使用。

    ../../_images/select_tcp.png

    重要

    如果您的抓取可能会产生碰撞,比如抓取箱子里的物体,或者有复杂的环境,需要进行避碰处理,那么请制作贴合真实的机器人夹爪模型,并上传自定义模型作为夹爪模型。

    详情请阅读 正确的制作机器人夹爪模型

  2. 点击定义夹爪中心点,然后点击显示按钮。这是可以看到坐标的输入框,输入TCP的坐标和旋转来定义;也可以在显示窗口上拖动来定义, 然后点击保存即可。

    ../../_images/define_tcp1.png

备注

实际使用时,建议用机器人建立TCP(tool center point)后,从机器人处将TCP位置输入进这一步,之后机器人改用法兰的位置(0,0,0)进行交互。
../../_images/ur_tcp.png

2. 设置TCP与物体的相对关系

这一步是为了记录夹爪抓取物体时的标准相对位置关系,这一步也被称为示教。

虚拟示教

虚拟示教是由用户手动输入TCP 到 物体的相对关系变换。

  1. 首先从左边的标签列来选择一个要示教的物体标签。

  2. 点击 + 添加一个抓取姿势, 然后手动输入TCP和物体的相对关系。

  3. 以下图为例,x,y 为0, z 为10mm, rx 为180°。那么在抓取时,抓取位置就是TCP在物体以参照点为基准的正上方10mm处。

小技巧

由于夹爪定义时z轴是向上的,抓取时通常是从上往下抓(z轴朝下),而物体的z轴朝上,通常虚拟示教需要有一个 rx 或者 ry 的180°旋转。

../../_images/virtual_teach_pose.png
  1. 输入cluster ID, 来分配示教组。更多关于集群抓取、示教组 请查阅 集群抓取

同一个物体建立了多个示教时,如果有其中一个示教点位无法执行抓取,例如被箱体挡住,则会使用剩余无碰撞的示教关系。

真实示教

真实示教是由用户移动机器人至标准的抓取姿态,然后发送该位姿至DaoAI Vision Pilot,由DaoAI Vision Pilot计算并记录TCP和物体的相对关系。

以UR为例

  1. 首先从左边的标签列来选择一个要示教的物体标签。

  2. 点击 + 添加一个抓取姿势,并切换到真实示教。

    ../../_images/real_teach_pose.png

警告

  1. 需要确保场景中只有一个物体,因为如果有多个物体,则无法判断是以两个中的哪个来示教。

  2. 示教过程中不可以移动物体,如果物体不小心移动了,则需要重新拍照定位进行示教。

  1. 如果您是Eye-to-Hand配置,那么请直接点击拍照来定位物体。拍照后,您可以通过右侧的显示栏观察检测结果是否正确。

    ../../_images/real_teach_pose2.png

警告

如果您是Eye-in-Hand抓取,那么在点击拍照之前,需要先参考下面的步骤,发送机器人 拍照位姿 到DaoAI Vision Pilot,然后再点击拍照定位物体。

  1. 来到UR面板,切换到发送位姿脚本。

  2. 确认ip和port和DaoAI Vision Pilot设置的一致。

  3. 移动机器人至标准抓取姿态。并设置current pose为当前姿态。

  4. 调用daoai_teach_pose()函数,运行机器人脚本,发送当前位姿。

    ../../_images/ur_teach_pose.png
  1. 回到网页,点击获取姿势,成功后,夹爪和物体的抓取位置关系会在右边的显示窗口中显示出来。点击保存此位姿即可。

    ../../_images/teach_pose_example_1.png
  2. 点击保存来保存这个抓取关系。

小技巧

在真实示教后,仍然可以切换到虚拟示教来查看、微调所记录的TCP和物体的相对位置关系。

  1. 输入cluster ID, 来分配示教组。更多关于集群抓取、示教组 请查阅 集群抓取

同一个物体使用多个示教时,如果有其中一个抓取点位无法达到,例如被箱体挡住,则会使用其它可以达到的示教关系。

灵活位姿抓取(可选)

在示教完成后,可以按照需要启用灵活抓取位姿。灵活抓取位姿主要提供了2种灵活抓取策略:优先从上方抓取,优先以最小的倾斜抓取。

../../_images/teach_pose_example_1.png

优先从上方抓取: 当物体产生倾斜时,以参考系(定义ROI时箱体工具的坐标轴)的z轴为上方,优先从上方抓取。

../../_images/pick_from_top.png

优先以最小的倾斜抓取: 当物体产生倾斜时,以定义的标准抓取姿态为准,优先从定义的标准抓取位姿进行抓取。

../../_images/pick_with_less_tilt.png
  1. 启用夹爪:灵活抓取位姿。

  2. 设置夹爪中心对称原点,在倾斜、旋转夹爪时,会以这个点为基准旋转。

  3. 勾选显示灵活度,可以在显示窗口下方拖动灵活度预览,查看允许旋转的最大角度。

    ../../_images/flexibility_preview.png
  4. 允许z轴倾斜: 是否允许夹爪倾斜抓取。

  5. 相对倾斜轴:允许夹爪在哪个轴上进行旋转

  6. 倾斜角度:允许夹爪和物体以标准抓取位姿为基准的最大倾斜角度,推荐不大于20°。

  7. 旋转抓取策略: 优先从上方抓取 或者 优先以最小倾斜抓取

  8. z轴可旋转:选择1, 360度,180度,不允许z轴旋转。

  9. 全部设置完成后,点击保存此位姿完成设置。

集群抓取(可选)

集群抓取(cluster picking)是一种抓取策略。指在抓取时,采用距离物体最近的示教集群的示教关系进行抓取。其目的是为了应对物体在远离示教点位执行抓取时产生的误差增加的现象。

../../_images/cluster_picking_ui.png
  • 集群的选择:抓取时,距离物体最近的示教集群会被选择用于抓取策略。

    ../../_images/cluster_picking.png
  • 集群内的选择:同一集群内如果存在多个示教姿态,那么抓取时,会优先采用rz旋转最小的姿态。

  • 集群的分布:示教集群的位置应均匀分布在抓取的空间内以达到更好的抓取效果。

  • 集群的示教: 同一集群内,示教时物体的位置应当尽可能保持在小范围内,不要过过于分散。

    ../../_images/cluster_picking_2.png

3. 设置抓取顺序

抓取顺序决定了物体该以何种顺序被抓起。在这个步骤里还可以设置是否对齐物体的旋转。

  1. 设置抓取顺序。

    ../../_images/sort_order.png
例,z值最高,也就是机器人会优先从最上面的物体抓。

x值最高,(定义参考系时,x轴时指向右侧),也就是机器人会从右到左抓。

备注

这里的物体的x,y,z值是以参考系为基准的,参考系是在检测流程里的 定义场景ROI完成的。

小技巧

如果场景物体排序有变化,可以点击快速检测按钮,重新拍照并点击更新顺序观察顺序是否符合预期。

../../_images/pick_sort.png
  1. 设置物体位姿的xy轴对齐:

    ../../_images/align_pose.png ../../_images/order_eg.png
  2. 设置物体的z轴对齐:

    正:确保物体的z轴朝上,如果检测匹配到了z轴朝下的物体,则使物体的z轴颠倒,从而朝向上方。 负:确保物体的z轴朝下,如果检测匹配到了z轴朝上的物体,则使物体的z轴颠倒,从而朝向下方。

  3. 使用层过滤:

    启用后,可以设置层间距(mm),会过滤掉以最上方的物体位姿为基准,向下多少mm以外的物体坐标。也就是只保留最上面一层的物体坐标。

4. 设置防碰撞

防碰撞设置限制了机器人夹爪可以抓取的最大倾斜角度,以及限制了夹爪位置生成,使其不会生成在与箱体发生碰撞的位置上。

../../_images/collision_avoidance.png
  1. 防碰撞默认使用了30度的最大机器人倾斜角度,您也可以更改这个限制使其符合您的需求。(如果角度大于等于180度,则等同于关闭最大倾斜限制)

备注

这里的最大倾斜角度,是以定义场景ROI时同时定义的参考系(箱体坐标)的z轴为基准。任何倾斜角度大于设定的角度的抓取位姿都会被过滤掉。

  1. 点击使用箱体定义操作空间,来定义一个虚拟箱体 然后保存。虚拟箱体的z轴的上下两边是开口处,周围都是箱壁。任何会与虚拟箱壁位置碰撞的抓取位姿都不会被生成。您可以点击快速检测按钮来重新拍照 然后点击更新显示,尝试各种物体摆放组合的抓取预览。

    ../../_images/virtual_bin.png

警告

显示窗口中定义虚拟箱体的ROI工具不会同时定义参考系,只有检测流程里的定义场景ROI工具会定义参考系。

探测和抓取全部设置完成后,您的任务就准备好进行部署了。请参考 任务部署