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

데이터 유형
Mech-MSR 프로젝트에서 데이터 유형은 스텝(Step) 간에 주고받는 데이터의 기본 형식을 의미합니다.
예를 들어, Surface(표면 데이터), Profile(프로파일 데이터), Shape3DList(3D 기하학적 특징), NumberList(숫자 리스트) 등이 있습니다.
일반적으로 포트를 연결할 때는 데이터 유형이 서로 일치해야 정확한 데이터 전송 및 처리가 가능합니다.
Mech-MSR에서 포트의 데이터 유형을 확인하는 방법을 알아보려면 여기를 클릭하세요
프로젝트 편집 구역의 빈 공간을 마우스 오른쪽 버튼으로 클릭하고 '선택한 스텝 포트 정보를 표시하도록 설정'을 선택한 다음, '유형 및 이름을 표시하기' 또는 '유형만 표시'를 선택합니다. 그러면 포트에 데이터 유형이 표시됩니다.
포트 데이터 유형의 이름은 <Surface>
, <Profile>
, <NumberList>
, <Shape3DList>
와 같이 <>
화살 괄호로 묶습니다.

또한, 표시되는 데이터 유형 이름은 다음 정보를 제공합니다.
-
접미사
-
: 선택 입력을 의미합니다. 예를 들어, 많은 스텝에는PoseList-
와 같은 정렬 파라미터 그룹 입력 포트가 있지만, 이는 선택사항이므로 비워두어도 스텝 실행에 영향을 주지 않습니다. -
접미사
[]
: 데이터 차원을 나타냅니다. 자세한 내용은 데이터 차원 섹션을 참고하세요.
데이터 차원
Mech-MSR 프로젝트에서 데이터 차원은 데이터의 구조적 레벨을 의미합니다.
-
포트 선언 차원 (Port declared dimensions)
각 포트가 사전에 정의한 데이터 구조의 레벨을 의미합니다. 즉, 해당 포트에서 수신하거나 출력될 것으로 예상되는 데이터의 차원을 나타냅니다.
Mech-MSR에서 포트 선언 차원을 확인하는 방법을 알아보려면 여기를 클릭하세요
데이터 유형 이름만 있는 경우, 0차원 데이터를 의미합니다. 데이터 유형 뒤에 대괄호(
[]
)가 하나씩 추가될수록 차원이 1씩 증가합니다.예시:
-
Surface
: 0차원 표면 데이터 -
Surface []
: 1차원 표면 데이터 -
Surface [][]
: 2차원 표면 데이터
-
-
실제 입력/출력 데이터 차원
스텝 실행 중 포트를 통해 실제로 수신되거나 출력되는 데이터의 차원을 의미합니다.
실제 데이터 차원은 선언된 차원보다 클 수도, 같을 수도, 작을 수도 있습니다. 스텝의 실행 방식에 따라 실제 입력/출력 데이터의 차원이 어떻게 결정되는지에 대한 자세한 내용은 루프 깊이 섹션을 참고하세요.Mech-MSR 프로젝트에서 스텝은 선언된 차원과 다른 차원의 데이터를 수신하거나 출력할 수 있습니다. 그러나 차원 불일치가 처리되지 않으면, 스텝이 정상적으로 실행되지 않거나 출력 결과가 예상과 다를 수 있습니다.
프레임워크 루프
실제 입력 데이터 크기가 포트 선언 차원보다 클 경우, 스텝은 선언된 크기에 맞춰 입력 데이터를 단계별로 처리합니다. 이를 프레임워크 루프(framework loop)라고 합니다.
스텝이 프레임워크 루프 모드로 전환되면 스텝 카드 오른쪽 하단에 아이콘이 나타납니다. 아이콘 내 숫자는 루프 깊이(루프 단계 수)를 의미하며, 깊이가 1일 경우 숫자는 표시되지 않습니다. 프레임워크 루프 구성이 잘못되었거나 실행할 수 없으면
아이콘이 표시됩니다.

