HALCON 임베디드로 신속한 프로토타입 개발 진행: Raspberry Pi와 IDS 카메라로 코드 판독

신속한 프로토타입 개발 진행

Raspberry Pi와 IDS 카메라로 코드 판독

QR, Atztec, ECC200과 같은 코드 판독은 HALCON으로 매우 쉽게 구현됩니다. HDevelop (HALCON 개발 환경)는 여러 샘플 스크립트들을 포함합니다. 하지만 임베디드 보드에서 이 어플리케이션을 어떻게 실행하시나요? 임베디드 CPU가 충분한 전력을 가지고 있나요? 이 어플리케이션 노트는, 기존 부품으로 간단한 임베디드 코드 리더를 구축하고 및 데스크탑 PC와 성능을 비교하는 단계별 명령어를 제공할 것입니다

HALCON 스크립트 엔진(HDevEngine)을 사용하면 생성된 스크립트가 지원되는 플랫폼 모두에서 실행되는 장점이 있습니다. 이미지 처리는 플랫폼을 독립적으로 유지할 것이므로, HDevelop을 통해 확장 가능합니다. HALCON 스크립트는 개발 PC에서 HDevelop로 생성되고, 임베디드 보드에서 기존 도구 hrun으로 실행됩니다. 이 접근 방식을 사용하면, 단 한 줄의 소스 코드도 직접 크로스 컴파일할 필요가 없습니다.

HALCON 임베디드 설치

타겟 플랫폼에서 HALCON 임베디드 "Runtime" 패키지를 복사하고 압축을 풉니다. 이 설치 경로는 귀하의 HALCONROOT일 것입니다. (예를 들어, /opt/halcon)

> sudo tar -xvf <paket> -C /opt/halcon

시스템에서 애플리케이션에 대하여 HALCON을 사용하기 위하여, 몇 가지 환경 변수들을 정의해야 합니다. 셸 스크립트(shell script)를 생성하고, 적절한 변수를 설정하고(표시 참조), 예를 들어, HALCONROOT 폴더에서, 스크립트를 저장하세요.(/opt/halcon/.profile_halcon)

로그온 할 때 새로운 HALCON 환경을 활성화하기 위하여, 사용자 폴더의 프로필 파일 끝에 다음 명령어를 추가합니다: ~/.profile

source /opt/halcon/.profile_halcon

HALCON 임베디드 라이센싱

HALCON 임베디드는 해당 USB 동글을 갖는 라이센스 파일을 통하여 활성화됩니다. IDS 지원 또는 MVTec에서 라이센스 쌍(pair)를 요청할 수 있습니다. /opt/halcon/readme_embedded.txt 파일의 "라이센스" 항목에서 라이센스 절차를 확인할 수 있습니다.

  • USB 동글과 호환되는 license.dat 파일을 타겟 시스템의 /opt/halcon/license 폴더에 복사합니다.
  • USB 동글을 Raspberry Pi의 빈 USB 포트에 연결하고, 동글이 VendorID 1547로 인식되는지 Linux 콘솔에서 dmesg 명령어로 확인합니다.
  • 그런 다음, Linux 시스템에서 UDEV 규칙을 만들어 모든 프로세스에 대해 동글에 액세스할 수 있도록 합니다. 다음 내용으로 /etc/udev/rules.d/98-sglock.rules 파일을 생성합니다.
ATTRS{idVendor}=="1547", ATTRS{idProduct}=="1000", MODE="666"
  • 새 규칙을 활성화하려면, UDEV 데몬(daemon)을 재시작해야 합니다. 이를 위해, Raspberry Pi를 재시작하거나, 다음 명령어를 실행하여 이 서비스를 재로딩합니다:
> sudo /etc/init.d/udev reload
  • hbench 도구를 사용하여 HALCON 설치를 테스트하세요. 오류 2036이 발생하면, 라이센스에 문제가 있음을 나타냅니다. 이 경우, 라이센스 절차의 모든 단계를 다시 확인하세요.

HALCON 벤치마크 도구

hbench 도구를 통해, HALCON은 테스트 시스템에서 프로시저 호출을 검토하고 평가하는 데 사용될 수 있는 자체 벤치마크 도구를 제공합니다. 이는 해당 플랫폼(<HALCONROOT>/bin/<HALCONARCH>/hbench)에 대한 각 HALCON 설치에 포함됩니다.

