运动规划功能可在机器人工作区内自动创建无碰撞路径。在 RoboDK 中,该功能使用了一种名为 "概率路线图"(PRM)的运动规划算法。
首先,绘制机器人工作空间的自由空间图。然后,在机器人编程过程中,利用该地图快速生成无碰撞轨迹。
PRM 算法具有以下两个特性:
●概率:"配置空间"(即规划器用来了解机器人在其工作区内可移动位置的点集)中的点由规划器随机选择。这使得 PRM 算法比其他试图平均覆盖整个工作空间的运动规划算法更快。
●路线图PRM 算法的工作原理是首先绘制整个机器人工作区的 "路线图"。
有关机器人运动规划的一般介绍,请参阅本博文。
视频:介绍 RoboDK 的无碰撞运动规划功能 https://www.youtube.com/watch?v=KPR2aOZn924&list=PLjiA6TvRACQd8pL0EnE9Djc_SCH7wxxXl&index=10。
在使用 PRM 运动规划时,有两个不同的阶段。这两个阶段在 RoboDK 中分别进行,从而提高了功能的效率。速度较慢的 "构建阶段 "只需执行一次,而速度较快的 "查询阶段 "则可重复精度多次。
这两个阶段是
有关 RoboDK PRM 算法工作原理的更多信息,请参阅本篇博文。
本节将介绍如何在 RoboDK 程序中使用这两个阶段。将使用一个焊接设置示例来演示其功能。
要使用运动规划器,需要有一个机器人,最好还配有工具。此外,工作区内至少要有一个物体,否则就不需要避免碰撞。至少指定两个目标,作为生成的无碰撞路径的起点和终点位置,也会有所帮助。
示例焊接设置可通过以下流程创建:
1.选择一个机器人:
a.选择文件➔打开在线资源库
b.使用筛选器查找机器人。例如,选择 ABB IRB 2600-12/1.85(选择以下筛选条件:ABB(品牌)、10-20 千克负载和1500-2000 毫米触距。
c.选择 "下载",机器人就会自动出现在主屏幕上。
2.选择工具:
a.从同一在线资源库中,按类型筛选➔ 工具(先点击重置筛选器,删除之前的筛选器)
b.下载工具,如 "焊接枪"
c.工具应自动连接到机器人上
d.加载工具后,可关闭在线资源库
3.添加参考坐标系:
a.选择程序➔ 添加参考坐标系插件
b.在树中选择新的参考坐标系,按 F2 将其重命名为 "障碍物参考
4.添加一些物体插件:
a.选择文件➔ 打开,打开位于计算机中的 RoboDK 资源库目录(该目录将位于 RoboDK 安装目录中)。
b.选择一个物体,如 "物体台面.wrl"。
c.将物体拖放到站点树中的 "障碍物参考 "上。
d.选择另一个物体,如 "box.stl",并将其也拖到障碍物参照物上。
e.通过以下操作将台面移到机器人前面:
i.右键单击障碍物参考坐标系,选择 "选项"(或直接双击树中的参考坐标系),弹出坐标系详细信息面板
ii.在名为 "相对于参考位置 "的面板中输入以下值:项目:1000、0、400、90、0、0
f.如有必要,可按照以下步骤增大物体(如 "箱")的尺寸和位置:
iii.右键单击工作站树中的物体,选择 "选项"(或直接双击树中的物体),弹出 "物体详细信息 "面板
iv.单击 "更多选项➔应用缩放比例,然后在缩放比例中输入 "4.0"。
v.在名为 "相对于障碍物参照物的物体位置 "的面板中输入以下值,将箱移动到台面上:0, 0, 200, 0, 0, 0
5.创建目标:
a.选择程序➔ 教学目标
b.在测站树中选择新目标,然后选择 F2 将其重命名为 "启动目标
c.通过这样做来移动目标:
vi.右键单击工作站树中的目标,选择 "选项"(或按 F3),弹出 "启动目标 "面板。
vii.在目标位置相对于障碍物参考面板中输入以下值:500, 0, 0, 90, 0, 180
d.用同样的方法创建第二个目标,并将其重命名为 "终点目标"。使用与之前相同的方法,将其移动到以下位置:-500, 0, 0, 90, 0, 180
一项任务使用机器人所有工作空间的情况并不多见。在创建 PRM 地图时,限制机器人的关节极限通常是个好主意。这将加快生成地图的过程,并确保地图中的点位于最佳位置。
对于 6 轴机器人,最常受到限制的两个关节是
1.关节 1(基本关节)--限制该关节可阻止机器人向工作区两侧移动太远。
2.关节 3(肘关节)--限制该关节可阻止机器人在肘部向上和肘部向下配置之间切换。
使用以下程序更改关节限位:
1.右键单击工作站树中的机器人模型图标(例如 ABB IRB 2600-12/1.85),然后选择选项...,打开机器人面板。或者,双击工作站树中的机器人名称。
2.在关节轴点动部分,移动要限制的机器人关节的滑块(如 θ1 和 θ3),找到关节下限的位置。
3.双击关节轴点动内的任意关节下限。例如,如果 θ1的关节限值目前为-180,双击数字-180。这将弹出 "设置关节下限 "面板。
4.将关节下限设为 θ1 = -50 和 θ3 = -90。
5.更改关节限位,然后单击 "确定"。
6.使用与关节上限相同的过程,设置 θ1 = 50。
通过查看机器人的可触及工作区,可以看到这一变化。在机器人面板的 "工作空间 "部分选择 "显示当前工具 "选项,即可显示工作空间。它将只显示工作区中现在可以通过新关节限位到达的部分。
PRM 算法利用以下三个参数生成可到达位置的路线图:
1.样本数 - 地图由机器人可到达的工作区中随机放置的若干位置(样本)组成。这个数字决定了样本数。默认值为 100 个样本。
2.每个样本的边 - 算法试图将地图中的每个样本与其他一些样本连接起来。将两个样本连接在一起的线称为 "边",表示这两个位置之间的无碰撞路径。此属性表示每个样本创建边缘的最大数量。默认值为每个样本 25 条边。
3.机器人步长 (度) - 在检查潜在边是否无碰撞时,算法会在沿边每隔一定时间停下来检查是否有碰撞。这些间隔之间的距离由机器人步长决定。默认值为 4 度。
这三个参数决定了生成的路线图的详细程度。它们还会影响在构建阶段生成路线图所需的时间。
样本数越多,每个样本的边数越多,生成的路线图就越精细,生成时间也就越长。机器人步长越大,生成路线图的速度越快,但可能无法检测到潜在的碰撞。
使用默认值,通常可在 15 分钟内生成路线图,具体取决于工作区的设置和机器人的属性。
有关设置这些参数的最佳做法,请参阅本节末尾的提示。
运动规划器的 "构建阶段 "是通过以下流程实现的,该流程可生成机器人工作空间的路线图:
1.打开无碰撞运动规划器面板,方法是进入实用工具菜单➔ 无碰撞运动规划器➔ 创建无碰撞地图,或者点击 检查碰撞旁边的小箭头,然后选择创建无碰撞地图。
2.输入新参数或保留默认值。
3.单击 "更新地图 "生成路线图。
随后,PRM 算法将使用所选参数生成路线图。生成完成后,可以通过勾选显示地图(Display Map)箱来查看生成的路线图。单击 "显示样本",机器人将在工作区内的所有样本中移动。
当两个目标或程序链接在一起时,就会进入运动规划器的 "查询阶段"。
要链接两个目标,首先要在工作站树中选择它们。有两种选择和链接目标的方法:
1.按住 Ctrl 键:
a.左键单击要开始移动的目标(在示例中,目标名为 "开始目标")。
b.按住 CTRL 键。
c.左键点击目标(如 "结束目标)
d.右键点击两个目标中的任意一个,然后选择链接选定目标。或者,如果 "无碰撞运动规划器 "面板已打开,点击 "链接选定目标/程序 "按钮。
2.使用 Shift 键:
a.将两个目标一上一下地排列在测站树中,起始目标位于终止目标之上。使用鼠标右键拖放目标,可以在树中移动目标。拖放目标将显示一个菜单,用于选择目标的位置。
b.左键点击任一目标。
c.按住Shift 键。
d.左键点击另一个目标。
e.右键点击两个目标中的任意一个,然后选择链接选定目标。或者,如果 "无碰撞运动规划器 "面板已打开,点击 "链接选定目标/程序 "按钮。
这两种方法都将生成一个新程序,使用保存的路线图连接两个目标。要创建反方向的移动,请按相反的顺序选择目标,即使用 Ctrl 方法在开始目标之前选择结束目标,或使用 SHIFT 方法重新排列空间站树中的目标。
运动规划器还能以类似的方式将两个不同的程序连接在一起。这会在两个程序之间创建一条无碰撞路径,并创建一个新的主程序。
在焊接示例中,请使用以下程序创建两个虚拟程序:
1.创建 4 个目标,作为 "物体参考 "坐标系的子坐标系(右键单击工作站树中的 "物体参考",选中激活参考系)。然后通过选择程序➔ 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
3.创建第一个程序:
a.转到程序 ➔添加程序
b.将程序重命名为 "Left Weld"(左侧焊接),首先在站树中选择该程序,然后按 F2 或右键单击并选择重命名。
c.将以下目标添加为线性指令,首先在站树中选择目标,然后选择程序➔ 移动线性指令:起始目标,左点 1,左点 2,起始目标。
4.以同样的方式创建第二个名为 "右侧焊接 "的程序,这次添加以下目标:终点目标、右点 1、右点 2、终点目标。
请注意,这两个虚拟程序不包含激活/禁用焊接枪的命令。在真实程序中,必须包含这些命令。
要使用运动规划器连接任意两个程序,请使用以下流程:
1.使用上一节(链接目标)所述的两种方法中的任何一种选择这两个程序。
2.右键点击任一程序并选择链接所选程序。如果打开了无碰撞运动规划器面板,同样可以通过点击链接选定目标/程序来实现。
将创建一个名为 "MainSafe "的新程序,运行第一个程序,进行无碰撞移动,然后运行第二个程序。这个主程序可以像其他程序一样进行修改和重命名。
任何新目标都可以添加到 PRM 路线图中,而无需重新生成整个地图。这意味着,只有在工作区添加新物体或移动现有物体时,才需要完全重新生成路线图。
当一个新目标被添加到路线图中时,PRM 算法会尝试用一组新的边将其与路线图中已有的一些点连接起来。可以为新目标设置不同的默认边数,而不是构建初始路线图时所选择的边数。
新目标的最大边数可通过以下流程设置
1.打开无碰撞运动规划器面板,方法是进入实用工具菜单➔ 无碰撞运动规划器➔ 创建无碰撞地图,或者点击 检查碰撞旁边的小箭头,然后选择创建无碰撞地图。
2.在标有 "新样本边 "的箱中输入边的数量。默认值为 5。
在路线图中添加新目标有两种方法:
1.选择台站树中的目标。点击最高目标,按住 Shift 键,然后点击最低目标,可同时选择多个相邻目标。按住 Ctrl 键可以选择多个不相邻的目标。然后单击无碰撞运动规划器面板中的 "添加选定目标"。
2.只需使用前几节(链接目标和链接程序)所述的链接选定目标或链接选定程序的相同方法即可。任何尚未出现在路线图中的目标都会被自动添加。
运动规划器很容易使用,但有一些最佳实践可以改善编程工作流程。
提示:首先使用较小的参数创建第一个无碰撞地图。然后,根据需要使用更多样本进行改进。
构建阶段可能需要很长时间。在编程的早期阶段,当机器人单元的布局不断变化时,这会变得很麻烦。每次在工作区添加一个物体或移动一个物体,都需要重新生成整个路线图。
为了减少等待生成路线图的时间,一开始最好使用较小的参数。
例如,您通常可以在 10-15 秒内生成一张无碰撞地图:
1.样本数量10.
2.每个样本的边缘5.
3.机器人步长(度):4.0.
这样做不会产生最有效的无碰撞运动,但可以更快地改变机器人单元的设计。
当确定了机器人单元中所有物体的位置后,就可以生成更大的地图(例如,默认参数为 100、25、4.0)。
最后,在生成机器人程序之前,不妨先生成一个更大的路线图(例如参数为 500、50、2.0)。这将需要很长时间才能生成,但却能产生最有效的运动。
提示:使用合理的关节限制来约束机器人的工作空间。
设置机器人关节限位(如上一节 "约束关节限位 "所述)有双重好处。首先,在某些情况下,它可以加快构建阶段。其次,它能确保路线图中包含对机器人程序有用的位置。这一重要步骤很容易被遗忘。
正确定义碰撞图
碰撞检测在 2 个物体发生碰撞时触发。您可以在碰撞贴图设置中指定每个移动物体之间的相关性。减少交互次数(绿色复选标记)将加快碰撞检测速度。
提示:遵循快速碰撞检查最佳实践,更快地计算出无碰撞地图。
计算无碰撞路径所需的时间主要取决于检查碰撞所需的时间。因此,您应遵循碰撞检测部分所述的最佳实践,以加快碰撞检测速度。其中,您可以增加用于碰撞检测的机器人步长、约束关节限制或简化三维几何体,以加快碰撞检测的速度。
提示:偏移和扩大 3D 模型以创建安全体积。
术语 "避免碰撞 "意味着运动规划器在任何情况下都会避免碰撞。这在模拟环境中当然是正确的。然而,在现实世界中,如果机器人离物体太近,仍有可能与物体发生碰撞。这通常是因为模拟机器人与实际机器人之间存在细微差别。
这种碰撞的常见情况是,机器人在远离任务时 "夹 "到物体边缘。通常可以通过在程序中加入 "偏移量 "来避免这种情况。有关有效使用偏移量的更多信息,请参阅本博客文章。
小贴士在机器人最灵巧的区域进行操作。
并非机器人工作区的所有区域都是相同的。在工作区的某些区域,机器人的 "可达性 "要高于其他区域。在可达性高的区域,机器人可以从多个方向访问点。在可达性低的区域,机器人只能从一个或两个方向访问点。
有时,运动规划器会找不到工作区中两个目标之间的路径。通常情况下,只需增加路线图中的样本数量即可解决这一问题,但并非总是如此。
如果运动规划器持续无法连接目标,请确保任务位于机器人工作区中可达性最强的区域内。打开机器人面板(右键单击工作站树中的机器人并选择选项),然后在 "工作空间 "部分选择 "显示当前工具",即可查看机器人的工作空间。