Mech-MSR 프로젝트의 데이터 흐름

데이터 흐름이란?

Mech-MSR에서 각 "스텝"은 입력을 받아 계산을 수행하고 결과를 출력하는 알고리즘 처리 단위입니다. 사용자는 포트를 통해 여러 스텝을 연결하여, 다양한 데이터를 순차적으로 처리하는 데이터 흐름을 구성할 수 있으며, 이를 통해 전체 측정 및 검사 작업을 수행할 수 있습니다.

포트를 연결할 때는 데이터 유형데이터 차원 두 가지를 고려해야 합니다.

data flow 0

데이터 유형

Mech-MSR 프로젝트에서 데이터 유형은 스텝(Step) 간에 주고받는 데이터의 기본 형식을 의미합니다.
예를 들어, Surface(표면 데이터), Profile(프로파일 데이터), Shape3DList(3D 기하학적 특징), NumberList(숫자 리스트) 등이 있습니다.
일반적으로 포트를 연결할 때는 데이터 유형이 서로 일치해야 정확한 데이터 전송 및 처리가 가능합니다.

Mech-MSR에서 포트의 데이터 유형을 확인하는 방법을 알아보려면 여기를 클릭하세요

프로젝트 편집 구역의 빈 공간을 마우스 오른쪽 버튼으로 클릭하고 '선택한 스텝 포트 정보를 표시하도록 설정'을 선택한 다음, '유형 및 이름을 표시하기' 또는 '유형만 표시'를 선택합니다. 그러면 포트에 데이터 유형이 표시됩니다.

포트 데이터 유형의 이름은 <Surface>, <Profile>, <NumberList>, <Shape3DList> 와 같이 <> 화살 괄호로 묶습니다.

data flow 1

또한, 표시되는 데이터 유형 이름은 다음 정보를 제공합니다.

  • 접미사 - : 선택 입력을 의미합니다. 예를 들어, 많은 스텝에는PoseList-와 같은 정렬 파라미터 그룹 입력 포트가 있지만, 이는 선택사항이므로 비워두어도 스텝 실행에 영향을 주지 않습니다.

  • 접미사 [] : 데이터 차원을 나타냅니다. 자세한 내용은 데이터 차원 섹션을 참고하세요.

데이터 차원

Mech-MSR 프로젝트에서 데이터 차원은 데이터의 구조적 레벨을 의미합니다.

  • 포트 선언 차원 (Port declared dimensions)

    각 포트가 사전에 정의한 데이터 구조의 레벨을 의미합니다. 즉, 해당 포트에서 수신하거나 출력될 것으로 예상되는 데이터의 차원을 나타냅니다.

    Mech-MSR에서 포트 선언 차원을 확인하는 방법을 알아보려면 여기를 클릭하세요

    데이터 유형 이름만 있는 경우, 0차원 데이터를 의미합니다. 데이터 유형 뒤에 대괄호([])가 하나씩 추가될수록 차원이 1씩 증가합니다.

    예시:

    • Surface : 0차원 표면 데이터

    • Surface [] : 1차원 표면 데이터

    • Surface [][] : 2차원 표면 데이터

  • 실제 입력/출력 데이터 차원

    스텝 실행 중 포트를 통해 실제로 수신되거나 출력되는 데이터의 차원을 의미합니다.
    실제 데이터 차원은 선언된 차원보다 클 수도, 같을 수도, 작을 수도 있습니다. 스텝의 실행 방식에 따라 실제 입력/출력 데이터의 차원이 어떻게 결정되는지에 대한 자세한 내용은 루프 깊이 섹션을 참고하세요.

    Mech-MSR 프로젝트에서 스텝은 선언된 차원과 다른 차원의 데이터를 수신하거나 출력할 수 있습니다. 그러나 차원 불일치가 처리되지 않으면, 스텝이 정상적으로 실행되지 않거나 출력 결과가 예상과 다를 수 있습니다.

프레임워크 루프

실제 입력 데이터 크기가 포트 선언 차원보다 클 경우, 스텝은 선언된 크기에 맞춰 입력 데이터를 단계별로 처리합니다. 이를 프레임워크 루프(framework loop)라고 합니다.

