任务 ========================================== 任务部分利用视觉部分的计算结果和运动部分的运动规划,控制整个项目的流程运行。本章节将详细介绍任务部分的配置。 工件代号映射表 ++++++++++++++++++++++++++ 设置完视觉和运动部分之后、运行任务流图之前,需要添加工件代号映射关系,以便任务流图调用视觉和运动设置的工件、视觉服务编号、抓取处理流程等内容,具体步骤如下。 .. |add| image:: img/add.png :width: 30px .. |delete2| image:: img/delete2.png :width: 30px .. |change| image:: img/change.png :width: 30px .. |copy| image:: img/copy.png :width: 30px .. |delete3| image:: img/delete3.png :width: 30px .. |start| image:: img/start.png :width: 30px 1. 单击Max右上角 :guilabel:`映射表与通信协议`,在弹出的 **映射表与通信协议** 窗口选择 “工件代号映射表 > 轨迹移动”页签。 2. 单击 :guilabel:`添加映射关系`,在弹出的 **添加映射关系** 窗口设置键、值和参数。 .. image:: img/map.png :align: center :width: 650px - 工件代号:用户自定义工件代号,仅支持英文字母和数字,长度不超过15个字符。可添加多个工件。 - 视觉服务编号:在下拉菜单选择视觉服务编号,编号和视觉部分的设置保持一致。 - 视觉流图文件:与视觉服务编号下的流图保持一致。 - 处理流程:在下拉菜单中选择抓取处理流程,这些抓取处理流程已在运动部分设置好。运动流程编号从0开始自动增加,可单击 |add| 或 |delete2| 新建或删除处理流程。 - 运动路径:选择在 :guilabel:`运动` 中设置好的一条路径。 - 缓存多个视觉结果:可根据需要是否勾选。 - 圆柱体:本项目无需勾选。与圆柱体相关的项目可根据需求,设置圆柱体的直径和长,无需重新注册圆柱体的抓取方式,方便使用。 3. 单击 :guilabel:`确认` 完成添加,列表中会显示已添加的映射关系,用户可对列表中的映射关系进行操作。 - |change|:修改映射关系。 - |copy|:复制并修改映射关系,注意键值不能重复。 - |delete3|:删除映射关系。 4. 单击 :guilabel:`确认` 完成映射表设置。 .. hint:: 用户可单击 :guilabel:`自动生成映射关系`,系统自动根据视觉和运动的设置生成工件代号映射表,但有多个抓取处理流程时无法自动生成映射关系。 任务流图 +++++++++++++++++ 设置完工件关系映射表之后,在 :guilabel:`任务` 中导入3D轨迹移动中的模板,请参见 :doc:`../../../basic_operation/VP_operation/configuration`。任务流图的设置分为工控机主控和机械臂主控两种方式,每种方式下含多个模板,可根据需要选择。在本章节工控机主控使用 **抓取同步(粗颗粒度)** 模板,机械臂主控使用 **抓取异步前端** 和 **抓取异步后端** 模板。 工控机主控 ------------- 添加好基础模板之后,用户可根据需求添加或修改模块。以抓取蝴蝶件项目为例,配置完成后的流图如下。 .. image:: img/taskflow.png :align: center :width: 700px 下面详细介绍该任务流图的配置步骤。 1. 在任务流图模块当中选择“功能 > 一键更新节点机械臂属性”,系统自动根据当前设置更新机械臂路径。也可在模块的属性中设置机械臂路径。 .. image:: img/updaterobot.png :align: center :width: 450px 2. 单击 **移动到目标关节** 模块,在右侧 **属性** 页签中设置目标关节角、位置和速度等参数,即起始点位置。 .. image:: img/joint.png :align: center :width: 350px 3. 单击 **呼叫视觉与计算路径(轨迹移动)** 模块,在右侧 **属性** 页签中设置法兰位姿,该位姿仅在“眼在手上”的场景中需要设置。 .. image:: img/callcal.png :align: center :width: 450px 4. 分别单击两个 **继续执行直到** 模块,在右侧 **属性** 页签中将 **目标点名称** 设置为与 :guilabel:`运动` 中路径规划设置的点相同的名称,例如该项目中两个模块分别设为的“抓取”和“放置”。 .. image:: img/exeuntil.png :align: center :width: 450px 5. 分别设置 **设置设备数字输出** 模块。单击该模块,在右侧 **属性** 页签,设置端口编号和值。值为0,表示工具张开;值为1,表示工具闭合。 .. image:: img/ioset.png :align: center :width: 350px .. hint:: 单击Max右上角的 :guilabel:`虚拟示教器`,在 **I/O控制** 页签根据机械臂实际情况设置数字输出端口号。例如在本项目中端口3控制的是工具的开合,信号1表示工具闭合,信号0表示工具张开。端口名称可自行定义,然后单击 :guilabel:`确认`。在 **设置设备数字输出** 模块设置时,选择I/O控制里的端口即可。 .. image:: img/iocontrol.png :align: center :width: 550px 6. 将后一个 **继续执行直到** 模块的“成功”输出与 **呼叫视觉与计算路径(轨迹移动)** 模块的输入相连接。 7. 单击任务流图左上角的 |start|,开始执行整个抓取流程。 机械臂主控 ------------- 在机械臂主控模板中,需要同时使用 **抓取异步前端** 和 **抓取异步后端** 两个模板。 其中前端模板主要负责整体抓放流程的控制,而后端完成大量的计算工作,例如机械臂抓取出筐后可以立即拍照,后端可以立刻执行计算任务,这样机械臂完成一次抓放流程之后可以直接获取计算结果进行下一次抓取,以提升执行效率。前端被机械臂呼叫,对指令的响应速度更快,但前端不负责具体的计算任务,仅从后端获取计算结果。 下图是 **抓取异步前端** 模板示意图,其中左上部分控制切换工件的流程,右上部分控制请求抓放的流程,下面的流程控制抓放节点筛选。 .. image:: img/front.png :align: center :width: 700px 下图是 **抓取异步后端** 模板示意图,其中上面是计算抓取轨迹的流程,左下部分控制工作空间的切换,右下部分控制坐标系转换。 .. image:: img/back.png :align: center :width: 700px 机械臂主控模式下,Kuka机械臂案例和示例代码可参考 :doc:`../../../appendix/robot_connection/kuka/example`,其他品牌的案例和代码可在 :doc:`../../../appendix/robot_connection/robot` 中选择相应的品牌查看。 .. |help| image:: img/help.png :width: 20px 在Max中,单击右上方 :guilabel:`映射表与通信协议`,在弹出窗口的 :guilabel:`机械臂基础设置` 页签下,勾选 **开启** 打开测试模式。此时右侧会出现 :guilabel:`打开文件` 和 |help|。单击 :guilabel:`打开文件` 可查看通信指令的yml文件,单击 |help| 可在浏览器中打开 :doc:`../../../appendix/robot_connection/robot_server_protocol_v2` 页面,并查看机械臂主控通信协议、指令等的内容。 .. image:: img/instruction.png :align: center :width: 650px