머신비전 사용자 인터페이스 관련 장치
이 문서는 머신비전 사용자 인터페이스 프로세스의 코디네이터 서브프로세스를 통해 정의된 머신비전 시스템의 사용자 인터페이스를 야기하는 방법에 대해 설명하고 있다. 머신비전 사용자 인터페이스 프로세스는 다양한 구성요소들을 갖고 있다. 코디네이터 서브프로세스는 하나 또는 그 이상의 구성요소들로 소프트웨어 객체들 세트를 제공하는 게 적합하다.
출원인 | 포마이크로스캔 시스템즈 인코포레이티드쪾발명자 | 드에자노스키 및 조셉 제이
머신비전 애플리케이션을 배치할 때는 모니터링 또는 제어 목적을 위해 주문된 사용자 인터페이스의 창작물과 통합 제품을 포함한다. 사용자 인터페이스는 일련의 형상 시각적인 요소로 구성되고, 그때 요소들을 함께 연결하기 위한 코드를 작성한다. 그래서 사용자 인터페이스를 정의하고 생성하기 위해 사용하는 관습 코딩을 가능한 많이 줄이는 것이 좋다. 여기에서는 거의 0인 프레임워크 구성에서 상대적으로 유연한 멀티 뷰 제어 시스템과 방법을 제공한다.
사용자 인터페이스 내에서 사용자 인터페이스 요소들을 통합하는 것은 사용자와 프로그래머를 위해 중요한 일이다. 예를 들면 일련의 버튼들을 카메라 뷰의 선택을 허용하기 위해 표시할 수 있고, 프로그래머는 이미지 정보를 표현하기 위해 버튼 누름 이벤트를 사용한다. 버튼들은 여러 가지 상황에서 활성화되거나 비활성화되어야 하고, 모드가 시작되는 것을 보여주기 위해 사용자에 의해 작동될 때 표시된다.
이런 인터페이스의 프로그래밍을 간단하게 하기 위해 다양한 사용자 인터페이스의 요소들로 사용되는 프레임워크가 제공된다. 기존에 상당한 양이었던 사용자 코딩을 0에 가깝게 줄일 수 있다. 그리고 멀티 뷰 제어는 다중 장치를 넘어 다중 검사 결과의 표시를 허용한다. 좋은 결과물은 이미지들, 결과 데이터, 타이밍 정보, 입력/출력(I/O) 상태 등을 포함한다.
발명의 구체적인 설명
도면 1은 정보장치(1100), 이미징 시스템(1600), 카메라(1620), 네트워크(1500), 서버(1700)를 포함하는 시스템(1000)의 블록도이다. 정보장치(1100)는 이미징 시스템(1600)과 직접 연결되거나 네트워크(1500)를 통해 연결된다. 이미징 시스템(1600)은 카메라(1620)를 포함한다. 서버(1700)는 정보장치(1100)를 통해 이미징 시스템(1600)에 연결되거나 정보장치(1100) 없이 네트워크(1500)를 통해 연결된다. 이미징 시스템(1600)은 하나 또는 그 이상의 마크를 판독하기에 적합한 머신비전 시스템이다. 하나 또는 그 이상의 마크들은 객체에 대한 정보를 포함하는 데이터 매트릭스 마크 또는 DPM(Direct Part Mark)이다. 수많은 이미징 알고리즘과 결과들은 시스템(1000)을 통해 사용되고 분석된다.
정보장치(1100)는 머신비전 시스템(1600)에 대한 사용자 인터페이스용 실행 가능 명령어를 정의·생성·조정·제공할 수 있는 머신비전 사용자 인터페이스 프로세스(1200)를 포함한다. 머신비전 사용자 인터페이스(1200)는 코디네이터 프로세서(1300), 제1 객체(1340), 제2 객체(1360), 제1 구성요소(1400), 제2 구성요소(1420)를 포함하거나 코디네이터 프로세서(1300), 제1 객체(1340), 제2 객체(1360), 제1 구성요소(1400) 및 제2 구성요소(1420)에 연결된다. 여기서 두 개의 객체들과 두 개의 구성요소들이 도시되어 있다 할지라도 시스템(1000)은 사용자 인터페이스를 정의·생성·조정하기 위해 소정의 객체들 및 구성요소들을 포함한다.
코디네이터 프로세서(1300)는 코디네이터 서브프로세스(1320)를 포함하고, 이를 실행시키기에 적합하다. 코디네이터 서브프로세스(1320)의 기능이 분리되고, 이후 별개의 코디네이터 서브프로세스(1320) 없이 제1 구성요소(1400)와 제2 구성요소(1420)에서 직접 실행된다.
코디네이터 프로세서(1300)는 정의되거나 조정된 머신비전 시스템(예를 들면, 이미징 시스템(1600))의 사용자 인터페이스를 야기하기에 적합하다. 코디네이터 프로세서(1300)는 제1 구성요소(1400) 및 제2 구성요소(1420)와 같은 머신비전 사용자 인터페이스 프로세스(1200)의 하나 또는 그 이상의 구성요소들에 제1 객체(1340) 및 제2 객체(1360)와 같은 소프트웨어 객체들 세트를 제공하기에 적합하다. 소프트웨어 객체들 세트 각각은 실행될 때 그와 대응하는 사용자 인터페이스 요소를 자동으로 조정 또는 정의할 수 있다.
코디네이터 프로세서(1300)는 머신비전 사용자 인터페이스 프로세스(1200)에서 각각의 객체가 단지 하나일 경우에만 허용하는 것이 좋다. 코디네이터 프로세서(1300)는 제1 구성요소(1400)와 같은 머신비전 사용자 인터페이스 프로세스(1200)의 선택된 구성요소가 선택된 객체를 실행할 때 제1 객체(1340)와 같은 선택된 객체를 실행하는 머신비전 사용자 인터페이스 프로세스(1200)의 각 구성요소를 통지하기에 적합하다. 이때 선택된 객체는 소프트웨어 객체들 세트의 하나일 수 있다.
소프트웨어 객체들 세트는 사용자 인터페이스의 제1 툴바 버튼의 제1 사용자 선택에 기초하여 제1 툴바 버튼을 자동으로 활성 또는 비활성화시키기에 적합한 기호 기능 객체를 포함한다. 또한 이는 아이템 이미지, 아이템 이미지에 대한 정보, 머신비전 장치들의 리스트를 표현하는 제1 사용자 인터페이스를 조정하기에 적합한 장치 선택 객체를 포함한다. 리스트에서 설정된 머신비전 장치의 사용자 선택은 아이템 이미지, 아이템 이미지에 대한 정보, 아이템 이미지에서 추출된 정보를 획득하기 위해 사용된 머신비전 장치를 불러오기에 적합하다.
소프트웨어 객체들 세트는 사용자 인터페이스 요소를 조절하기에 적합한 시청 제어 객체를 포함한다. 사용자 인터페이스 요소는 사용자 선택에 기초하여 이미지들을 표현할 수 있다. 이미지들은 머신비전 시스템(예를 들면, 이미징 시스템(1600))을 통해 획득된다. 소프트웨어 객체들 세트는 사용자 인터페이스 요소를 조정하기에 적합한 기록 제어 객체를 포함한다. 여기서 사용자 인터페이스 요소는 표현된 머신비전 하드웨어, 펌웨어 및 소프트웨어에 대한 검사 결과를 도출하기에 적합한 기록 제어 객체를 포함한다. 소프트웨어 객체들 세트는 머신비전 시스템 중에서 선택된 장치의 위치 및 세기 값과 같은 타이밍 정보와 다른 정보를 표현하는 사용자 인터페이스 요소를 조정하기에 적합한 차트 제어 객체를 포함한다. 또한 소프트웨어 객체들 세트는 그룹 내의 모든 장치들이 동일한 사용자 인터페이스에서 관측되도록 그룹화된 머신비전 장치들의 둘 또는 그 이상의 장치들을 허용하기에 적합한 그룹 제어 객체를 포함한다.
정보장치(1100)를 통해 수행된 하나 또는 그 이상의 기능들은 서버(1700)에 기록된다. 서버(1700)는 사용자 인터페이스(1720), 사용자 프로그램(1740), 메모리 소자(1760)를 포함한다. 사용자 인터페이스(1720)는 이미징 시스템(1600)의 하나 또는 그 이상의 기능들을 모니터 및 제어한다. 사용자 프로그램(1740)은 머신비전 사용자 인터페이스 프로세스(1200) 및 그에 의해 수행된 하나 또는 그 이상의 기능을 포함한다. 메모리 소자(1760)는 머신 실행 가능 명령어 및 이미징 시스템(1600)에 대한 데이터를 저장하기에 적합하다.
코디네이터 서브프로세스(1320)는 현재 프로세스에서 빠져나가기 위해 단지 객체의 예를 허용하는 단일 프로세스와 같이 최소 하나의 객체를 수행하는 게 적합하다. 다양한 구성요소들이 선택된 객체의 예를 요청할 때 구성요소들은 동일한 객체에 대한 기준을 얻을 수 있다. 하나의 구성요소가 선택된 객체의 방법을 요청할 때, 해당 객체를 사용하는 모든 다른 구성요소들은 확인되거나 통지된다.
예를 들면, 사용자 인터페이스는 이미지들을 표시할 수 있는 시청 제어(즉, 멀티 뷰 제어), 검사 결과들을 보여줄 수 있는 기록 제어, 타이밍 데이터를 표시할 수 있는 차트 제어 등 장치를 선택하기 위한 드롭다운 제어를 구비한다. 하나 또는 그 이상의 제어들은 사용자와 프로그래머에 의해 형식 위에 놓인다. 코디네이터 서브프로세스(1320)는 사실상 사용자 쓰기 코드 없이 기능을 수행하는 사용자 인터페이스를 조정케 할 수 있다. 장치가 드롭다운 제어에서 선택될 때 표시 제어는 장치가 획득한 이미지 정보를 보여주고, 기록 제어는 검사 결과들을 보여주며, 차트 제어는 선택된 장치에 대한 타이밍을 보여준다.
여기서 설명하는 것들은 제어들이 독립된 세트와 같이 사용될 수 있는 그룹 제어에 적합하다. 그룹은 동일한 사용자 인터페이스 내 둘 또는 다수의 장치를 보여주기 위해 사용되며, 그룹 내 각각의 제어들에 같은 그룹ID 특성을 부여함으로써 생성된다.
코디네이터 서브프로세스(1320)는 주문된 해법을 생성하도록 하나 또는 그 이상의 구성요소들로 이용되는 객체들을 만들 수 있다.
다음은 바람직한 객체들에 포함된 기능들이다.
장치 리스트 : 모든 사용 가능한 장치들의 리스트 및 각각의 현재 상태를 말한다.
장치 포커스 : 개별 장치에 연결될 때 동일한 GroupID와 함께 요소들이 장치에 자동으로 연결될 수 있는 개별 그룹에 대해 일반적으로 선택된 장치를 나타내는 것을 말한다.
기호 기능 : ‘기능’은 기능을 실행할 때에는 언제나 취소될 수 있는 기능 생성기를 통해 기호 이름을 생성하고 할당한다. 기능들의 리스트는 코디네이터 서브프로세스(1320)에 의해 유지된다. 코디네이터 서브프로세스(1320)에 의해 제공된 객체는 다른 모듈 또는 제어에서 수행되더라도 정의된 기능을 실행한다. 기능들은 값과 허용된 상태 및 중요한 상태 등을 포함한다.
브로드캐스트 메시지 : 선택된 객체를 사용하는 구성요소가 그밖의 선택된 구성요소를 사용하는 다른 구성요소로 메시지를 전달하는 것을 허용한다.
도면 2는 사용자 인터페이스 아이콘들(2000)의 세트 블록도이다. 사용자는 코디네이터 서브프로세스에 의해 제공된 객체를 통해 장치들로 자동으로 채워질 수 있는 형식에 장치 선택 제어를 배치한다. 사용자는 이미지 정보를 획득할 수 있는 장치 리스트를 통해 장치를 선택한다.
사용자는 그 형식에 멀티 뷰 제어를 배치한다. 멀티 뷰 제어를 포함하는 애플리케이션은 사실상 부가적인 코딩 없이 사용자에 의해 실행된다. 사용자 인터페이스 아이콘들(2000)은 물론, 사용자 인터페이스가 표현될 때 사용자는 아이콘들 중 하나를 선택할 수 있고, 장치 선택 제어에서 아이콘들 중 하나와 관련된 버튼을 누를 수 있다. 내장된 코디네이터 서브프로세스는 ‘dev’라고 불리는 관련 장치 객체를 제공한다.
장치 선택 구성요소는 Coordinator.SetDeviceFocus(dev)를 호출한다. 코디네이터 서브프로세스는 OnDeviceFocus라 불리는 이벤트를 일으킬 수 있으며, 프로세스에서 객체의 모든 예는 동일한 객체일 수 있고, 객체를 사용하는 모든 다른 구성요소들은 이벤트에 대한 통지를 받을 수 있다. 여기서 설명하는 것은 멀티 뷰 제어를 포함하며, 멀티 뷰 제어는 OnDeviceFocus 이벤트와 관련 dev 객체를 수신한다.
통신 라이브러리를 이용하여 멀티 뷰 제어는 dev로부터의 이미지와 결과 데이터를 수신하기 위해 장치에 하나 또는 그 이상의 TCP 및 UDP 연결을 만든다. 장치는 그들 사이에 네트워크 없이 정보장치에 직접 연결된다. 예를 들면, 장치는 정보장치의 PCI(Peripheral Connect Interface) 버스에 내재된다.
도면 3은 멀티 뷰 제어의 데이터 및 이미지들을 포함하는 사용자 인터페이스(3000) 도면이다.
도면 4는 코디네이터 서브프로세스에 의해 제공된 기호 기능을 나타낼 수 있는 사용자 인터페이스 아이콘들(4000)의 세트 블록도이다. 기호 기능은 툴바 버튼을 활성화시키거나 비활성화시키기 위해 사용되며, 사용자는 툴바에 장치 선택 제어를 배치할 수 있다. 툴바 위의 버튼들 각각은 실행된 기능(예를 들면, StartInspection, StopInspection 등)의 기호 이름에 대응하는 태그가 할당된다.
각 버튼에 대한 Coordinator.GetFunction 방법은 기호 이름과 함께 호출된다. Coordinator.GetFunction 방법은 선택된 버튼의 활성·비활성 여부 혹은 가시적인 눌려진 것처럼 보여지는지에 대한 정보를 포함하는 기능 객체를 되돌릴 수 있다.
여기서 만약 툴바가 코디네이터 서브프로세스를 이용하도록 사용된다면 사용자는 어떠한 코딩도 실행할 수 없다. 만약 일반적인 툴바 및 다른 버튼들이 대신 사용된다면 사용자는 상대적으로 작은 양의 코드를 제공하는 것을 포함하는 Coordinator.GetFunction 방법을 호출하기 위한 명령어를 제공한다.
도면 5는 장치 선택 버튼들(5100) 세트, 제1 멀티 뷰 제어 패널(5200), 제2 멀티 뷰 제어 패널(5300), 차트 및 기록 패널(5400)을 포함하는 사용자 인터페이스(5000)이다. 장치 선택 버튼들(5100)세트, 제1 멀티 뷰 제어 패널(5200), 제2 멀티 뷰 제어 패널(5300), 차트 및 기록 패널(5400) 각각은 장치 선택 버튼들(5100) 세트, 제1 멀티 뷰 제어 패널(5200), 제2 멀티 뷰 제어 패널(5300), 챠트 및 기록 패널(5400)에 대한 대부분의 코드를 제공하기에 적합한 대응 객체에 응답하여 표현된다.
제1 멀티 뷰 제어패널(5200)은 이미지 장치들 또는 시스템들의 대응 그룹 쌍으로부터 한 쌍의 이미지들과 이미지 정보를 제공한다. 제2 멀티 뷰 제어 패널(5300)은 이미지 장치들와 시스템의 대응 그룹 쌍으로부터 한 쌍의 이미지들와 이미지 정보를 제공한다. 차트 및 기록 패널(5400)은 사용자에 의해 선택된 이미징 장치 및 시스템과 관련된 검사에 대한 표와 차트 정보를 제공한다.
도면 6은 방법(6000)의 바람직한 실시 예를 나타내는 흐름도이다. 각각의 동작 방법(6000)의 세부단계는 기계 실행 가능 명령어들에 의해 자동으로 실행된다. 기계 실행 가능 명령어들은 메모리 소자와 같은 기계 판독 가능 매체에 저장된다.
이 때 동작 6100에서와 같이 코디네이터 서브프로세스가 제공된다. 코디네이터 서브프로세스는 머신비전 사용자 인터페이스 프로세스와 같은 사용자 인터페이스 프로세스에 소프트웨어 객체들 세트를 제공하기에 적합하다. 소프트웨어 객체들 세트 각각은 실행될 때 머신비전 사용자 인터페이스 프로세스에 의해 사용된 대응 사용자 인터페이스 요소를 자동으로 조정 및 정의할 수 있다.
코디네이터 서브프로세스는 동작 6200에서 실행되며, 머신비전 사용자 인터페이스 프로세스에서 각 객체의 한 예만을 허용하는 게 적합하다. 동작 6300에서 사용자 인터페이스 프로세스는 코디네이터 서브프로세스에 의해 조정 및 정의될 수 있다.
머신비전 사용자 인터페이스 프로세스의 코디네이터 서브프로세스를 통해 머신비전 시스템의 사용자 인터페이스는 정의 및 조정될 수 있다. 머신비전 사용자 인터페이스 프로세스는 다수의 구성요소들을 포함한다. 여기서 설명하는 방식은 정의 혹은 조정된 사용자 인터페이스를 야기할 수 있다.
동작 6400에서 제품들 세트의 객체는 선택된 구성요소에 제공될 수 있다. 객체는 모듈일 수는 있지만 부가적인 사용자 제공 코드를 이용하지는 않는다. 소프트웨어 객체들 세트는 머신비전 장치의 리스트를 표현하는 제1 사용자 인터페이스 요소를 조절하기에 적합한 장치 선택 객체를 포함한다. 획득된 아이템의 이미지를 끌어오기에 적합한, 리스트에서 설정된 머신비전 장치의 사용자 선택은 아이템의 이미지·아이템에 대한 이미지 정보·이미지에서 추출된 정보 등을 획득하기 위해 사용된 설정된 머신비전 장치를 사용하기에 적합하다.
소프트웨어 객체들 세트는 그룹 내 모든 장치에서 획득한 이미지들이 동일한 사용자 인터페이스에서 관측될 수 있도록 그룹화된 머신비전 장치들을 허용하기에 적합한 그룹 제어 객체를 포함한다. 소프트웨어 객체들 세트는 제2 사용자 인터페이스 요소를 조정하기에 적합한 시청 조절 객체를 포함한다. 제2 사용자 인터페이스 요소는 사용자 선택에 기초하여 아이템들의 이미지들과 이미지에 대한 정보를 표현하기에 적합하다.
소프트웨어 객체들 세트는 사용자 인터페이스의 툴바 버튼의 사용자 선택에 기초하여 툴바 버튼을 자동으로 활성화시키거나 비활성화시키기에 적합한 기호 기능 객체를 포함한다. 또한 제3 사용자 인터페이스 요소를 조정하기에 적합한 기록 제어 객체 역시 포함한다. 여기서 제3 사용자 인터페이스 요소는 제공된 머신비전 하드웨어, 펌웨어 및 소프트웨어에 대한 검사 결과를 야기하기에 적합하다. 소프트웨어 객체들 세트는 제4 사용자 인터페이스 요소를 조정하기에 적합한 차트 제어 객체를 갖는데, 제4 사용자 인터페이스 요소는 머신비전 시스템의 선택된 장치의 타이밍 정보를 표현한다.
동작 6500에서 객체는 선택된 구성요소에 의해 실행된다. 코디네이터 서브프로세스는 선택된 구성요소 외 다른 사용자 인터페이스 프로세스의 구성요소들이 객체를 사용하도록 결정할 수 있다.
동작 6600에서 선택된 구성요소 외 다른 객체를 사용하는 다른 구성요소들은 선택된 구성요소가 실행하는 객체인 것을 통지한다. 코디네이터 서브프로세스는 선택된 구성요소가 선택된 객체를 실행할 때 선택된 객체를 실행하기에 적합한 각각의 구성요소를 통지한다. 선택된 객체는 소프트웨어 객체들 세트 중 하나일 수 있다.
동작 6700에서 사용자 인터페이스는 사용자 인터페이스의 요소들을 생성하기 위해 사용된 코디네이터 서브프로세스 또는 객체들 세트에 의해 확립된 정의에 기초하여 표현되며, 머신비전 시스템과 관련된 제어 아이콘들의 세트 및 패널들을 포함한다.
동작 6800에서 이미지와 관련된 정보는 사용자 인터페이스를 통해 표현된다. 사용자 인터페이스는 이미지와 관련된 정보가 머신비전 시스템의 하나 또는 그 이상의 장치를 위해 표현되는 패널을 포함한다.
동작 6900에서 이미지 분석 결과는 표현될 수 있으며, 결과는 판독 및 해독될 수 있는 객체와 관련된 마크와 연관돼 있다. 마크는 객체의 하나 또는 그 이상의 특성들을 나타낸다.
도면 7은 도면 1의 정보장치(1100) 및 서버(1700)를 포함하는 정보장치(7000)의 블록도이다. 정보장치(7000)는 하나 또는 그 이상의 네트워크 인터페이스들(7100), 하나 또는 그 이상의 프로세서들(7200), 명령어들(7400)을 포함하는 하나 또는 그 이상의 메모리들(7300), 하나 또는 그 이상의 입출력(I/O) 장치들(7500), 입출력 장치(7500)에 연결된 하나 또는 그 이상의 사용자 인터페이스들(7600) 등과 같은 다수의 회로들과 구성요소들을 포함한다.








