
신속한 프로토타입 개발 진행
임베디드 이미지 처리 어플리케이션을 빠르게 테스트하시겠습니까? 이 작업은 소스 코드의 복잡한 크로스 컴파일링에 실패할 필요가 없습니다. IDS 임베디드 드라이버와 HALCOM 임베디드 설치의 기존 부품들을 갖는 Raspberry Pi와 같은 임베디드 보드에서 빠르고 쉬운 셋업 개념 증명. 이 어플리케이션 노트는, 기존 부품으로 간단한 임베디드 코드 리더를 구축하고, 데스크탑 PC와 성능을 비교하는 단계별 명령어를 제공할 것입니다.
Raspberry Pi와 IDS 카메라로 코드 판독
QR, Atztec, ECC200과 같은 코드 판독은 HALCON으로 매우 쉽게 구현됩니다. HDevelop (HALCON 개발 환경)는 여러 샘플 스크립트들을 포함합니다. 하지만 임베디드 보드에서 이 어플리케이션을 어떻게 실행하시나요? 임베디드 CPU가 충분한 전력을 가지고 있나요? 이 어플리케이션 노트는, 기존 부품으로 간단한 임베디드 코드 리더를 구축하고 및 데스크탑 PC와 성능을 비교하는 단계별 명령어를 제공할 것입니다
HALCON 스크립트 엔진(HDevEngine)을 사용하면 생성된 스크립트가 지원되는 플랫폼 모두에서 실행되는 장점이 있습니다. 이미지 처리는 플랫폼을 독립적으로 유지할 것이므로, HDevelop을 통해 확장 가능합니다. HALCON 스크립트는 개발 PC에서 HDevelop로 생성되고, 임베디드 보드에서 기존 도구 hrun으로 실행됩니다. 이 접근 방식을 사용하면, 단 한 줄의 소스 코드도 직접 크로스 컴파일할 필요가 없습니다.
요구사항
몇 가지 준비만 하면, 이것과 임의의 다른 HALCON 임베디드 어플리케이션은 Raspberry Pi 3에서 매우 빠르게 구현될 수 있습니다. 다음의 항목이 필요합니다:
- Raspbian 이미지 및 HALCON 임베디드 런타임 환경과 함께 설치된, Raspberry Pi (버전 2부터, ARMv7 플랫폼 호환 가능),
- HALCON 개발 환경이 설치된(라이센스가 부여된) 데스크탑 PC
- IDS uEye 카메라를 사용하려면, Raspberry Pi에 IDS 임베디드 드라이버를 설치해야 합니다(IDS 산업용 카메라에 대한 임베디드 드라이버를 설치하세요)
HALCON 임베디드를 사용해보기 위하여, IDS 또는 MVTec에서 USB 동글 라이센스가 포함된 평가 패키지를 받을 수 있습니다.
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 카메라로 코드 판독
IDS uEye 카메라로 2D 코드 다음 "스캔" 그러므로, Raspberry Pi에 IDS 임베디드 드라이버를 설치해야 합니다. (IDS 산업용 카메라를 위한 임베디드 보드 드라이버)
간단한 스크립트 "datcode.hdev"로 시작하며, 그것은 또한 HALCON 임베디드 설치와 함께 제공됩니다. 개발 PC에 대한 설치 부분에서 찾을 수 있습니다.
HDevelop 어시스턴트 "이미지 획득"을 사용하여, uEye 카메라 이미지 획득을 위한 코드를 삽입할 수도 있습니다. 인터페이스로 "uEye"를 선택하세요.
그 후, 스크립트는 데스크탑 PC와 Raspberry Pi 모두에서 실행될 수 있습니다. 임베디드 보드에 스크립트를 복사하고 hrun 도구로 다시 실행하세요.
pi@raspberrypi:~ $ hrun datacode.hdev
결과적으로, uEye 카메라의 라이브 디스플레이(live display)가 표시됩니다. 카메라 앞에 ECC200 타입의 데이터매트릭스 코드가 있으면, HALCON이 코드를 디코딩하고 콘텐츠를 보여줄 것입니다.
간단한 임베디드 코드 판독기를 사용할 준비가 되었습니다.
이미지 획득 팁
각 HALCON에서 임베디드 보드의 카메라 설정이 정말 쉽지 않기 때문에, Windows PC와 uEye Cockpit에서 카메라 사전-설정 가능성을 더 잘 활용할 수 있습니다. 이것은 카메라를 조절하는 것에서 가능한 최고의 솔루션입니다. 나중에 HALCON에서 사용할 수 있도록, 카메라의 파라미터 세트에 구성을 저장하세요. 이것은 프레임 그래버를 열 때, /cam/set1을 "CameraType"의 파라미터 값으로 사용함으로써, 매우 간단하게 수행됩니다. uEye 카메라 구성에 대한 추가 정보는, 우리의 테크팁을 읽으세요. “프로그래밍 대신 파라미터화: 더 빠른 카메라 셋업 방법”.
임베디드 보드는 데스크탑 PC의 성능을 갖지 않기 때문에, 첫 번째 테스트를 위해 카메라 프레임 레이트를 줄여야 합니다. 먼저, 이미지 처리에 카메라 구성을 사용하기 전에 HALCON없이 안정적인 카메라 라이브 디스플레이를 얻으세요.
임베디드 개발 환경 구축하기 위한 팁
OS 이미지를 준비하는 것부터 시작하여 프로그램이 실행될 때까지 파일을 여기저기로 복사하는, 임베디드 보드의 셋업은 상이한 방식으로 처리될 수 있습니다. 최신 Raspbian 이미지를 사용하면, SSH 및 VNC 서버를 통해 (디스플레이, 키보드 및 마우스를 연결하지 않고) 완전히 "헤드리스"인 Raspberry Pi로 작업할 수 있습니다. 그러나 감당해야 할 여러 장애물들이 있습니다. 특히, 회사 네트워크에서, 개발 PC로부터 Raspberry Pi로의 네트워크 연결은 엄청난 도전일 수 있습니다.
가장 쉬운 시작 방법은, 디스플레이, 마우스, 키보드를 연결하고, 두 시스템 간에 데이터(프로그램, 스크립트, HALCON 설치 파일)를 복사하기 위해 USB 메모리 스틱을 사용하는, 고전적인 방법입니다. 더 복잡한 어플리케이션의 경우, 이것이 가장 편안한 방법은 아니지만, 첫 번째 개념 증명을 위해서는 정말 쉽고 빠르게 구현할 수 있습니다.
더 많은 어플리케이션 노트와 테크팁은 우리의 웹 사이트 https://kr.ids-imaging.com/knowledge-base.html에서 찾을 수 있습니다.
부록
소스 코드 “datacode.hdev”
uEye 카메라로 코드를 판독 가능하게 스크립트 datacode.hdev의 수정된 코드 가장 중요한 수정은 색으로 표시됩니다. 스크립트를 사용하려면, HDevelop에 복사하고 “datacode.hdev”로 저장합니다.