Skip to content

Introduction

API Return Value


모든 public 메서드는 (code, message, value)의 tuple을 반환합니다.

  • code=0인 경우, 호출이 성공했으며 value는 메서드의 반환 값입니다.
  • code<0인 경우, 호출이 실패했으며 value는 None이고 message에 실패 사유가 있습니다.

메서드별 Raises의 오류는 예외로 전파되지 않고 code로 반환됩니다. CatalogEntry와 CatalogData의 생성은 handler 메서드가 아니므로, 두 dataclass의 형식 위반은 예외로 직접 전파됩니다.

Error Code


실패한 호출의 code는 음수 6자리 정수이며, 절댓값의 끝 세 자리가 오류 종류입니다. 종류별 번호는 OnboardHandler와 InferenceHandler 설명의 목록에 있습니다.

Call Order


호출 순서는 온보딩, 카탈로그 조립, 추론 준비, 추론입니다. 추론은 이미지 식별과 스캔 검사 두 가지이며 하나의 InferenceHandler를 함께 사용합니다.

1. 온보딩

  • OnboardHandler.build로 handler를 생성합니다.
  • validate는 부품을 등록하지 않고 온보딩 가능한 형상인지 판정합니다. 이 호출은 선택 사항입니다.
  • onboard는 CAD 파일 경로 하나를 받아 PartRecord를 반환합니다.
  • handler는 부품 간 상태를 보관하지 않으므로 PartRecord의 보관은 호출자가 담당합니다.

2. 카탈로그 조립

  • 호출자가 부품마다 int part_id를 부여해 CatalogEntry(part_id, record)를 생성합니다.
  • CatalogEntry 목록으로 CatalogData(catalog_id, parts)를 생성합니다. parts의 순서가 동점 처리 순서입니다.
  • 두 dataclass는 core.data.catalog.catalog_data에서 import합니다.

3. 추론 준비

  • InferenceHandler.build로 handler를 생성합니다. build 직후에는 활성 카탈로그가 없습니다.
  • set_catalog로 CatalogData를 전달합니다. 카탈로그 교체도 같은 호출이며 모델을 다시 로드하지 않습니다.
  • warmup은 set_catalog 뒤에 호출합니다.

4. 이미지 식별

  • identify_images는 부품 하나를 촬영한 RGB 이미지 목록을 받아 top-M candidate와 이미지별 detection을 반환합니다.
  • candidate의 part_id는 CatalogEntry에 부여한 값입니다.

5. 스캔 검사

검사 한 건은 세 호출로 구성됩니다.

  • prepare_scan은 스캔 파일을 읽어 배경을 제거한 ScanSurface를 반환합니다.
  • identify_scan은 그 ScanSurface의 부품 후보 순위를 활성 카탈로그에서 반환합니다.
  • inspect_scan은 ScanSurface와 호출자가 전달한 PartGeometry로 pose와 표면 편차를 반환합니다. PartGeometry는 온보딩 산출물의 PartRecord.geometry입니다.

Active Catalog


활성 카탈로그는 set_catalog로 전달한 CatalogData이며 이미지 식별과 스캔 식별이 함께 사용합니다.

메서드 활성 카탈로그
identify_images, identify_scan, warmup 활성 카탈로그가 필요합니다. set_catalog 전에 호출하면 CatalogNotSetError의 code를 반환합니다.
prepare_scan, inspect_scan 활성 카탈로그를 읽지 않습니다. set_catalog 전에도 동작합니다.

Inference Option


inference option의 target은 identify이며 key는 top_m, aggregate, input_resize입니다.