RoboDK碰撞检测功能可帮助你在实际操作中预防碰撞。该功能可通过多种方式实现,例如:可视化碰撞检查、机器人加工项目的自动避障,或通过PRM算法生成无碰撞路径图来自动创建无碰撞程序。
本节涵盖以下主题:
●如何为仿真启用碰撞检查
●如何定义碰撞地图
●如何为机器加工项目启用自动碰撞检测与避障
●如何使用 PRM 算法自动创建无碰撞程序,实现目标点间或程序间的安全衔接
Important:RoboDK虚拟环境可能与实际场景存在差异。建议设置安全容差来可靠预防碰撞,例如加载简化放大的3D模型(专用于碰撞检测)。举例:可将主轴简化为立方体模型进行碰撞检测。
在菜单栏中选择:工具➔
安全检查程序是否发生碰撞的步骤:
1.右键单击当前的程序。
2.选择这个选项:检查路径和碰撞(Shift+F5)。该选项可快速检查路径是否可行(与检查路径 - F5 相同),然后验证是否存在碰撞。

Important:在菜单栏中选择:工具→选项→运动选项卡,取消勾选“当检测到碰撞时停止机器人”选项。
Tip:确保在RoboDK中准确建模机器人单元。同时建议将3D几何模型放大,以安全地预防碰撞。
Note:如果希望在检测到碰撞时仍能继续仿真程序,可进入工具➔选项➔运动,取消勾选"当检测到碰撞时停止机器人"选项。
可自定义任意物体间的碰撞检测关系。
选择工具➔
默认情况下,RoboDK 会检查站内所有移动物体之间的碰撞,包括所有机器人链接、物体和工具。作为例外,连续的机器人关节不会被检查碰撞,因为它们可能始终处于接触状态。
Tip:双击矩阵对角线上的单元格,可一键切换该物体与所有其他物体的碰撞检测状态
Tip:若碰撞检测导致仿真卡顿,可减少检测对象数量以降低CPU负载
碰撞检测速度受多重因素影响:
1.碰撞地图中的检查对数:碰撞地图中启用的检测对越少,速度越快。
2.碰撞检测的步长:碰撞步长可在工具➔ 选项➔运动菜单中设置。直线运动的步长以毫米为单位,关节运动的步长以度为单位。步长越大,检测越快,但精度会降低。
3.计算机算力:CPU 性能越强,或者线程数越多,检测越快。
4.3D模型复杂程度:曲面等精细几何结构会增加计算负荷,减少三角面片数量可提速
Tip:在工具-选项-CAD中调整STEP/IGES导入精度,降低模型细节层级。这将在你的 RoboDK 项目中创建更轻的物体。具有较轻物体的工作站将帮助你加快仿真和碰撞检查的速度。你还将获得更小的 RDK 文件。
优化建议:
1.优先选用STEP/IGES格式而非STL(性能更优)。
2.尽可能简化几何形状。
3.使用简化网格插件自动简化复杂几何体:https://robodk.com.cn/addin/cn/com.robodk.app.simplifymesh
4.开启边界框的预览(工具➔选项➔其他➔绘制边界框)检查模型分组合理性。
5.禁止使用工具➔选项➔显示中的"简化对象…"功能(会导致生成超大边界框)。
6.在环境中设置碰撞专用物体:复制物体并移除无法触及的表面,或导入几何形状更简单的版本(如凸壳)。仅将原始物体用于视觉目的,并将其排除在碰撞图之外。
7.通过API动态控制碰撞检测对象。
你可以为机器人加工项目启用自动避碰功能。RoboDK将自动旋转工具以寻找无碰撞路径。
Tip:机器人加工路径的碰撞检测可能需要较长时间计算。请务必合理缩小碰撞地图范围,以加速碰撞检测与避障过程。
请按照以下步骤为机器加工项目启用自动碰撞检查和防碰撞功能:
1.在菜单栏中选择:工具➔ 选项➔CAM选项卡
2.在默认参数区域勾选:允许自动避免碰撞

3.双击当前的机器加工项目、3D 打印项目、曲线跟踪项目或点跟踪项目。
4.勾选优化参数模块:避障:这将按照优化参数中的描述,通过围绕 Z 轴更换刀具方向,启用自动避免碰撞功能。

Important:此选项将通过绕刀具的Z轴旋转来自动避免碰撞。请确保未将刀具切削刃设置为与零件进行碰撞检测。如需检测刀柄与零件之间的碰撞,可能需要将主轴拆分为两个刀具(一个用于碰撞检测,另一个包含切削刃等额外可视化信息)。
运动规划功能可在机器人工作空间内自动生成无碰撞路径。在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:利用机器人高灵巧工作区。
并非机器人工作区的所有区域都是相同的。在工作区的某些区域,机器人的 "可达性 "要高于其他区域。在可达性高的区域,机器人可以从多个方向访问点。在可达性低的区域,机器人只能从一个或两个方向访问点。
有时,运动规划器会找不到工作区中两个目标之间的路径。通常情况下,只需增加路线图中的样本数量即可解决这一问题,但并非总是如此。
如果运动规划器持续无法连接目标,请确保任务位于机器人工作区中可达性最强的区域内。打开机器人面板(右键单击工作站树中的机器人并选择选项),然后在 "工作空间 "部分选择 "显示当前工具",即可查看机器人的工作空间。