머신 비전 시스템 소프트웨어. 구매할 것인가 vs 구축할 것인가
하드웨어는 일반적으로 비전 시스템 개발의 첫 번째 단계이다. 그러나 적절한 소프트웨어 지원이 없으면 문제가 심각해질 것이다. 장기적인 비전 시스템이 필요한 조직은 어느 시점에서 어려운 문제에 직면하게 된다.
‘기성품’ 소프트웨어 솔루션을 구입해야 할까, 아니면 요구 사항을 충족하기 위해 자체 솔루션을 개발해야 할까? 보다 구체적으로 미리 정해진 도구로 바로 사용할 수 있는 소프트웨어를 구입할 것인지 아니면 SDK(software development kit; 소프트웨어 개발 키트)와 같은 옵션을 사용하여 맞춤형 솔루션을 구축할 것인지가 문제다.
시장 출시의 시급성, 프로젝트의 과제 충족, 미래 보장의 필요성 등 많은 요소가 작용하므로 궁극적인 결정을 가볍게 내릴 수는 없다. 이 기사는 비전 시스템 통합을 위해 사전 구축된 옵션을 선택하는 것과 비교하여 소프트웨어 솔루션을 구축하는 것의 이점과 과제에 대해 자세히 설명한다.

소프트웨어 옵션을 평가할 때 고려 요소
소프트웨어 비용은 초기 구매에서만 발생하는 것이 아니다. 장기간 소프트웨어를 사용하면 추가 비용이 발생한다. 단기적인 관점에서 미리 결정된 기능을 사용할 수 있는 소프트웨어 패키지를 구입하는 옵션이 더 간단한 선택이다. 가격은 이미 정해져 있고 기능은 명확하게 정의되어 있다.
그러나 맞춤형으로 구축된 소프트웨어의 경우 각 기능을 구축하는데 더 많은 시간이 걸린다. 소프트웨어의 장기적인 지원은 일반적으로 초기 단계보다 더 어려운 과제이다. 구매한 소프트웨어 제품의 경우 소프트웨어 유지 및 업데이트 작업은 소프트웨어 개발 회사의 책임이다. 이 상황에서 소프트웨어는 몇 년 동안 무료지원을 받거나 갱신해야 할 수 있는 라이선스 비용 또는 더 자주 지불해야 하는 구독 서비스를 가질 수 있다.
이러한 각 시나리오는 특정 소프트웨어에 대한 예산 할당이 크게 다를 수 있다. 또한 각 소프트웨어에는 다양한 애플리케이션을 지원할 수 있는 일련의 기능이 있다. 사전 구축된 소프트웨어에는 이러한 도구가 설정되어 있으며 구매 후 바로 사용할 수 있다. 특정 애플리케이션용으로 구축된 소프트웨어의 경우 기본 기능 세트를 설정하고 실행하는 데 필요한 초기 시간 투자가 있다.
그 후 모든 프로그램 기능을 개발하려면 몇 가지 추가 업데이트가 필요할 수 있다. 이는 코드가 사내에서 작성되기 때문에 조정 및 미세 조정의 여지가 더 많다는 것을 의미한다. 그러나 이것은 또한 모든 코드를 작성할 수 있을 때까지 소프트웨어 사용을 지연시킬 수 있는 공간이 프로젝트에 필요함을 의미한다.

