了解 Mech-MSR 工程中的数据流

关于数据流

在Mech-MSR中,每个“步骤”表示一个算法处理单元,它接收输入,执行计算,并输出结果。用户可通过端口连接多个步骤形成数据流,逐步处理各种类型的数据,最终完成整个测量和检测任务。

连接端口时,必须关注两个要素:数据类型数据维度

data flow 0

数据类型

在Mech-MSR工程中,数据类型描述的是步骤之间数据传输的基本形式,例如Surface(表面数据)、Profile(轮廓线)、Shape3DList(三维几何特征)、NumberList(数值列表)等等。通常,连接端口的数据类型应相同,才能确保数据能够正确传递和处理。

单击此处,了解如何在Mech-MSR中查看端口数据类型

右键单击工程编辑区空白处,选择设置步骤端口显示选项,然后选择显示类型和名字只显示类型选项,端口上可显示数据类型。

端口的数据类型名称包含在一对<>符号中,例如:<Surface><Profile><NumberList><Shape3DList>

data flow 1

此外,通过显示的数据类型名称,你还可以获取以下信息:

  • 名称后缀-:表示可选输入项。例如,多数步骤的输入端口对齐参数组PoseList-)非必要输入,输入为空不会影响步骤运行。

  • 名称后缀[]:表示端口的声明维度信息。参考数据维度小节了解详情。

数据维度

在Mech-MSR工程中,数据维度表示数据的结构层级。

  • 端口声明维度

    表示端口预设的数据结构层级,即期望接收或输出的数据维度。

    单击此处,了解如何在Mech-MSR中查看端口声明维度

    数据类型仅显示类型名称,表示0维,在数据类型名称后每添加一对[]符号,表示增加一个数据维度。

    示例:

    • Surface:表示0维表面数据;

    • Surface []:表示1维表面数据;

    • Surface [][]:表示2维表面数据。

  • 实际输入/输出数据维度

    表示步骤实际运行时,通过端口接收或输出的数据的维度,可能大于、等于或小于声明维度。查看循环深度了解如何根据步骤运行逻辑计算实际输入/输出数据维度。

    在Mech-MSR工程中,步骤可以接收和输出与端口声明维度不同的数据,但步骤不一定能顺利运行,或者运行结果不一定能满足预期。

框架循环

当实际输入数据维度大于端口声明维度,步骤运行时会根据端口声明维度对输入数据进行逐层循环处理。步骤的这一循环运行过程即为框架循环。

若步骤需要进行框架循环,步骤卡片右下角会出现 loop icon 图标,图标上的数字表示循环层数(层数为1时不显示数字) ;若当前框架循环不可行,则出现 loop failed icon 图标。

loop status
  • 当步骤的各个输入端口接收的数据的维度与端口声明维度相同时,步骤会正常运行,不进行框架循环。

  • 当出现正常循环图标时,说明系统已判断该步骤可正常运行,一般无需进行任何处理。

  • 即使框架循环成功,步骤运行结果仍可能与预期不符。此时,可通过升维和降维复用输入等操作进一步调整数据结构,在确保框架运行顺利的前提下,尝试获取期望的结果。

循环深度

循环深度表示步骤处理某端口数据时需要循环运行的层数,由端口上方的循环图标 loop icon 表示,图标上的数字表示循环层数(层数为1时不显示数字)。

循环深度的计算公式:循环深度 = 实际输入数据的维度 - 端口声明维度。由此,可推算出数据的实际维度。

当步骤的多个端口均有输入时,需要确保各个端口数据的循环深度相同,否则步骤无法运行。
示例

如下图所示,“定位表面特征点”步骤的输入端口表面数据处出现 loop level 2 icon 图标,表示该端口数据需要步骤逐层循环处理,循环深度为2。已知端口声明维度为0,则可得出实际输入数据的维度为2。

data flow 2

升维和降维

若多个端口数据的循环深度不同,一般可对某一端口的数据进行切片升维合并降维处理,实现多个端口数据的循环深度一致。

单击此处,查看功能入口

右键单击数据流,然后选择切片升维合并降维选项,改变数据维度。

data flow 3

切片升维

切片升维通过对数据进行切片操作,将数据提升一个维度。数据升维后,端口上方会显示 level up icon 图标。

  • 输入数据不是列表(List)时,无法通过切片操作升维。例如:Surface数据中通常仅包含一张图像,无法切片。

  • 循环深度不一致时,若端口数据无法升维,可尝试使用复用输入来解决问题。

level up

合并降维

合并降维通过合并操作将多个数据合并,将数据降低一个维度。数据降维后,端口上方会显示 level down icon 图标。

  • 零维数据无法再降维;输入数据不是列表(List)时,也无法通过合并操作降维。

  • 循环深度不一致时,若端口数据无法降维,可尝试使用复用输入来解决问题。

