碰撞检测

RoboDK 的碰撞检查功能可以帮助您在实际设置中防止碰撞。碰撞检查可用于不同的方式,如直观检查碰撞、自动避免机器人加工项目中的碰撞或生成无碰撞地图以自动创建无碰撞程序。

本节包括以下主题:

如何为模拟激活碰撞检查

如何定义碰撞检测图

如何为机器加工项目激活自动碰撞检测和规避功能

如何使用 PRM 算法自动创建无碰撞程序,以链接不同目标或其他程序。

重要提示:RoboDK 中的虚拟环境可能无法完全反映真实设置。因此,建议考虑一定的公差,以安全地防止碰撞。为此,您可以加载更大、更简化的三维模型。例如,您可以将主轴建模为一个简单的立方体(仅用于碰撞检测)。

碰撞检测

选择工具➔Collision Avoidance - 图片 1 检查碰撞,打开或关闭碰撞检测。如果激活了碰撞检测,当检测到碰撞时,所有程序和机器人运动都将停止。当模拟处于碰撞状态时,所有处于碰撞状态的物体、工具和机器人链接都将以红色高亮显示。

请按照以下步骤安全地检查程序是否发生碰撞:

1.右键单击程序。

2.选择 "检查路径和碰撞"(Shift+F5)。该选项可快速检查路径是否可行(与检查路径 - F5 相同),然后验证是否存在碰撞。

Collision Avoidance - 图片 2

重要:工具➔ 选项➔ Motion 中定义的碰撞检查步骤定义了安全检查碰撞的步骤。

提示:请确保在 RoboDK 中对机器人单元进行了精确建模。此外,建议增大 3D 几何图形,以便安全地预测碰撞。

注:如果希望在检测到碰撞仍能继续模拟程序,可进入工具➔ 选项➔ 运动菜单,取消选中 "检测到碰撞时停止机器人运动 "选项

碰撞地图

您可以指定是否需要检查任何一对物体之间的交互是否发生碰撞。

选择工具➔Collision Avoidance - 图片 3 碰撞图,显示单元格中所有移动物体之间的关系和碰撞检查状态。双击机器人单元可激活或关闭该关系的碰撞检查。选择 "设置默认选区 "可自动设置保守选区。

默认情况下,RoboDK 会检查站内所有移动物体之间的碰撞,包括所有机器人链接、物体和工具。作为例外,连续的机器人关节不会被检查碰撞,因为它们可能始终处于接触状态。

提示:双击对角线中的情况,检查/取消检查特定物体与所有其他物体的碰撞。

提示:如果模拟速度因碰撞检查而减慢,最好减少碰撞检查的次数,以降低碰撞检查所需的计算机功耗。

Collision Avoidance - 图片 4

更快的碰撞检测

碰撞检测速度在很大程度上取决于许多因素。

1.碰撞图中定义的检查对数。碰撞图中的检查对数越少,速度越快。

2.用于碰撞检测的机器人步长。碰撞步距可在工具➔ 选项➔运动菜单中修改。线性运动的步长以毫米为单位,关节运动的步长以度为单位。步长越大,碰撞检查的速度越快,但结果可能不够精确。

3.计算机能力:计算机能力越强(CPU 速度越快),处理线程越多,碰撞检查速度就越快。

4.三维文件的复杂程度。细节程度较高的几何图形(如圆形区域)通常需要更强的计算能力。简化这些几何图形并减少三角形的数量将有助于加快碰撞检查的速度。

提示:您可以更换 STEP/IGES 物体导入设置,以降低详细程度(在工具-选项-CAD 菜单中)。这将在您的 RoboDK 项目中创建更轻的物体。具有较轻物体的工作站将帮助您加快模拟和碰撞检查的速度。您还将获得更小的 RDK 文件。

为了更好地进行碰撞检查,您应该考虑以下指导原则:

1.选择 STEP 或 IGES 格式,而不是 STL 文件,以获得更好的性能和兼容性。

2.尽可能简化几何形状。

3.使用简化网格插件自动简化复杂几何体:https://robodk.com/addins。

4.要识别分组不当的要素,可通过工具➔ 选项➔ 其他➔ 绘制边界框(碰撞复选激活时)启用边界框预览。确保边界箱不包含多个独立元素。

5.避免使用工具➔ 选项➔ 显示中的 "简化物体... "功能。该功能会将所有曲面合并为一个元素,从而形成一个庞大的边界箱,这与上一点是相悖的。

