无碰撞运动规划器

运动规划功能可在机器人工作区内自动创建无碰撞路径。在 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 " 2002000900-135

b.名称"左点 2 " 200-2000900-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.

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

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

Collision Avoidance - 图片 29

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

Collision Avoidance - 图片 30

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

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

正确定义碰撞图

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

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

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

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

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

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

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

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

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

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