|
루프 깊이
루프 깊이(loop depth)는 스텝이 포트에서 데이터를 처리하기 위해 반복하는 횟수, 즉 반복 레벨 수를 의미합니다. 포트 위에 아이콘이 표시되며, 숫자는 루프 깊이를 나타냅니다. (깊이가 1일 땐 숫자가 표시되지 않습니다.)
루프 깊이 계산 공식:
루프 깊이 = 실제 데이터 차원 - 포트 선언 차원. 이 공식을 통해 입력 데이터의 실제 차원을 추정할 수 있습니다.
스텝의 여러 포트에 입력이 있는 경우, 모든 포트의 루프 깊이는 동일해야 합니다 . 그렇지 않으면 스텝을 실행할 수 없습니다. |
- 예시
-
아래 그림에서 확인할 수 있듯, '표면의 특징점 위치 지정' 스텝의 표면 데이터 입력 포트에
아이콘이 표시되어 있습니다. 이는 이 포트 데이터를 처리하기 위해 스텝이 두 단계의 루프를 수행해야 함을 의미하며, 루프 깊이는 2입니다. 포트 선언 차원이 0이므로, 입력 데이터의 실제 차원은 2로 추론할 수 있습니다.
차원 증가/차원 감소
여러 포트의 데이터 루프 깊이가 일치하지 않을 경우, 일반적으로 슬라이싱으로 차원 증가하거나 병합하여 차원 감소를 통해 포트의 데이터를 조정하여 모든 포트의 루프 깊이를 맞춥니다.
해당 기능이 인터페이스에서 어디에 있는지 확인하려면 여기를 클릭하세요
데이터 차원을 수정하려면, 데이터 흐름을 마우스 오른쪽 버튼으로 클릭한 후 다음 슬라이싱으로 레벨 증가 또 병합하여 레벨 감소 옵션을을 선택합니다.

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

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

입력 재사용
포트의 데이터 차원을 증가/감소할 수 없거나 그럴 필요가 없는 경우, 스텝 실행 중에 하위 차원 입력을 재사용하도록 설정할 수 있습니다. 이를 입력 재사용이라고 하며, 낮은 차원의 데이터를 반복적으로 사용하여 스텝이 정상적으로 실행되도록 도와줍니다. 입력 재사용이 활성화되면, 해당 포트 위에는 아이콘이 표시됩니다.
해당 기능이 인터페이스에서 어디에 있는지 확인하려면 여기를 클릭하세요
스텝의 파라미터 구성 패널에서 실행 플래그를 확장하고 입력 재사용 옵션을 선택합니다.

|
- 예시
-
차원 증가나 입력 재사용을 적용하기 전후에는 같은 입력이라도 처리 결과가 크게 달라질 수 있습니다.
프레임워크 루프?
No
Yes
스텝 입력
-
표면 데이터 : 0차원, 홀이 있는 이미지 데이터입니다.
-
정렬 파라미터 그룹 : 0차원, 6개 홀의 좌표를 포함합니다.
작업
없음
-
'정렬 파라미터 그룹’에 슬라이싱으로 레벨 증가를 수행하여 데이터 차원을 0에서 1로 늘립니다.
-
입력 재사용 옵션을 선택합니다.
스텝 실행 그림
스텝 실행 결과
-
자동 차원 증가
입력의 실제 데이터 차원이 포트 선언 차원보다 작으면, 시스템은 포트 요구 사항에 맞게 자동으로 차원을 늘립니다. 이 경우 포트 위에 아이콘이 표시되며, 아이콘에는 증가된 차원의 수가 나타납니다(차원이 1개 증가한 경우 숫자는 표시되지 않습니다).
현재는 데이터 추출 및 데이터 병합 스텝에서만 파라미터 구성 패널의 차원 파라미터를 통해 포트의 선언된 크기를 수정할 수 있습니다. 입력 데이터의 실제 차원이 포트 선언 차원보다 작으면 시스템이 자동으로 입력 크기를 늘립니다.

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