기성품 소프트웨어 구입
소프트웨어 솔루션을 구축하는 대신 구매하는 것의 주요 이점은 전체 비용이 훨씬 저렴하다는 것이다. 소프트웨어 구매를 선택하면 일반적으로 소프트웨어 라이선스에 대한 선불 비용이 더 많이 든다. 맞춤형 소프트웨어는 일반적으로 사용 가능한 개발자 팀을 확보하는 것으로 시작하여 비용이 많이 들 수 있다. 소프트웨어 팀이 있는 사람들에게는 특정 요구 사항에 더 잘 맞는 솔루션을 개발하는 것이 더 합리적일 수 있다.
지속적인 지원은 장기적인 솔루션을 고려할 때 주요 관심사이다. 프로그램이 지속적으로 업데이트된다는 것을 알면 펌웨어 업데이트를 통해 시스템 변경이 계속되는 경우에도 시스템이 소프 트웨어에 의존될 수 있다. 버그 수정 및 취약성에 대한 패치를 통해 시스템의 보안을 지속적으로 개선할 수 있다.
마감일에 따라 맞춤형 소프트웨어를 구축하는 것이 많은 프로 젝트에 적합하지 않을 수 있다. 완성된 소프트웨어를 사용함으로써 팀은 훨씬 더 빨리 솔루션 구현을 시작할 수 있다. 더 많은 기능을 생성해야하므로 소프트웨어의 규모가 매우 커질 수 있다. 이 작업은 또한 소프트웨어 엔지니어가 수행해야 할 수 있는 다른 우선 순위에 영향을 끼친다.
이는 개발 팀 내에서 리소스가 더 얇게 분산되거나 팀이 성장해야 함을 의미한다. 새로운 엣지 케이스가 발생하거나 향후 제품을 지원할 필요가 있는 경우 소프트웨어 팀은 오랫동안 이 소프트 웨어를 지원하기 위해 노력해야 할 수 있다.
대신 SaaS(Software as a Service) 솔루션을 통해 회사는 소프트웨어를 중앙에서 호스팅하고 일상적인 업데이트를 제공함으로써 구독 방식으로 소프트웨어를 제공할 수 있다. 소프트웨어를 구현하려는 회사에 추 가 부담을 주지 않고 호환성을 보장하고 추가 기능을 제공할 수 있도록 개발자 팀이 항상 대기하고 있다.

소프트웨어 솔루션 구축
새로운 소프트웨어를 구축하기로 선택한 사람들에게 가장 큰 이 점은 완전한 사용자 맞춤이다. 특정 시스템을 중심으로 구축된 소프트웨어는 내장 통합을 위해 미세 조정할 수 있다. 비즈니스에 필요한 기능 세트를 구성하기 위해 여러 프로그램을 사용하는 대신 사용자 정의 솔루션을 사용하면 필요에 따라 기능을 추가할 수 있다. 바로 사용할 수 있는 제안을 통해 비즈니스는 일반적으로 소프트웨어의 제한 사항을 수용하기 위해 작업 흐름을 조정해야 한다.
처음부터 소프트웨어를 설계할 때 기존 아키텍처를 중심으로 프레임워크를 구축할 수 있다. 전체 기술 제품군을 고려함으로써 새로운 맞춤형 소프트웨어는 원활한 통합을 위해 다른 하드웨어 및 기능을 지원할 수 있다. 이러한 방식으로 개발자는 비전 시스템을 새 소프트웨어로 업데이트할 때 발생하는 문제를 줄일 수 있다.

맞춤 제작을 개발할 때도 개발 일정에 맞지 않는 부분이 적지 않다. 이 경우 소프트웨어에는 소프트웨어를 지원하는 개발 팀이 있으므로 향후 업데이트를 사용하여 버그를 수정하거나 필요한 기능을 추가할 수 있다. 애플리케이션이 변경됨에 따라 소프트웨어를 변경해야 하는 경우, 개발에는 미래 고객의 요구에 더 잘 맞도록 코드를 다시 작성할 수 있다.
타사 프로그램의 업데이트 간격은 다를 수 있다. 결국 업데이트 된 버전이나 소프트웨어 패치를 릴리스하기 위해 오프사이트 개발팀에 의존하는 대신 내부에서 프로그램을 개발하여 업데이트를 보다 정기적으로 수행할 수 있다. 이러한 방식으로 새로운 카메라가 출시되면 소프트웨어는 계속해서 추가 장비를 지원할 수 있으며 더 많은 테스트 도구를 사용하여 품질 관리 검사와 같은 애플리케이션을 더 잘 제어할 수 있다.
사전 구매한 소프트웨어의 경우 인기가 없었던 중요한 기능을 제거하는 업데이트가 출시될 수 있다. 그러나 이러한 기능에 의존하는 응용 프로그램은 이제 구식 소프트웨어와 함께 작동해야 한다. 팀이 향후 업데이트를 계속 지원하도록 함으로써 고객은 몇 년 동안 동일한 소프트웨어로 작업할 수 있다는 것을 알고 있는 비전 시스템에 의존할 수 있다. 향후 업데이트를 보다 쉽게 구현하여 맞춤형 소프트웨어를 설계할 수 있다.
머신 비전 소프트웨어 솔루션의 예
iNsepct는 다양한 테스트 애플리케이션을 위해 경량 소프트웨어에서 바로 사용할 수 있는 도구를 제공한다.
머신 비전 애플리케이션의 경우 iNspect는 소형 패키지로 많은 기능을 제공한다. 이 소프트웨어는 대부분의 사용자가 찾고 있던 가장 중요한 기능에 대한 피드백을 받아 사용하기 쉬운 그래픽 사용자 인터페이스(GUI)를 제공한다. <그림1>은 표준 테스트를 실행하는 소프트웨어를 보여준다. 광범위한 프로그래밍 경험이 필요한 맞춤형 솔루션을 개발하기 위해 더 복잡한 소프트웨어에 의존하는 대신 iNspect는 머신 비전 테스트 설정에 대한 능률적인 접근 방식을 제공한다.

