运动 ========================================== .. |add| image:: img/add2.png :width: 20px 在 **运动** 界面,配置仿真环境并规划运动路径。 .. hint:: 在开始设置运动相关内容前,请先根据机械臂和相机品牌连接并配置真实环境中的机械臂和相机。相关内容请参考 :doc:`../../../basic_operation/robot` 和 :doc:`../../../appendix/camera_connection/camera_IP`。如果仅在仿真环境中运行,则无需配置机械臂和相机。 配置仿真环境 +++++++++++++++ 根据实际场景,在仿真环境中添加机械臂、料筐、几何体、工具。 1. 添加机械臂。新建项目时已添加机械臂,可根据实际项目设置机械臂软限位等参数。若要重新添加机械臂,可在 **运动** 页签下快捷工具栏,单击 **机械臂**,重新添加即可,请参见 :doc:`../../../basic_operation/motion_operation/add_robot`。 2. 添加容器。在控序混码项目中,输送线来料的场景需要添加1个来料输送线和1个码放托盘,托盘来料的场景需要添加2个来料托盘,1个码放托盘。请根据实际项目增删容器并修改容器及工作空间的尺寸、位姿等参数,请参见 :doc:`../../../basic_operation/motion_operation/add_ws`。 3. 添加几何体。示例项目中已添加若干几何体,用于表示环境中的相机、相机支架、立柱、围栏等障碍物,可根据实际项目增删修改,请参见 :doc:`../../../basic_operation/motion_operation/add_obstacle`。 .. image:: img/env.png :align: center :width: 350px 注册抓放 ++++++++++++ 先注册吸具,再注册抓取方式和放置垛型,然后注册抓放处理流程。 1. 注册吸具,操作参见 :ref:`basic_operation/motion_operation/add_tool:注册吸具`。 a. 在 **运动** 页签下快捷工具栏,单击 **末端工具**,选择 **注册吸具**,再添加工具形态,设置吸具的尺寸和位姿,单击 **下一步**。 .. image:: img/suctiontool.png :align: center :width: 700px b. 设置吸盘基准面的尺寸和相对于工具坐标系的位姿,可选择将吸盘基准面的尺寸或位姿与第一个碰撞长方体同步。 c. 设置吸盘物理属性,设置每行和每列吸取单元数量,在本项目中,每行2个吸取单元,每列3个吸取单元,单击 **自动生成吸取单元**,生成6个吸取单元。 .. image:: img/unit.png :align: center :width: 700px d. 在 **吸取单元详情** 下方,根据机械臂的I/O配置,设置每个吸取单元的抓取I/O、放置I/O、掉箱检测I/O。在本项目中,I/O端口分区如下图所示。 .. image:: img/IO.png :align: center :width: 700px 在本项目中,吸盘分区I/O端口设置如下表所示,实际项目设置时,请根据机械臂的I/O配置调整。 +-------------+----------------------------+---------------------------------------------------+------------------------------------------------------------------+ | 吸取单元 | 抓取I/O | 放置I/O | 掉箱检测I/O | +=============+============================+===================================================+==================================================================+ | 吸取单元0_0 | 添加端口1,将对应值设为1, | 1. 添加端口1,将对应值设为0,开启后延时设为200ms | 1. 启用掉箱检测I/O | | | 开启后延时设为500ms | 2. 添加端口2,将对应值设为1,开启后延时设为500ms | 2. 使用逻辑设为“或” | | | | 3. 再次添加端口2,将对应值设为0 | 3. 添加端口3,将未掉箱时的值设为1 | +-------------+----------------------------+---------------------------------------------------+------------------------------------------------------------------+ | 吸取单元1_0 | 添加端口7,将对应值设为1, | 1. 添加端口7,将对应值设为0,开启后延时设为200ms | 1. 启用掉箱检测I/O | | | 开启后延时设为500ms | 2. 添加端口8,将对应值设为1,开启后延时设为500ms | 2. 使用逻辑设为“或” | | | | 3. 再次添加端口8,将对应值设为0 | 3. 添加端口1,将未掉箱时的值设为1 | +-------------+----------------------------+---------------------------------------------------+------------------------------------------------------------------+ | 吸取单元0_1 | 添加端口3,将对应值设为1, | 1. 添加端口3,将对应值设为0,开启后延时设为200ms | 不启用掉箱检测I/O和考虑传感器具体位置 | | | 开启后延时设为500ms | 2. 添加端口4,将对应值设为1,开启后延时设为500ms | | | | | 3. 再次添加端口4,将对应值设为0 | | +-------------+----------------------------+---------------------------------------------------+------------------------------------------------------------------+ | 吸取单元1_1 | 添加端口9,将对应值设为1, | 1. 添加端口9,将对应值设为0,开启后延时设为200ms | 1. 启用掉箱检测I/O | | | 开启后延时设为500ms | 2. 添加端口10,将对应值设为1,开启后延时设为500ms | 2. 使用逻辑设为“或” | | | | 3. 再次添加端口10,将对应值设为0 | 3. 添加端口2,将未掉箱时的值设为1 | +-------------+----------------------------+---------------------------------------------------+------------------------------------------------------------------+ | 吸取单元0_2 | 添加端口5,将对应值设为1, | 1. 添加端口5,将对应值设为0,开启后延时设为200ms | 1. 启用掉箱检测I/O | | | 开启后延时设为500ms | 2. 添加端口6,将对应值设为1,开启后延时设为500ms | 2. 使用逻辑设为“或” | | | | 3. 再次添加端口6,将对应值设为0 | 3. 添加端口5,将未掉箱时的值设为1 | +-------------+----------------------------+---------------------------------------------------+------------------------------------------------------------------+ | 吸取单元1_2 | 添加端口11,将对应值设为1,| 1. 添加端口11,将对应值设为0,开启后延时设为200ms | 1. 启用掉箱检测I/O | | | 开启后延时设为500ms | 2. 添加端口12,将对应值设为1,开启后延时设为500ms | 2. 使用逻辑设为“或” | | | | 3. 再次添加端口12,将对应值设为0 | 3. 添加端口4,将未掉箱时的值设为1 | +-------------+----------------------------+---------------------------------------------------+------------------------------------------------------------------+ e. 单击 **下一步**,单击 **自动生成吸取组合**。 f. 单击右下角 **完成**,回到 **吸具** 页签,单击右下角 **完成并添加到机械臂**。 g. 将吸具添加至机械臂后,设置吸具中心点相对于法兰的位姿。 .. image:: img/flange.png :align: center :width: 700px 2. 注册抓取方式,请参见 :doc:`../../../basic_operation/motion_operation/grasp_reg`。 a. 在顶部快捷工具栏,选择 “抓取方式 > 箱子抓取注册”。 b. 将抓取方式设置为 **单抓**,设置抓取规则,单击 **下一步**。 c. 在 **测试参数配置** 页签下,将测试方式设置为 **仿真运行**,垛型来源选择 **手动添加垛型**。 d. 单击 **新增箱子**,设置箱子尺寸,单击 **确定**,然后单击 **下一步**。 e. (可选)单击 **测试运行**,查看测试结果。 .. image:: img/result.png :align: center :width: 700px f. 单击右下角 **完成**。 .. hint:: 控序混码场景在注册抓取方式时需注意调整高级参数。 .. image:: img/advpara.png :align: center :width: 700px - 吸取方向:吸盘吸取箱子的哪一面,对于控序混码来说,默认吸取箱子的顶面。 - 抓取方式的丰富程度:默认标准。 - 允许不连续的吸取单元:是否允许使用由不连续的吸取单元合成的吸取组合吸取物体。默认开启,混码场景一般使用连续的吸取单元。 - 抓取方式的丰富程度:默认标准。 - 最小吸取面积/物体表面积比例:最小的吸取面积与物体表面积的比,如下图所示绿色为箱子,红色为箱子的吸取部分,灰色为未占用的吸取单元。红色/(红色+绿色)=吸取面积/物体表面积比例。 .. image:: img/ratio.png :align: center :width: 200px - 最小吸取面积/工具参考面积比例:吸取的面积与整个工具参考面积的比值,上图中为红色/(红色+灰色)。在混码项目中,由于箱子是多种多样的,因为此比值设置过大会导致无抓取规划。 - 允许和非待抓取箱子的接触距离:吸盘在抓取箱子时,允许的与旁边箱子产生干涉的面积。 3. 注册放置方式,并注册垛型。 a. 在顶部快捷工具栏,选择 “放置方式 > 箱子混码垛型注册(自动)”。 b. 在右侧参数设置栏,配置混码垛型规则。 .. image:: img/place.png :align: center :width: 700px - 垛型限制参数:用于限制是否可以堆叠,是否可以超出托盘等限制参数。 - 打分参数:用于调整垛型,让规划更加倾向于设置的参数,例如优先平铺、优先角点等。 - 支撑性参数:用于设置箱子放置时考虑的支撑面大小等。 - 搜索参数:限制搜索的广度与深度。 - 碰撞检测参数:由于控序混码要后验,所以碰撞检测参数尤其重要,需要和运动规划中的设置保持一致。后验的原理是验证从滑动开始点到放置点位是否是可达并无路径碰撞的。因此,如果在混码放置参数中设置的滑动点与运动规划中无法保持一致,就会产生计算出来的垛型无法在运动规划时规划出合理的轨迹,从而导致导致无解。设置时“放置掉落高度”需要大于吸盘海绵吸取后的高度,且需与运动规划保持一致,否则会碰撞检测失败。“滑动安全距离”可设置与运动规划相同,建议使用默认值。 c. 单击右下角 **完成**。 4. 注册抓取处理流程。 a. 在顶部快捷工具栏,选择 “抓放规划 > 抓取处理流程”。 b. 设置“生成抓取规划”为“箱子抓取注册”即可,即前述步骤2中设置好的抓取注册,抓取注册的名称也可任意命名。 .. image:: img/pickprocess.png :align: center :width: 700px 5. 注册抓放组合处理流程,请参见 :doc:`../../../basic_operation/motion_operation/add_pipeline`。 a. 在顶部快捷工具栏,选择 “抓放规划 > 组合处理流程 > 控序混码”。 b. 在右侧参数设置栏,配置处理流程。在本项目中,抓取设置保持默认即可,放置设置中放置位姿来源选择 **工作空间的槽**,抓放组合方式选择 **匹配抓取箱子和放置槽形状**。 c. (可选)在 **测试运行** 页签下,选择抓取和放置工作空间,单击 **测试运行**,查看测试结果。 d. 单击右下角 **完成**。 .. image:: img/placement.png :align: center :width: 600px