스텝이 프레임워크 루프 모드로 전환되면 스텝 카드 오른쪽 하단에 loop icon 아이콘이 나타납니다. 아이콘 내 숫자는 루프 깊이(루프 단계 수)를 의미하며, 깊이가 1일 경우 숫자는 표시되지 않습니다. 프레임워크 루프 구성이 잘못되었거나 실행할 수 없으면 loop failed icon 아이콘이 표시됩니다.

loop status
  • 각 입력 포트에서 받은 데이터 크기가 선언된 크기와 일치하면, 스텝은 프레임워크 루프 없이 정상 실행됩니다.

  • 루프 아이콘이 표시되면 시스템이 해당 스텝을 정상적으로 실행할 수 있음을 의미하므로, 일반적으로 별도의 조치는 필요하지 않습니다.

  • 하지만 루프가 성공적으로 실행되더라도 스텝 결과가 기대와 다를 수 있습니다. 이 경우 데이터 차원을 조절하거나 입력을 재사용하는 등 구조를 변경하여 원하는 결과가 나오도록 할 수 있습니다.

루프 깊이

루프 깊이(loop depth)는 스텝이 포트에서 데이터를 처리하기 위해 반복하는 횟수, 즉 반복 레벨 수를 의미합니다. 포트 위에 loop icon 아이콘이 표시되며, 숫자는 루프 깊이를 나타냅니다. (깊이가 1일 땐 숫자가 표시되지 않습니다.)

루프 깊이 계산 공식:
루프 깊이 = 실제 데이터 차원 - 포트 선언 차원. 이 공식을 통해 입력 데이터의 실제 차원을 추정할 수 있습니다.

스텝의 여러 포트에 입력이 있는 경우, 모든 포트의 루프 깊이는 동일해야 합니다 . 그렇지 않으면 스텝을 실행할 수 없습니다.
예시

아래 그림에서 확인할 수 있듯, '표면의 특징점 위치 지정' 스텝의 표면 데이터 입력 포트에 loop level 2 icon 아이콘이 표시되어 있습니다. 이는 이 포트 데이터를 처리하기 위해 스텝이 두 단계의 루프를 수행해야 함을 의미하며, 루프 깊이는 2입니다. 포트 선언 차원이 0이므로, 입력 데이터의 실제 차원은 2로 추론할 수 있습니다.

data flow 2

차원 증가/차원 감소

여러 포트의 데이터 루프 깊이가 일치하지 않을 경우, 일반적으로 슬라이싱으로 차원 증가하거나 병합하여 차원 감소를 통해 포트의 데이터를 조정하여 모든 포트의 루프 깊이를 맞춥니다.

해당 기능이 인터페이스에서 어디에 있는지 확인하려면 여기를 클릭하세요

데이터 차원을 수정하려면, 데이터 흐름을 마우스 오른쪽 버튼으로 클릭한 후 다음 슬라이싱으로 레벨 증가병합하여 레벨 감소 옵션을을 선택합니다.

data flow 3

슬라이싱으로 레벨 증가

이 작업은 슬라이싱 연산(slicing operation)을 통해 데이터의 차원을 하나 증가시키는 것입니다. 차원이 증가하면, 포트 위에 level up icon 아이콘이 표시됩니다.

  • 입력 데이터가 리스트(List) 형태가 아니면 슬라이싱을 통해 차원을 늘릴 수 없습니다. 예를 들어, Surface 유형의 데이터는 일반적으로 단일 이미지만 포함하므로 슬라이싱이 불가능합니다.

  • 루프 깊이가 서로 다르지만 슬라이싱으로 해결할 수 없는 상황에서는,
    입력 재사용(Reuse Input) 기능을 사용해 문제를 해결하는 것을 고려하세요.

level up

병합하여 레벨 감소