level down

复用输入

若端口数据无法或者没有必要进行升维或降维操作,可选择步骤循环运行时反复使用维度较低的端口数据(即复用输入),从而确保步骤能正常运行。被复用的端口上方会显示 reuse input icon 图标。

单击此处,查看功能入口

在步骤的参数配置区,展开运行标志,并勾选复用输入选项。

data flow 4
  • 若使用复用输入,步骤运行时会自动判断哪些端口的数据需要复用。

  • 端口数据的循环深度相同,但数据个数不相同,同样也会导致步骤无法正常运行。此时,可以通过复用输入来解决问题。

示例

试比较同样的输入,经过切片升维、复用输入等操作后,可产生完全不一样的结果:

是否框架循环

步骤输入

  • 表面数据:零维,包含圆孔的图像数据。

  • 对齐参数组:零维,包含6个圆孔的位置信息。

操作

  • 对“对齐参数组”数据流进行切片升维操作,该输入由零维变成一维。

  • 为步骤勾选复用输入

运行图示

complex demo 0

complex demo 2

运行结果

complex demo 1

complex demo 3

自动升维

当实际输入数据维度小于端口声明维度,系统会对输入数据进行自动升维操作,确保输入数据满足端口声明维度要求。若某一端口数据被自动升维,该端口上方会显示 auto level up icon 图标,图标上的数字表示提升的维数(提升1个维度时不显示数字)。

当前仅数据提取合并数据步骤可以通过参数配置区的维度参数改变端口的声明维度,若出现实际输入数据维度小于端口声明维度的情况,系统则会对输入数据进行自动升维。

autu level up demo
与切片升维不同,自动升维通过整体打包的方式提升数据维度。

顶层维度

接受所有参数步骤的输入端口没有固定的声明维度,可以直接接收上游数据,并将该数据的维度作为端口声明维度。这种情况被称为顶层维度,端口上方会显示 top level icon 图标。此时,端口数据类型会显示接收的数据维度。

top level demo
使用接受所有参数步骤也可快速获取数据维度。

错误排查

数据循环深度不一致

问题现象:

运行工程或步骤,弹窗提示某步骤“数据循环深度不一致,…​…​”。

解决方案:

  • 复用输入:若任意一个端口数据不是列表,尝试在步骤参数栏的“运行标志”下勾选复用输入

  • 降低维度:若循环深度较高的端口数据为数组(列表),右键单击数据流连线,选择合并降维降低数据维度,从而保证端口数据的循环深度一致。

  • 提升维度:若循环深度较低的端口数据为数组(列表),右键单击数据流连线,选择切片升维提高数据维度,从而保证端口数据的循环深度一致。

  • 检查各个端口的输入,确保输入数据正确。

端口数据个数不一致

问题现象:

运行工程或步骤,弹窗提示某步骤“端口数据个数不一致,…​…​”。

解决方案:

  • 若个数较少的端口数据不是列表,在步骤参数栏的“运行标志”下勾选复用输入

  • 若个数较少的端口数据是列表,右键单击数据流连线,选择合并降维降低数据维度,然后在步骤参数栏的“运行标志”下勾选复用输入

  • 若以上方法仍无法解决问题,可尝试使用数据提取步骤或其他有效方法,确保端口数据个数一致。

无法通过切片操作增加维度

问题现象:

单击数据流,然后从右键菜单中选择切片升维,运行步骤或工程后,弹窗提示“无法通过切片操作增加维度,…​…​”。

可能原因:

  • 该端口的输入数据不是列表。

  • 升维后维度超过步骤处理能力上限。

解决方案:

取消勾选切片升维选项。若存在循环深度不一致问题,可参考数据循环深度不一致问题寻求其他解决方案。如果问题仍未解决,联系梅卡曼德技术支持。

无法通过合并操作降低维度

问题现象:

单击数据流,然后从右键菜单中选择合并降维,运行步骤或工程后,弹窗提示“无法通过合并操作降低维度,…​…​”。

可能原因:

  • 该端口的输入数据已为0维,无法再降维。

  • 该端口的输入数据不是列表,无法降维。

解决方案:

取消勾选合并降维选项。若存在循环深度不一致问题,可参考数据循环深度不一致问题寻求其他解决方案。如果问题仍未解决,联系梅卡曼德技术支持。

该页面是否有帮助?

可以通过以下方式反馈意见:

我们重视您的隐私

我们使用 cookie 为您在我们的网站上提供最佳体验。继续使用该网站即表示您同意使用 cookie。如果您拒绝,将使用一个单独的 cookie 来确保您在访问本网站时不会被跟踪或记住。