Raspberry Pi 3의 연산자 find_data_code_2d에 대한 HALCON 벤치마크:

pi@raspberrypi:~ $ $HALCONROOT/bin/$HALCONARCH/hbench -operator
find_data_code_2d -reentrant
HALCON 12.0 Benchmark (v3.1)
============================
(computing on images of size 640x480)
OPERATOR reentrant
time[ms]
Data code reading, ecc 200 (byte) ...... 25.481

Core i7 Windows PC에서 연산자 find_data_code_2d에 대한 HALCON 벤치마크:

C:\Program Files\MVTec\HALCON-12.0\bin\x64-win64\hbench.exe -operator
find_data_code_2d –reentrant
HALCON 12.0.2 Benchmark (v3.1)
==============================
(computing on images of size 640x480)
OPERATOR reentrant
time[ms]
Data code reading, ecc 200 (byte) ...... 4.811

2D 코드(ECC200) 판독을 위한 HALCON 연산자의 벤치마크는 상이한 플랫폼에서 처리 시간의 상당한 차이를 보여줍니다.

코드 기반의 간단한 이미지 판독 스크립트

샘플 이미지를 판독하고 HDevEngine을 갖는 두 시스템 모두에서 실행되는, 간단한 QR-Code HALCON 스크립트를 사용하여, 판독 성능의 차이를 확인할 수 있습니다.

예를 들어, HALCON 예시 스크립트 qrcode_simple.hdev로 시작합니다. /examples/hdevelop/Applications/Data_Codes/ 폴더에서 찾을 수 있습니다. 판독 프로세스 및 출력 메시지에 대한 단순 시간 측정으로 이를 향상시킵니다.

HDevelop으로 스크립트를 테스트한 후, 임베디드 보드에 복사하고 hrun 도구로 직접 실행합니다. 이것은 HALCON 임베디드로 미리 컴파일되어 제공됩니다. <HALCON-ROOT>/bin/<HALCONARCH>/hRun 폴더에서 찾을 수 있습니다.

pi@raspberrypi:~ $ hrun qrcode_simple.hdev

시간 측정은 두 시스템의 성능 차이를 확인합니다. (왼쪽: Windows Desktop Core i7, 오른쪽 : Raspberry Pi 3):

IDS 카메라로 코드 판독

HALCON 임베디드 설치에는 2D 코드를 판독하기 위한 "datacode.hdev" 스크립트가 포함되어 있습니다
HALCON 임베디드 설치에는 2D 코드를 판독하기 위한 "datacode.hdev" 스크립트가 포함되어 있습니다
드라이버 소프트웨어를 갖는 uEye 카메라는, 동일한 인터페이스를 갖는 두 플랫폼 모두에서 사용 가능합니다.
드라이버 소프트웨어를 갖는 uEye 카메라는, 동일한 인터페이스를 갖는 두 플랫폼 모두에서 사용 가능합니다.

uEye 카메라를 사용하기 위하여, 몇 줄의 스크립트 코드만 수정하면 됩니다. 카메라의 소프트웨어 인터페이스가 모든 플랫폼에서 같게 유지되므로, 모든 플랫폼에 대하여 하나의 "프레임 그래버(framegrabber)" 호출만 있으면 됩니다.

HDevelop 어시스턴트 "이미지 획득"을 사용하여, uEye 카메라 이미지 획득을 위한 코드를 삽입할 수도 있습니다. 인터페이스로 "uEye"를 선택하세요.

그 후, 스크립트는 데스크탑 PC와 Raspberry Pi 모두에서 실행될 수 있습니다. 임베디드 보드에 스크립트를 복사하고 hrun 도구로 다시 실행하세요.

pi@raspberrypi:~ $ hrun datacode.hdev

결과적으로, uEye 카메라의 라이브 디스플레이(live display)가 표시됩니다. 카메라 앞에 ECC200 타입의 데이터매트릭스 코드가 있으면, HALCON이 코드를 디코딩하고 콘텐츠를 보여줄 것입니다.

간단한 임베디드 코드 판독기를 사용할 준비가 되었습니다.

부록

소스 코드 “datacode.hdev”

uEye 카메라로 코드를 판독 가능하게 스크립트 datacode.hdev의 수정된 코드 가장 중요한 수정은 색으로 표시됩니다. 스크립트를 사용하려면, HDevelop에 복사하고 “datacode.hdev”로 저장합니다.