运动规划功能可在机器人工作空间内自动生成无碰撞路径。在RoboDK中,该功能采用“概率路线图”(Probabilistic Roadmaps, PRM)算法实现。
首先,绘制机器人工作空间地图。然后,在机器人编程过程中,利用该地图在编程时实时计算无碰撞轨迹。。
PRM 算法具有以下两个特性:
●概率性:在构型空间(机器人所有可能运动位置的集合)中随机采样点,而非均匀覆盖整个空间,因此计算速度显著快于传统方法。
●路线图:首先生成全局工作空间的拓扑路线图,再基于此规划路径。
这篇博文有关机器人运动规划的介绍,请参阅本博文。
Video:介绍RoboDK的无碰撞运动规划功能https://www.youtube.com/watch?v=KPR2aOZn924&list=PLjiA6TvRACQd8pL0EnE9Djc_SCH7wxxXl&index=10
在RoboDK中,PRM运动规划分为两个独立阶段,这种分离设计显著提升了算法效率。速度较慢的 "构建阶段 "只需执行一次,而速度较快的 "查询阶段 "则可重复精度多次:
这两个阶段是
关于RoboDK PRM算法原理详见本篇博文。
本节将以焊接工作站为例,演示如何在RoboDK程序中应用这两个阶段。
要使用运动规划器,必须有一个机器人,同时配备工具。工作空间中至少需要一个物体,否则无需进行碰撞规避。建议至少设置两个目标点作为生成的避障路径的起点和终点位置。
示例焊接设置可通过以下流程创建:
1.选择一个机器人:
a.在菜单栏中选择:文件➔
b.使用筛选器查找机器人。例如,选择 ABB IRB 2600-12/1.85(选择以下筛选条件:ABB(品牌)、10-20 千克负载和1500-2000 毫米触距
c.选择 "下载",双击文件,机器人会显示在RoboDK工作站中
2.选择工具:
a.从同一在线资源库中,按类型筛选➔工具(先点击:重置筛选器,删除之前的筛选器)
b.下载工具,如 " Weld Gun"
c.双击文件,工具会自动连接到机器人上
d.加载工具后,可关闭在线资源库
3.添加参考坐标系:
a.选择程序➔
b.在工作站中选择新的参考坐标系,按 F2 将其重命名为 "Obstacle Reference”
4.添加一些物体:
a.在菜单栏中选择:文件➔
b.导入一个物体,如 "Object Table.wrl"。
c.将物体拖放到工作站中的 "Obstacle Reference"内。
d.导入另一个物体,如"box.stl",并将其也拖到Obstacle Reference内。
e.通过以下操作将桌子移到机器人面前:
i.右键单击Obstacle Reference,选择 "选项…"(或直接双击Obstacle Reference),弹出坐标详情面板
ii.在名为 "参考系的位置相对于"的面板中输入以下值:1000、0、400、90、0、0

f.必要的话,可按照以下步骤放大 "箱"的尺寸和位置:
iii.右键单击工作站树中的物体,选择 "选项"(或直接双击box),弹出 "物体详情"面板
iv.单击 "更多选项➔应用缩放比例,然后在缩放比例中输入 "4.0"。
v.在名为 "物体位置相对于 "的面板中输入以下值,将箱移动到台面上:0, 0, 200, 0, 0, 0

5.创建目标:
a.在主菜单栏中选择:程序➔
b.在工作站中选择该目标,然后按F2键命名为 "start target
c.然后这样做来移动目标:
vi.右键单击工作站树中start target目标,选择 "选项"(或按 F3),弹出 "start target "面板。
vii.在目标点位置相对于Obstacle Reference面板中输入以下值:500, 0, 0, 90, 0, 180
d.用同样的方法创建第二个目标,并将其重命名为 "end target"。使用与之前相同的方法,将其移动到以下位置:-500, 0, 0, 90, 0, 180

在创建PRM路线图时,通常不需要使用机器人的全部工作空间。通过限制关节运动范围,可显著提升建图效率,并确保采样点集中在任务相关区域。
6轴机器人最常限制的两个关节:
1.关节 1(底座旋转关节)--限制其范围可防止机器人过度偏离工作区两侧。
2.关节 3(肘关节)--限制其范围可避免肘部在"向上"和"向下"配置间切换。
操作步骤:
1.右键点击工作站树中的机器人模型(如ABB IRB 2600-12/1.85),选择 选项...(或直接双击机器人名称)
2.在 手动调节关节轴 区域,拖动需要限制关节的滑块(如θ₁和θ₃),找到合适的下限位置
3.双击关节下限数值(如θ₁默认值-180),在弹出的设置机器人关节-设置关节下限 面板中调整

4.将关节下限设为θ1 = -50 和θ3 = -90。
5.更改关节限位,然后单击 "确定"。
6.使用与关节上限相同的过程,设置θ1 = 50。

这一变化可通过查看机器人的可达工作空间来观察。在机器人面板的“工作空间”部分选择“显示当前工具”,即可展示工作空间。此时仅会显示新关节限制下机器人可到达的工作区域。
PRM 算法通过以下三个参数生成可到达位置的路线图:
1.样本数 - 在机器人可达工作空间内随机生成的位姿点数量,默认值100个。
2.每个样本的边 - 算法尝试将每个采样点与其他点连接,形成无碰撞路径(称为“边”),默认每点最多25条边。
3.机器人步长 (度) - 检测边是否无碰撞时,算法按固定间隔(默认4°)分段验证碰撞。这些间隔之间的距离由机器人步长决定。默认值为 4 度。
这三个参数共同决定路线图的精细度和计算耗时,它们还会影响在构建阶段生成路线图所需的时间。
样本数越多,每个样本的边数越多,路线图更精细,但计算时间更长。机器人步长越大,生成路线图的速度越快,建图更快,但可能漏检碰撞。
默认参数下约15分钟(具体取决于工作空间和机器人型号),具体取决于工作区的设置和机器人的属性。
有关设置这些参数的最佳做法,请参阅本节末尾的Tip。
运动规划器的 "构建阶段 "是通过以下流程实现的,该流程可生成机器人工作空间的路线图:
1.打开面板:无碰撞运动规划器,通过实用工具菜单➔ Collision-free motion planner➔Create collision-free map,或者点击

2.输入新参数或保留默认值。
3.单击"Update Map"生成路线图。
随后,PRM 算法将使用所选参数生成路线图。生成完成后,可以通过勾选Display Map查看生成好的路线图。单击"Display Samples",机器人将在工作区内的所有样本中移动。

当两个目标点或程序相互链接时,系统将启动运动规划器的"查询阶段"。
链接两个目标点的操作方式:
1.方法一:按住 Ctrl 键:
a.左键单击运动起始目标点(示例中名为"Start Target"的点)。
b.按住 Ctrl键。
c.左键单击目标位置点(如"End Target")
d.右键单击任意一个目标点,选择:Link selected targets。若已打开面板:Collision-free motion planner,也可直接点击按钮:Link seclected targets/programs
2.方法二:使用Shift键:
a.在工作站树状图中将两个目标点上下排列:起始点在上,终点在下(通过右键拖拽目标点可调整位置,释放时会弹出位置确认菜单)

b.左键点击一个目标。
c.按住Shift 键。
d.左键点击另一个目标。
e.右键点击两个目标中的任意一个,然后选择"Link selected targets"。或者,如果 "Collision-free motion planner "面板已打开,点击 "Link seclected targets/programs "按钮。
f.右键单击任意一个目标点选择:Link selected targets,或通过面板:Collision-free motion planner的按钮Link seclected targets/programs,点击它完成操作。
两种方法都将基于已保存的路径图生成连接目标点的新程序。若要创建反向运动,只需调换选择顺序:Ctrl键法:先选"End Target"再选"Start Target"。Shift键法:在树状图中调换两个目标点的上下位置
PRM运动规划器可通过类似方式链接两个独立程序,生成包含无碰撞过渡路径的新主程序。
以下以焊接为例演示操作流程:
1.创建4个子目标点,作为 "物体参考 "坐标系的子坐标系(右键单击工作站树中的 "物体参考",选中启用参考系)。然后通过选择程序➔ 
2.在工作站中依次选择每个目标,然后输入以下名称和数值。要更改目标名称,请按 F2 键或右键单击目标并选择重命名。要更改目标值,请按 F3 键弹出目标面板,或右键单击目标并选择选项。在 "目标点位置相对于 "输入以下数值:
a.名称:"Left Point 1 "值: 200、200、0、90、0、-135
b.名称:" Left Point 2"值: 200、-200、0、90、0、-135
c.名称:" Left Point 3"值:-200, 200, 0, 90, 0, 135
d.名称:" Left Point 4 "值:-200, -200, 0, 90, 0, 135

3.创建第一个程序:
a.转到程序 ➔
b.将程序重命名为 "Left Weld"(左侧焊接),首先在站树中选择该程序,然后按 F2 或右键单击并选择重命名。
c.将以下目标添加为线性指令,首先在站树中选择目标,然后选择程序➔

4.以同样的方式创建第二个名为 "Right Weld "的程序,这次添加以下目标:end target、left point 2、left point 2、end target。

请注意,这两个示例程序并未包含控制焊枪启停的指令。在实际应用中,必须添加这些命令。
要使用运动规划器连接任意两个程序,请使用以下流程:
1.使用上一节(链接目标)所述的两种方法中的任何一种选择这两个程序。
2.右键点击任一程序并选择Link selected programs。如果打开了collision-free motion planner面板,同样可以通过点击Link selected targets/programs实现。
此时会自动生成一个名为"主程序"的新程序,运行第一个程序,进行无碰撞移动,然后运行第二个程序。这个主程序可以像其他程序一样进行修改和重命名。
任何新目标都可以被添加到PRM路线图中,而无需重新生成整个地图。这意味着只有当工作空间中添加了新物体或现有物体被移动时,才需要完全重新生成路线图。
当新目标被添加到路线图中时,PRM算法会尝试通过一组新边将其与路线图中已有的若干点进行连接。可为新目标设置不同于初始路线图构建时所选边数的默认连接边数。
可以通过以下流程设置新目标的最大边数:
1.打开collision-free motion planner面板,通过实用程序➔ Collision-free motion planner➔ Create collision-free map,或者点击
2.在空格:New sample edges,输入边的数量。默认值为 5。
在路线图中添加新目标有两种方法:
1.选择工作站中的目标。鼠标点在最上面的目标,然后按住Shift 键,最后点在最后一个目标,这样可以同时选择多个目标。按住Ctrl 键也可以完成同样效果。然后单击Collision-free motion planner面板中的 "Add selected targets"。

2.只需使用前几节(目标点链接、程序链接)所述的链接选定目标或链接选定程序(Link selected targets/programs)的相同方法即可。任何尚未出现在路线图中的目标都会被自动添加。
PRM运动规划器虽易用,但遵循以下技巧可显著提升编程效率:
Tip:首先使用较小的参数创建第一个无碰撞地图。然后,待布局确定后再优化。
构建阶段可能需要很长时间。在编程的早期阶段,当机器人单元的布局不断变化时,这会变得很麻烦。每次在工作区添加一个物体或移动一个物体,都需要重新生成整个路线图。
为了减少等待生成路线图的时间,一开始最好使用较小的参数。
例如,你通常可以在 10-15 秒内生成一张无碰撞地图,推荐初始参数是:
1.样本数量10.
2.每个样本的边缘5.
3.机器人步长(度):4.0.
这样做不会产生最有效的无碰撞运动,但可以更快地改变机器人单元的设计。
当确定了机器人单元中所有物体的位置后,就可以生成更大的地图,最终精细参数(布局定型后)(例如,默认参数为 100、25、4.0)。

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

Tip:使用合理的关节上下限来约束机器人的工作空间。
设置机器人关节限位(如前面关节限制约束所述)有双重好处。首先,在某些情况下,它可以加快构建阶段。其次,它能确保路线图中包含对机器人程序有用的位置。这一重要步骤很容易被遗忘。
正确定义碰撞地图
当两个物体发生碰撞时,会触发碰撞检测。你可以在碰撞地图设置中指定每个运动物体之间的关联关系。减少交互次数(绿色勾选标记)将加快碰撞检测速度。
Tip:遵循快速碰撞检测准则(如增大关节步长、限制关节范围、简化3D模型)
计算无碰撞路径所需的时间主要取决于检查碰撞所需的时间。因此,你应遵循碰撞检测部分所述的例子,以加快碰撞检测速度。其中,你可以增加用于碰撞检测的机器人步长、约束关节限制或简化三维几何体,以加快碰撞检测的速度。
Tip:为3D模型添加安全偏移量,模拟实际中的机械公差。
术语 "避免碰撞 "意味着运动规划在任何情况下都会避免碰撞。这在仿真环境中当然是正确的。然而,在现实世界中,如果机器人离物体太近,仍有可能与物体发生碰撞。这通常是因为仿真机器人与实际机器人之间存在细微差别。
这种碰撞的常见情况是,机器人在远离任务时 "夹 "到物体边缘。通常可以通过在程序中加入 "偏移量 "来避免这种情况。有关有效使用偏移量的更多信息,请参阅本博客文章。
Tip:利用机器人高灵巧工作区。
并非机器人工作区的所有区域都是相同的。在工作区的某些区域,机器人的 "可达性 "要高于其他区域。在可达性高的区域,机器人可以从多个方向访问点。在可达性低的区域,机器人只能从一个或两个方向访问点。
有时,运动规划器会找不到工作区中两个目标之间的路径。通常情况下,只需增加路线图中的样本数量即可解决这一问题,但并非总是如此。
如果运动规划器持续无法连接目标,请确保任务位于机器人工作区中可达性最强的区域内。打开机器人面板(右键单击工作站树中的机器人并选择选项),然后在 "工作空间 "部分选择 "显示当前工具",即可查看机器人的工作空间。