6.在环境中设置碰撞专用物体:复制物体并移除无法触及的表面,或导入几何形状更简单的版本(如凸壳)。仅将原始物体用于视觉目的,并将其排除在碰撞图之外。

7.使用 API 可以动态更新碰撞图,或在项目不应成为碰撞检测的一部分时将其设置为不可见。

机器人加工的碰撞规避

您可以为机器加工项目启用自动防碰撞功能。RoboDK 会自动旋转工具,以寻找无碰撞路径。

小贴士机器人加工路径的碰撞检测需要长时间计算。请确保适当缩小碰撞图的范围,以帮助加快碰撞检测和避免过程。

请按照以下步骤为机器加工项目激活自动碰撞检查和防碰撞功能:

1.选择工具➔ 选项 CAM➔

2.检查允许自动避免碰撞

Collision Avoidance - 图片 5

3.双击您的机器加工项目、3D 打印项目、曲线追踪项目或点追踪项目。

4.选中 "避免碰撞":这将按照优化参数中的描述,通过围绕 Z 轴更换刀具方向,激活自动避免碰撞功能。

Collision Avoidance - 图片 6

重要: 该选项将尝试通过绕工具的 Z 轴转动来自动避免碰撞。确保不检查工具刀与工件的碰撞。如果要检查刀架与工件之间的碰撞,可能需要将主轴分成 2 个工具(一个用于碰撞检测,另一个用于附加可视化信息,如刀具)。

无碰撞运动规划器

运动规划功能可在机器人工作区内自动创建无碰撞路径。在 RoboDK 中,该功能使用了一种名为 "概率路线图"(PRM)的运动规划算法。

首先,绘制机器人工作空间的自由空间图。然后,在机器人编程过程中,利用该地图快速生成无碰撞轨迹。

PRM 算法具有以下两个特性:

概率:"配置空间"(即规划器用来了解机器人在其工作区内可移动位置的点集)中的点由规划器随机选择。这使得 PRM 算法比其他试图平均覆盖整个工作空间的运动规划算法更快。

路线图PRM 算法的工作原理是首先绘制整个机器人工作区的 "路线图"。

有关机器人运动规划的一般介绍,请参阅本博文

视频:介绍 RoboDK 的无碰撞运动规划功能 https://www.youtube.com/watch?v=KPR2aOZn924&list=PLjiA6TvRACQd8pL0EnE9Djc_SCH7wxxXl&index=10。

使用 PRM 运动规划器

在使用 PRM 运动规划时,有两个不同的阶段。这两个阶段在 RoboDK 中分别进行,从而提高了功能的效率。速度较慢的 "构建阶段 "只需执行一次,而速度较快的 "查询阶段 "则可重复精度多次。

这两个阶段是

  1. 构建阶段(慢速)--PRM 算法会在机器人的自由工作区内随机布点。然后,它尝试将这些点连接起来,形成工作区内无碰撞路径的路线图。
  2. 查询阶段(快速)--规划器尝试利用构建阶段创建的路线图,找到两个目标点之间最短的无碰撞路径。

有关 RoboDK PRM 算法工作原理的更多信息,请参阅本篇博文

本节将介绍如何在 RoboDK 程序中使用这两个阶段。将使用一个焊接设置示例来演示其功能。

设置运动规划

要使用运动规划器,需要有一个机器人,最好还配有工具。此外,工作区内至少要有一个物体,否则就不需要避免碰撞。至少指定两个目标,作为生成的无碰撞路径的起点和终点位置,也会有所帮助。

示例焊接设置可通过以下流程创建:

1.选择一个机器人:

a.选择文件➔Collision Avoidance - 图片 7打开在线资源库