<그림1> 통과한 테스트를 실행하는 iNspect
iNspect 사용의 이점은 올인원 패키징에서 비롯된다. 이 소프트웨어는 단일 솔루션에 내장된 이미지 획득 및 이미지 분석을 모두 제공한다. 이미지 데이터를 캡처하고 테스트하기 위해 여러 프로 그램에 의존하는 대신 iNspect는 소프트웨어 드라이버와 직접 통신하여 이미지가 하드웨어에서 직접 수집되도록 한다.
Sherlock 8은 간단한 인터페이스를 사용하여 스크립팅으로 머신 비전 프로그램을 만든다. 더 많은 사용자 정의가 필요한 머신 비전 애플리케이션의 경우 Sherlock은 iNspect보다 훨씬 더 많은 기능을 제공한다.
Sherlock은 머신 비전 테스트를 개발할 때 더 높은 수준의 유연성을 위해 대규모 도구 라이브러리에 액세스 할 수 있는 직관적인 GUI를 제공하고 다른 이미지 획득 및 제어 소프트웨어에 연결하는 이미지 처리 소프트웨어 역할을 한다. 이에 대한 텔레다인달사의 예는 CamExpert로 카메라 구성 및 이미지 획득에 사용되는 <그림2>의 Sapera LT이다.

<그림2> Sapera LT의 CamExpert 카메라 구성
이미지를 Sherlock으로 가져오면 스크립팅을 통해 사용자 정의 할 수 있는 다양한 테스트를 거칠 수 있다. iNspect에 비해 더 많은 도구 모음을 보유하고 보다 미묘한 테스트를 개발할 수 있는 더 많은 옵션을 제공함으로써 Sherlock은 많은 머신 비전 애플리 케이션에서 매우 중요한 선택이다.

<그림3> 테스트의 각 단계를 보여주는 프로그램이 있는 Sherlock 사용자 인터페이스
Sherlock은 GUI(그림3 참조)를 사용하여 사용자가 소프트웨어를 개발할 때 찾을 수 있는 다양한 도구를 쉽게 찾을 수 있다. 또한 Sherlock은 사용자가 iNspect와 같은 소프트웨어로 구현되는 도구의 드롭다운 목록을 통해 불가능할 수 있는 테스트 내에서 보다 구체적인 매개 변수를 만드는데 사용할 수 있는 스크립팅 기능을 제공한다. 그러나 이러한 유형의 스크립팅에는 코딩에 대한 광범위한 경험이 필요하지 않다. 따라서 이것은 소프트웨어 개발에 대한 광범위한 배경 지식이 없는 사용자에게 과도한 부담을 주지 않고 많은 직관적인 기능을 제공한다.
iNspect의 바이너리통과 또는 실패 조건과 달리 Sherlock은 더 복잡한 테스트를 수행할 수 있다. 이것은 사용자가 전체 테스트 결과에 특정 가중치를 갖도록 테스트 내에서 각 도구를 조정할 수 있도록 함으로써 달성된다. 이런 식으로 Sherlock이 전체 테스트를 실패로 표시해야 한다고 결론을 내리기 전에 테스트에서 여러 부분이 실패해야 할 수 있다.
품질보증(QA)을 위해 카메라 아래에서 평면 패널 스크린을 검사하는 공장 설정 내의 이 유연한 테스트 시스템의 예가 <그림4>에 나와 있다. 테스트 내의 한 도구가 문제를 생성하거나 이상을 발견 하면 실제 애플리케이션에서 여러 요소를 고려하도록 각 테스트를 구성할 수 있기 때문에 전체 테스트가 실패하지 않을 수 있다.