모든 파라미터를 받아들이기 스텝을 통해 빠르게 테이터 차원을 확인할 수 있습니다. |
오류 분석
루프 깊이 불일치
문제 증상
프로젝트나 특정 스텝을 실행할 때 "루프 깊이 불일치 : ……"라는 팝업창이 나타났습니다.
해결 방법
-
입력 재사용 : 포트에 입력된 데이터가 배열(List)이 아닌 경우, 파라미터 패널에서 입력 재사용 옵션을 선택합니다.
-
차원 증가 : 더 높은 루프 깊이가 필요한 포트 데이터가 배열(List)인 경우, 데이터 흐름 연결을 마우스 오른쪽 버튼으로 클릭하고 '병합하여 레벨 감소'를 선택하여 데이터 차원을 줄이고 루프 깊이를 일치시킵니다.
-
차원 증가 : 더 낮은 루프 깊이가 필요한 포트 데이터가 배열(List)인 경우, 데이터 흐름 연결을 마우스 오른쪽 버튼으로 클릭하고 '슬라이싱으로 레벨 증가'를 선택하여 데이터 차원을 늘리고 루프 깊이를 일치시킵니다.
-
정확성을 보장하기 위해 각 포트의 입력 데이터를 검사합니다.
포트 데이터 개수 불일치
문제 증상
프로젝트나 특정 스텝을 실행할 때 "포트 데이터 개수 불일치: ……"라는 팝업창이 나타났습니다.
해결 방법
-
입력 재사용 : 포트에 연결된 데이터가 배열(List)이 아니고, 다른 포트보다 데이터 수가 적은 경우, 파라미터 패널의 '실행 플래그' 항목에서 입력 재사용을 선택하세요.
-
차원 축소 후 입력 재사용 : 포트에 연결된 데이터가 배열(List)이지만 데이터 수가 적은 경우에는, 데이터 흐름선을 마우스 오른쪽 버튼으로 클릭하여 '병합하여 레벨 감소'를 선택해 차원을 줄인 다음, '실행 플래그’에서 입력 재사용을 선택합니다.
-
문제가 지속되면 데이터 추출 스텝이나 다른 방법을 사용하여 포트 데이터 수를 일치시키세요.
슬라이싱을 통해 차원을 증가할 수 없음
문제 증상
데이터 흐름을 우클릭하고 '슬라이싱으로 레벨 증가' 옵션을 선택한 후, 스텝 또는 프로젝트 실행 시 "슬라이싱을 통해 차원을 늘릴 수 없습니다: ……"라는 팝업이 표시됩니다.
가능한 원인
-
이 포트의 입력 데이터는 리스트(List)가 아닙니다.
-
차원 증가 후의 차원이 스텝의 최대 지원 차원을 초과합니다.
해결 방법
슬라이싱으로 레벨 증가 옵션을 선택 취소합니다. 루프 깊이 불일치가 있는 경우, 루프 깊이 불일치 문제를 참조하여 다른 해결 방법을 찾아보세요. 문제가 지속될 경우, Mech-Mind Robotics 기술 지원팀에 문의하시기 바랍니다.
병합을 통해 차원을 감소할 수 없음
문제 증상
데이터 흐름을 우클릭하여 '병합하여 레벨 감소' 옵션을 선택한 후, 스텝 또는 프로젝트 실행 시 "병합을 통해 차원을 줄일 수 없습니다: ……"라는 팝업이 표시됩니다.
가능한 원인
-
이 포트의 입력 데이터는 이미 0차원이며, 차원을 더 이상 줄일 수 없습니다.
-
이 포트의 입력 데이터는 리스트(List)가 아니므로 차원을 줄일 수 없습니다.
해결 방법
병합하여 레벨 감소 옵션을 선택 취소합니다. 루프 깊이 불일치가 있는 경우, 루프 깊이 불일치 문제를 참조하여 다른 해결 방법을 찾아보세요. 문제가 지속될 경우, Mech-Mind Robotics 기술 지원팀에 문의하시기 바랍니다.