b.使用筛选器查找机器人。例如,选择 ABB IRB 2600-12/1.85(选择以下筛选条件:ABB(品牌)、10-20 千克负载和1500-2000 毫米触距。

c.选择 "下载",机器人就会自动出现在主屏幕上。

2.选择工具:

a.从同一在线资源库中,按类型筛选➔ 工具(先点击重置筛选器,删除之前的筛选器)

b.下载工具,如 "焊接枪"

c.工具应自动连接到机器人上

d.加载工具后,可关闭在线资源库

3.添加参考坐标系:

a.选择程序➔Collision Avoidance - 图片 8 添加参考坐标系插件

b.在树中选择新的参考坐标系,按 F2 将其重命名为 "障碍物参考

4.添加一些物体插件:

a.选择文件➔Collision Avoidance - 图片 9 打开,打开位于计算机中的 RoboDK 资源库目录(该目录将位于 RoboDK 安装目录中)。

b.选择一个物体,如 "物体台面.wrl"。

c.将物体拖放到站点树中的 "障碍物参考 "上。

d.选择另一个物体,如 "box.stl",并将其也拖到障碍物参照物上。

e.通过以下操作将台面移到机器人前面:

i.右键单击障碍物参考坐标系,选择 "选项"(或直接双击树中的参考坐标系),弹出坐标系详细信息面板

ii.在名为 "相对于参考位置 "的面板中输入以下值:项目100004009000

Collision Avoidance - 图片 10

f.如有必要,可按照以下步骤增大物体(如 "箱")的尺寸和位置:

iii.右键单击工作站树中的物体,选择 "选项"(或直接双击树中的物体),弹出 "物体详细信息 "面板

iv.单击 "更多选项应用缩放比例,然后在缩放比例中输入 "4.0"。

v.在名为 "相对于障碍物参照物的物体位置 "的面板中输入以下值,将箱移动到台面上:0, 0, 200, 0, 0, 0

Collision Avoidance - 图片 11

5.创建目标:

a.选择程序➔Collision Avoidance - 图片 12 教学目标

b.在测站树中选择新目标,然后选择 F2 将其重命名为 "启动目标

c.通过这样做来移动目标:

vi.右键单击工作站树中的目标,选择 "选项"(或按 F3),弹出 "启动目标 "面板。

vii.目标位置相对于障碍物参考面板中输入以下值:500, 0, 0, 90, 0, 180

d.用同样的方法创建第二个目标,并将其重命名为 "终点目标"。使用与之前相同的方法,将其移动到以下位置:-500, 0, 0, 90, 0, 180

Collision Avoidance - 图片 13

限制关节极限

一项任务使用机器人所有工作空间的情况并不多见。在创建 PRM 地图时,限制机器人的关节极限通常是个好主意。这将加快生成地图的过程,并确保地图中的点位于最佳位置。

对于 6 轴机器人,最常受到限制的两个关节是

1.关节 1(基本关节)--限制该关节可阻止机器人向工作区两侧移动太远。

2.关节 3(肘关节)--限制该关节可阻止机器人在肘部向上和肘部向下配置之间切换。

使用以下程序更改关节限位:

1.右键单击工作站树中的机器人模型图标(例如 ABB IRB 2600-12/1.85),然后选择选项...,打开机器人面板。或者,双击工作站树中的机器人名称。

2.关节轴点动部分,移动要限制的机器人关节的滑块(如 θ1 和 θ3),找到关节下限的位置。

3.双击关节轴点动内的任意关节下限。例如,如果 θ1的关节限值目前为-180,双击数字-180。这将弹出 "设置关节下限 "面板。

Collision Avoidance - 图片 14

4.将关节下限设为 θ1 = -50 和 θ3 = -90。

5.更改关节限位,然后单击 "确定"

6.使用与关节上限相同的过程,设置 θ1 = 50。

Collision Avoidance - 图片 15

通过查看机器人的可触及工作区,可以看到这一变化。在机器人面板的 "工作空间 "部分选择 "显示当前工具 "选项,即可显示工作空间。它将只显示工作区中现在可以通过新关节限位到达的部分。

Collision Avoidance - 图片 16

选择 PRM 参数

PRM 算法利用以下三个参数生成可到达位置的路线图:

1.样本数 - 地图由机器人可到达的工作区中随机放置的若干位置(样本)组成。这个数字决定了样本数。默认值为 100 个样本。

2.每个样本的边 - 算法试图将地图中的每个样本与其他一些样本连接起来。将两个样本连接在一起的线称为 "边",表示这两个位置之间的无碰撞路径。此属性表示每个样本创建边缘的最大数量。默认值为每个样本 25 条边。

3.机器人步长 (度) - 在检查潜在边是否无碰撞时,算法会在沿边每隔一定时间停下来检查是否有碰撞。这些间隔之间的距离由机器人步长决定。默认值为 4 度。

这三个参数决定了生成的路线图的详细程度。它们还会影响在构建阶段生成路线图所需的时间。

样本数越多,每个样本的边数越多,生成的路线图就越精细,生成时间也就越长。机器人步长越大,生成路线图的速度越快,但可能无法检测到潜在的碰撞。

使用默认值,通常可在 15 分钟内生成路线图,具体取决于工作区的设置和机器人的属性。

有关设置这些参数的最佳做法,请参阅本节末尾的提示。

生成路线图

运动规划器的 "构建阶段 "是通过以下流程实现的,该流程可生成机器人工作空间的路线图:

1.打开无碰撞运动规划器面板,方法是进入实用工具菜单➔ 无碰撞运动规划器➔ 创建无碰撞地图,或者点击Collision Avoidance - 图片 17 检查碰撞旁边的小箭头,然后选择创建无碰撞地图。

Collision Avoidance - 图片 18

2.输入新参数或保留默认值。

3.单击 "更新地图 "生成路线图。

随后,PRM 算法将使用所选参数生成路线图。生成完成后,可以通过勾选显示地图(Display Map)箱来查看生成的路线图单击 "显示样本",机器人将在工作区内的所有样本中移动。

Collision Avoidance - 图片 19

链接目标

当两个目标或程序链接在一起时,就会进入运动规划器的 "查询阶段"。

要链接两个目标,首先要在工作站树中选择它们。有两种选择和链接目标的方法:

1.按住 Ctrl 键:

a.左键单击要开始移动的目标(在示例中,目标名为 "开始目标")。

b.按住 CTRL 键。

c.左键点击目标(如 "结束目标)

d.右键点击两个目标中的任意一个,然后选择链接选定目标。或者,如果 "无碰撞运动规划器 "面板已打开,点击 "链接选定目标/程序 "按钮。

2.使用 Shift 键:

a.将两个目标一上一下地排列在测站树中,起始目标位于终止目标之上。使用鼠标右键拖放目标,可以在树中移动目标。拖放目标将显示一个菜单,用于选择目标的位置。

Collision Avoidance - 图片 20

b.左键点击任一目标。

c.按住Shift 键。

d.左键点击另一个目标。

e.右键点击两个目标中的任意一个,然后选择链接选定目标。或者,如果 "无碰撞运动规划器 "面板已打开,点击 "链接选定目标/程序 "按钮。

这两种方法都将生成一个新程序,使用保存的路线图连接两个目标。要创建反方向的移动,请按相反的顺序选择目标,即使用 Ctrl 方法在开始目标之前选择结束目标,或使用 SHIFT 方法重新排列空间站树中的目标。

链接程序

运动规划器还能以类似的方式将两个不同的程序连接在一起。这会在两个程序之间创建一条无碰撞路径,并创建一个新的主程序。

在焊接示例中,请使用以下程序创建两个虚拟程序:

1.创建 4 个目标,作为 "物体参考 "坐标系的子坐标系(右键单击工作站树中的 "物体参考",选中激活参考系)。然后通过选择程序Collision Avoidance - 图片 21➔ Teach target 四次,或按 Ctrl+T 四次,创建四个目标。

2.在台站树中选择每个新目标,然后输入以下名称和数值。要更改目标名称,请按 F2 键或右键单击目标并选择重命名。要更改目标值,请按 F3 键弹出目标面板,或右键单击目标并选择选项。在 "目标位置相对于 "部分输入新值:物体参考

a.名称:"左点 1 ": 200、200、0、90、0、-135

b.名称:"左点 2 ": 200、-200、0、90、0、-135

c.名称:"右点 1 ":-200, 200, 0, 90, 0, 135

d.名称:"右点 2 ":-200, -200, 0, 90, 0, 135

Collision Avoidance - 图片 22

3.创建第一个程序:

a.转到程序 ➔Collision Avoidance - 图片 23添加程序

b.将程序重命名为 "Left Weld"(左侧焊接),首先在站树中选择该程序,然后按 F2 或右键单击并选择重命名。

c.将以下目标添加为线性指令,首先在站树中选择目标,然后选择程序➔Collision Avoidance - 图片 24 移动线性指令:起始目标,左点 1,左点 2,起始目标。

Collision Avoidance - 图片 25

4.以同样的方式创建第二个名为 "右侧焊接 "的程序,这次添加以下目标:终点目标、右点 1、右点 2、终点目标。

Collision Avoidance - 图片 26

请注意,这两个虚拟程序不包含激活/禁用焊接枪的命令。在真实程序中,必须包含这些命令。

要使用运动规划器连接任意两个程序,请使用以下流程:

1.使用上一节(链接目标)所述的两种方法中的任何一种选择这两个程序。

2.右键点击任一程序并选择链接所选程序。如果打开了无碰撞运动规划器面板,同样可以通过点击链接选定目标/程序来实现。

将创建一个名为 "MainSafe "的新程序,运行第一个程序,进行无碰撞移动,然后运行第二个程序。这个主程序可以像其他程序一样进行修改和重命名。

在地图上添加新目标

任何新目标都可以添加到 PRM 路线图中,而无需重新生成整个地图。这意味着,只有在工作区添加新物体或移动现有物体时,才需要完全重新生成路线图。

当一个新目标被添加到路线图中时,PRM 算法会尝试用一组新的边将其与路线图中已有的一些点连接起来。可以为新目标设置不同的默认边数,而不是构建初始路线图时所选择的边数。

新目标的最大边数可通过以下流程设置

1.打开无碰撞运动规划器面板,方法是进入实用工具菜单➔ 无碰撞运动规划器 创建无碰撞地图,或者点击Collision Avoidance - 图片 27 检查碰撞旁边的小箭头,然后选择创建无碰撞地图。

2.在标有 "新样本边 "的箱中输入边的数量默认值为 5。

在路线图中添加新目标有两种方法:

1.选择台站树中的目标。点击最高目标,按住 Shift 键,然后点击最低目标,可同时选择多个相邻目标。按住 Ctrl 键可以选择多个不相邻的目标。然后单击无碰撞运动规划器面板中的 "添加选定目标"。

Collision Avoidance - 图片 28

2.只需使用前几节(链接目标和链接程序)所述的链接选定目标链接选定程序的相同方法即可。任何尚未出现在路线图中的目标都会被自动添加。

提示和最佳做法

运动规划器很容易使用,但有一些最佳实践可以改善编程工作流程。

提示:首先使用较小的参数创建第一个无碰撞地图。然后,根据需要使用更多样本进行改进。

构建阶段可能需要很长时间。在编程的早期阶段,当机器人单元的布局不断变化时,这会变得很麻烦。每次在工作区添加一个物体或移动一个物体,都需要重新生成整个路线图。

为了减少等待生成路线图的时间,一开始最好使用较小的参数。

例如,您通常可以在 10-15 秒内生成一张无碰撞地图:

1.样本数量10.

2.每个样本的边缘5.

3.机器人步长(度):4.0.

这样做不会产生最有效的无碰撞运动,但可以更快地改变机器人单元的设计。

当确定了机器人单元中所有物体的位置后,就可以生成更大的地图(例如,默认参数为 100、25、4.0)。

Collision Avoidance - 图片 29

最后,在生成机器人程序之前,不妨先生成一个更大的路线图(例如参数为 500、50、2.0)。这将需要很长时间才能生成,但却能产生最有效的运动。

Collision Avoidance - 图片 30

提示:使用合理的关节限制来约束机器人的工作空间。

设置机器人关节限位(如上一节 "约束关节限位 "所述)有双重好处。首先,在某些情况下,它可以加快构建阶段。其次,它能确保路线图中包含对机器人程序有用的位置。这一重要步骤很容易被遗忘。

正确定义碰撞图

碰撞检测在 2 个物体发生碰撞时触发。您可以在碰撞贴图设置中指定每个移动物体之间的相关性。减少交互次数(绿色复选标记)将加快碰撞检测速度。

提示:遵循快速碰撞检查最佳实践,更快地计算出无碰撞地图。

计算无碰撞路径所需的时间主要取决于检查碰撞所需的时间。因此,您应遵循碰撞检测部分所述的最佳实践,以加快碰撞检测速度。其中,您可以增加用于碰撞检测的机器人步长、约束关节限制或简化三维几何体,以加快碰撞检测的速度。

提示:偏移和扩大 3D 模型以创建安全体积。

术语 "避免碰撞 "意味着运动规划器在任何情况下都会避免碰撞。这在模拟环境中当然是正确的。然而,在现实世界中,如果机器人离物体太近,仍有可能与物体发生碰撞。这通常是因为模拟机器人与实际机器人之间存在细微差别。

这种碰撞的常见情况是,机器人在远离任务时 "夹 "到物体边缘。通常可以通过在程序中加入 "偏移量 "来避免这种情况。有关有效使用偏移量的更多信息,请参阅本博客文章。

小贴士在机器人最灵巧的区域进行操作。

并非机器人工作区的所有区域都是相同的。在工作区的某些区域,机器人的 "可达性 "要高于其他区域。在可达性高的区域,机器人可以从多个方向访问点。在可达性低的区域,机器人只能从一个或两个方向访问点。

有时,运动规划器会找不到工作区中两个目标之间的路径。通常情况下,只需增加路线图中的样本数量即可解决这一问题,但并非总是如此。

如果运动规划器持续无法连接目标,请确保任务位于机器人工作区中可达性最强的区域内。打开机器人面板(右键单击工作站树中的机器人并选择选项),然后在 "工作空间 "部分选择 "显示当前工具",即可查看机器人的工作空间。