이 작업은 여러 데이터 요소를 하나로 결합하는 병합(Merge) 작업을 통해 데이터의 차원을 하나 줄이는 기능입니다. 차원이 감소되면, 포트 위에 level down icon 아이콘이 표시됩니다.

  • 0차원 데이터는 더 이상 차원을 줄일 수 없습니다. 또한, 입력 데이터가 리스트(List) 형식이 아닌 경우에도 병합을 통해 차원을 줄일 수 없습니다.

  • 루프 깊이가 서로 다르지만 차원을 줄일 수 없는 상황에서는, 입력(Reuse Input) 재사용 기능을 사용해 문제를 해결하는 것을 고려하세요.

level down

입력 재사용

포트의 데이터 차원을 증가/감소할 수 없거나 그럴 필요가 없는 경우, 스텝 실행 중에 하위 차원 입력을 재사용하도록 설정할 수 있습니다. 이를 입력 재사용이라고 하며, 낮은 차원의 데이터를 반복적으로 사용하여 스텝이 정상적으로 실행되도록 도와줍니다. 입력 재사용이 활성화되면, 해당 포트 위에는 reuse input icon 아이콘이 표시됩니다.

해당 기능이 인터페이스에서 어디에 있는지 확인하려면 여기를 클릭하세요

스텝의 파라미터 구성 패널에서 실행 플래그를 확장하고 입력 재사용 옵션을 선택합니다.

data flow 4
  • 입력 재사용을 선택하면, 스텝은 실행 중에 어떤 포트의 데이터를 재사용할지 자동으로 결정합니다.

  • 모든 포트의 루프 깊이가 동일하더라도, 데이터 개수가 일치하지 않으면 스텝 실행에 문제가 발생할 수 있습니다. 이러한 경우에도 입력 재사용 기능을 사용하여 문제를 해결할 수 있습니다.

예시

차원 증가나 입력 재사용을 적용하기 전후에는 같은 입력이라도 처리 결과가 크게 달라질 수 있습니다.

프레임워크 루프?

No

Yes

스텝 입력

  • 표면 데이터 : 0차원, 홀이 있는 이미지 데이터입니다.

  • 정렬 파라미터 그룹 : 0차원, 6개 홀의 좌표를 포함합니다.

작업

없음

스텝 실행 그림

complex demo 0

complex demo 2

스텝 실행 결과

complex demo 1

complex demo 3

자동 차원 증가

입력의 실제 데이터 차원이 포트 선언 차원보다 작으면, 시스템은 포트 요구 사항에 맞게 자동으로 차원을 늘립니다. 이 경우 포트 위에 auto level up icon 아이콘이 표시되며, 아이콘에는 증가된 차원의 수가 나타납니다(차원이 1개 증가한 경우 숫자는 표시되지 않습니다).

현재는 데이터 추출데이터 병합 스텝에서만 파라미터 구성 패널의 차원 파라미터를 통해 포트의 선언된 크기를 수정할 수 있습니다. 입력 데이터의 실제 차원이 포트 선언 차원보다 작으면 시스템이 자동으로 입력 크기를 늘립니다.

autu level up demo
슬라이싱을 통한 차원 증가와 달리, 자동 차원 증가는 데이터를 패킹하여 데이터 차원을 증가시킵니다.

최상위 차원

모든 파라미터를 받아들이기 스텝의 입력 포트에는 고정된 선언 차원이 없습니다. 대신, upstream에서 전달된 데이터를 그대로 받아들이며, 그 데이터의 차원을 포트 선언 차원으로 자동 채택합니다. 이를 최상위 차원(top-level dimensions)이라고 하며, 포트 위에 top level icon 아이콘이 표시됩니다. 포트의 데이터 유형은 수신된 데이터의 실제 차원을 반영합니다.

top level demo
모든 파라미터를 받아들이기 스텝을 통해 빠르게 테이터 차원을 확인할 수 있습니다.

오류 분석

루프 깊이 불일치

문제 증상

프로젝트나 특정 스텝을 실행할 때 "루프 깊이 불일치 : …​…​"라는 팝업창이 나타났습니다.