<그림4> 평면 패널 검사
코딩을 통해 완전 맞춤형 프로그램을 개발하기 위한 SDK인 Sapera Processing은 자체 프로그램을 개발해야 하고 전체 프로세스를 완벽하게 제어하고자 하는 머신 비전 산업 종사자에게 올바른 선택이다. 이러한 애플리케이션의 예가 <그림5>에 나와 있다.

<그림5> 병 채우기 레벨 검사
Sherlock / iNspect와 Sapera Processing의 주요 차이점은 처음 두 개는 GUI 애플리케이션인 반면 Sapera Processing은 이미지 처리 SDK라는 것이다. 이 라이브러리는 다른 소프트웨어와 함께 사용하여 C 또는 C#과 같은 프로그래밍 언어를 통해 애플 리케이션을 위한 다양한 프로그램을 구축할 수 있다.
이러한 유형의 소프트웨어를 통해 사용자는 프로그램의 모든 개별 측면을 미세 조정할 수 있다. 미리 정의된 도구를 사용하는 대신 Sapera Processing은 특정 작업을 수행하거나 데이터를 검색하기 위해 호출할 수 있는 라이브러리 내의 개별 클래스를 제공한다. 이 라이브러리는 사용자 또는 사용자 팀 구성원이 작성한 프로그램 내에서 사용할 수 있으므로 이미징 하드웨어를 더 잘 활 용할 수 있다.
Sapera Processing은 애플리케이션에 따라 달라질 수 있 는 광범위한 센서를 지원하는 1D, 2D 및 3D 카메라를 포함하여 Teledyne Imaging 포트폴리오와 함께 많은 기능을 제공한다는 점에 유의해야 한다.

<그림6> Teledyne Imaging USB3 및 CLHS 카메라
<그림 6>은 머신 비전을 염두에 두고 설계된 일부 카메라를 보여준다. 더 많은 후처리 기능을 위해 Sapera Processing은 사용자가 일련의 이미지를 촬영하고 AI 모델을 생성할 수 있는 인공지능(AI) 소프트웨어인 Astrocyte도 지원한다. 이를 통해 Sapera Processing과 같은 후처리 소프트웨어가 이미지 분석에서 훈련된 신경망을 사용할 수 있다.
더 나은 선택은 무엇일까?
일반적으로 프로젝트의 규모를 결정하면 솔루션을 가장 잘 확보하는 방법을 명확하게 결정하는 데 도움이 된다. 소프트웨어의 경우 프로젝트에 사용할 수 있는 필수 기능과 타임라인으로 귀결된다. 일부 소프트웨어에는 애플리케이션의 요구 사항을 충족할 수 있는 표준화된 도구가 충분하다. 여기에는 제품의 다양한 측면을 식별하는 머신 비전에 대한 일련의 확인 및 균형 설정이 포함될 수 있다.
이러한 즉시 사용 가능한 옵션은 너무 많은 개발 시간을 기다릴 필요없이 시스템 내에서 즉시 구매 및 구현할 수 있는 솔루션을 이미징 애플리케이션에 제공한다. 개발 시간이 길어지면 소프트웨어 기능과 관련하여 특정 애플 리케이션에 필요한 유연성을 고려하는 것이 중요할 수 있다. 팀은 맞춤형 스크립팅을 허용하는 즉시 구매 가능한 소프트웨어를 조정하여 제품을 더 잘 개발할 수 있다.
그러나 미리 정의된 도구가 프로젝트 범위에 맞지 않는 경우 완전히 새로운 옵션을 코딩하는 것이 가장 적합하다. 이러한 유형의 애플리케이션에서는 기성 품을 구매하는 것보다 개발에 훨씬 더 오랜 시간이 걸린다는 점을 이해해야 한다. 그러나 결과는 의도한 정확한 기능을 수행하는 이상적인 소프트웨어 솔루션이 될 수 있다.
자료제공: Teledyne Dalsa(www.teledynedalsa.com)