해결 방법

  • 입력 재사용 : 포트에 입력된 데이터가 배열(List)이 아닌 경우, 파라미터 패널에서 입력 재사용 옵션을 선택합니다.

  • 차원 증가 : 더 높은 루프 깊이가 필요한 포트 데이터가 배열(List)인 경우, 데이터 흐름 연결을 마우스 오른쪽 버튼으로 클릭하고 '병합하여 레벨 감소'를 선택하여 데이터 차원을 줄이고 루프 깊이를 일치시킵니다.

  • 차원 증가 : 더 낮은 루프 깊이가 필요한 포트 데이터가 배열(List)인 경우, 데이터 흐름 연결을 마우스 오른쪽 버튼으로 클릭하고 '슬라이싱으로 레벨 증가'를 선택하여 데이터 차원을 늘리고 루프 깊이를 일치시킵니다.

  • 정확성을 보장하기 위해 각 포트의 입력 데이터를 검사합니다.

포트 데이터 개수 불일치

문제 증상

프로젝트나 특정 스텝을 실행할 때 "포트 데이터 개수 불일치: …​…​"라는 팝업창이 나타났습니다.

해결 방법

  • 입력 재사용 : 포트에 연결된 데이터가 배열(List)이 아니고, 다른 포트보다 데이터 수가 적은 경우, 파라미터 패널의 '실행 플래그' 항목에서 입력 재사용을 선택하세요.

  • 차원 축소 후 입력 재사용 : 포트에 연결된 데이터가 배열(List)이지만 데이터 수가 적은 경우에는, 데이터 흐름선을 마우스 오른쪽 버튼으로 클릭하여 '병합하여 레벨 감소'를 선택해 차원을 줄인 다음, '실행 플래그’에서 입력 재사용을 선택합니다.

  • 문제가 지속되면 데이터 추출 스텝이나 다른 방법을 사용하여 포트 데이터 수를 일치시키세요.

슬라이싱을 통해 차원을 증가할 수 없음

문제 증상

데이터 흐름을 우클릭하고 '슬라이싱으로 레벨 증가' 옵션을 선택한 후, 스텝 또는 프로젝트 실행 시 "슬라이싱을 통해 차원을 늘릴 수 없습니다: …​…​"라는 팝업이 표시됩니다.

가능한 원인

  • 이 포트의 입력 데이터는 리스트(List)가 아닙니다.

  • 차원 증가 후의 차원이 스텝의 최대 지원 차원을 초과합니다.

해결 방법

슬라이싱으로 레벨 증가 옵션을 선택 취소합니다. 루프 깊이 불일치가 있는 경우, 루프 깊이 불일치 문제를 참조하여 다른 해결 방법을 찾아보세요. 문제가 지속될 경우, Mech-Mind Robotics 기술 지원팀에 문의하시기 바랍니다.

병합을 통해 차원을 감소할 수 없음

문제 증상

데이터 흐름을 우클릭하여 '병합하여 레벨 감소' 옵션을 선택한 후, 스텝 또는 프로젝트 실행 시 "병합을 통해 차원을 줄일 수 없습니다: …​…​"라는 팝업이 표시됩니다.

가능한 원인

  • 이 포트의 입력 데이터는 이미 0차원이며, 차원을 더 이상 줄일 수 없습니다.

  • 이 포트의 입력 데이터는 리스트(List)가 아니므로 차원을 줄일 수 없습니다.

해결 방법

병합하여 레벨 감소 옵션을 선택 취소합니다. 루프 깊이 불일치가 있는 경우, 루프 깊이 불일치 문제를 참조하여 다른 해결 방법을 찾아보세요. 문제가 지속될 경우, Mech-Mind Robotics 기술 지원팀에 문의하시기 바랍니다.

이 페이지가 도움이 되었습니까?

다음 방법을 통해 피드백을 보내주실 수 있습니다:

저희는 귀하의 개인정보를 소중히 다룹니다.

당사 웹사이트는 최상의 사용자 경험을 제공하기 위해 쿠키를 사용하고 있습니다. "모두 수락"을 클릭하시면 쿠키 사용에 동의하시는 것이며, "모두 거부"를 클릭하시면 이 웹사이트 방문 시 귀하의 정보가 추적되거나 기억되지 않도록 단일 쿠키만 사용됩니다.