HALCON 23.11.0.0 MVTec Software Installation Guide
- June 15, 2024
- HALCON
Table of Contents
- 23.11.0.0 MVTec Software
- Product Information
- Specifications
- About This Manual
- Product Usage Instructions
- Chapter 1: Introduction
- Chapter 2: Installing HALCON
- 2.1 Downloading HALCON
- 2.2 Starting the Installation
- FAQ
- Q: What are the different editions of HALCON?
- Q: What are the minimum system requirements for HALCON?
- Udev rules to allow access to hidraw device for CodeMeter dongles
- References
- Read User Manual Online (PDF format)
- Download This Manual (PDF format)
23.11.0.0 MVTec Software
Product Information
Specifications
- Product Name: HALCON 23.11 Progress
- Version: 23.11.0.0
- Installation Type: Software
- Platform: Windows, Linux
About This Manual
The manual provides the necessary information to install HALCON
and setup the licensing mechanism successfully. It is divided into
the following chapters:
- Notation
- Symbols
- Introduction
- Installing HALCON
Product Usage Instructions
Chapter 1: Introduction
1.1 HALCON Editions
This section provides information about different editions of
HALCON.
1.2 HALCON Configurations
This section explains various configurations available for
HALCON.
1.3 Releases and HALCON Versions
This section provides information about different releases and
versions of HALCON.
1.4 Supported Platforms and Minimum System Requirements
This section provides information about the platforms supported
by HALCON and the minimum system requirements.
1.4.1 Platform-Specific HALCON Versions
This subsection provides information about HALCON versions
specific to different platforms.
1.4.2 Platform-Independent Applications
This subsection provides information about platform-independent
applications supported by HALCON.
1.4.3 HALCON Variable Inspect (Visual Studio Extension)
This subsection provides information about the requirements for
using HALCON Variable Inspect, a Visual Studio Extension.
1.4.4 Requirements for Deep Learning and Deep-Learning-Based
Methods
This subsection provides information about the requirements for
using deep learning and deep-learning-based methods in HALCON.
1.4.5 Requirements for Language Interface Examples
This subsection provides information about the requirements for
using language interface examples in HALCON.
1.5 Limitations
This section provides information about the limitations of
HALCON.
1.5.1 General Limitations
This subsection provides information about general limitations
of HALCON.
1.5.2 Limitations for Dongle-based Licenses
This subsection provides information about limitations specific
to dongle-based licenses of HALCON.
1.5.3 Limitations Related to Compute Devices
This subsection provides information about limitations related
to compute devices in HALCON.
1.5.4 Limitations Related to Image Acquisition
This subsection provides information about limitations related
to image acquisition in HALCON.
1.5.5 Limitations Related to OpenGL
This subsection provides information about limitations related
to OpenGL in HALCON.
1.5.6 Limitations Related to Extension Packages
This subsection provides information about limitations related
to extension packages in HALCON.
1.6 Licensing
This section provides information about licensing HALCON.
Chapter 2: Installing HALCON
2.1 Downloading HALCON
This section provides instructions on how to download
HALCON.
2.2 Starting the Installation
This section provides instructions on how to start the
installation of HALCON.
FAQ
Q: What are the different editions of HALCON?
A: The different editions of HALCON are…
Q: What are the minimum system requirements for HALCON?
A: The minimum system requirements for HALCON are…
Installation Guide
HALCON 23.11 Progress
All about installing and licensing HALCON, Version 23.11.0.0 All rights
reserved. No part of this publication may be reproduced, stored in a retrieval
system, or transmitted in any form or by any means, electronic, mechanical,
photocopying, recording, or otherwise, without prior written permission of the
publisher.
Copyright © 2003-2023 by MVTec Software GmbH, Munich, Germany MVTec Software
GmbH Protected by the following patents: US 7,239,929, US 7,751,625, US
7,953,290, US 7,953,291, US 8,260,059, US 8,379,014, US 8,830,229, US
11,328,478. Further patents pending. Microsoft, Windows, Windows 10 (x64
editions), 11, Windows Server 2016, 2019, 2022 Microsoft .NET, Visual C++ and
Visual Basic are either trademarks or registered trademarks of Microsoft
Corporation. AMD and AMD Athlon are either trademarks or registered trademarks
of Advanced Micro Devices, Inc. Arm is a registered trademark of Arm Limited.
CodeMeter is a trademark of WIBU SYSTEMS AG. Intel and Pentium are either
trademarks or registered trademarks of Intel Corporation. Linux is a trademark
of Linus Torvalds. OpenCL is a trademark of Apple Inc. NVIDIA, CUDA, cuBLAS,
and cuDNN are either trademarks or registered trademarks of NVIDIA
Corporation. OpenGL is a trademark of Silicon Graphics, Inc. SuSE is a
trademark of Novell, Inc. All other nationally and internationally recognized
trademarks and tradenames are hereby recognized. More information about HALCON
can be found at: http://www.halcon.com
About This Manual
The manual provides the necessary information to install HALCON and setup the
licensing mechanism successfully. It is divided into the following chapters:
· Introduction A short overview of the different HALCON versions, available
licensing schemes, and the system requirements.
· Installing HALCON How to install HALCON, either for the first time or in
form of an update.
· Uninstalling HALCON How to uninstall HALCON.
· Installing Third-Party Components How to install third-party libraries for
deep learning on Linux aarch64.
· All About HALCON Licenses Detailed information about the different types of
licenses and how to obtain and install them.
· Troubleshooting Possible problems and how to solve them.
· More on the Installation Details like the installed file structure and the
relevant environment variables.
Notation
Except for Linux-specific sections, file paths and environment variables are
printed in the Windows convention, e.g.,
%HALCONEXAMPLES%extension_packagehalconuser
to denote the subdirectory halconuser containing an example package within the
HALCON examples directory referenced by the environment variable
HALCONEXAMPLES (see section A.4 on page 43 for more information on environment
variables). The same expression in Linux convention would look like
$HALCONEXAMPLES/extension_package/halconuser
Symbols
The following symbols are used within the manual:
This symbol indicates a tip.
! This symbol indicates an information you should pay attention to.
Contents
1 Introduction
7
1.1 HALCON Editions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 HALCON Configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Releases and HALCON Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 Supported Platforms and Minimum System Requirements . . . . . . . . . . . . . . . . . . . . . . 8
1.4.1 Platform-Specific HALCON Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.2 Platform-Independent Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4.3 HALCON Variable Inspect (Visual Studio Extension) . . . . . . . . . . . . . . . . . . . . 9
1.4.4 Requirements for Deep Learning and Deep-Learning-Based Methods . . . . . . . . . . . 10
1.4.5 Requirements for Language Interface Examples . . . . . . . . . . . . . . . . . . . . . . . 12
1.5 Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5.1 General Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5.2 Limitations for Dongle-based Licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5.3 Limitations Related to Compute Devices . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.5.4 Limitations Related to Image Acquisition . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.5.5 Limitations Related to OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.5.6 Limitations Related to Extension Packages . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.6 Licensing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2 Installing HALCON
15
2.1 Downloading HALCON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Starting the Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.1 Windows/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 Switching HALCON Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4 Updating HALCON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5 Installing I/O Device and Image Acquisition Interfaces . . . . . . . . . . . . . . . . . . . . . . . 19
2.6 Installing Extension Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.6.1 Using an Extension Package Within HDevelop . . . . . . . . . . . . . . . . . . . . . . . 19
2.6.2 Using an Extension Package in a Stand-Alone Application . . . . . . . . . . . . . . . . . 19
3 Uninstalling HALCON
21
3.1 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2 Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4 Installing Third-Party Components
23
4.1 Third-Party Components for Deep Learning on Linux aarch64 . . . . . . . . . . . . . . . . . . . 23
4.1.1 Getting the Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.1.2 Including the Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.1.3 Additional Required General Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5 All About HALCON Licenses
25
5.1 What is a License? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.2 Evaluation Licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.3 Development Licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.3.1 License Bound to a Network Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.3.2 License Bound to a Dongle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.3.3 License Bound to a Remote Dongle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.4 Runtime Licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.4.1 Getting a Runtime License Restricted to Specific Modules . . . . . . . . . . . . . . . . . 28 5.4.2 Dynamic Modules for Deep-Learning-Based Applications . . . . . . . . . . . . . . . . . 29 5.5 How to Upgrade a License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.6 How to Check the Genuineness of HALCON (Windows) . . . . . . . . . . . . . . . . . . . . . . 30
6 HALCON in a Docker Container
31
6.1 Include a HALCON Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6.1.1 Basic HALCON Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6.1.2 Required System Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6.1.3 HALCON Language Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
6.2 Include External Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
6.2.1 NVIDIA GPUs for Deep Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
6.2.2 NVIDIA GPUs for OpenCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.3 Licensing HALCON within a Docker Container . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.3.1 Remote Dongle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.3.2 Forward USB License Dongle Into Container (Linux Only) . . . . . . . . . . . . . . . . . 34
7 Troubleshooting
35
7.1 Problems During Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
7.1.1 HALCON Variable Inspect (Visual Studio Extension) . . . . . . . . . . . . . . . . . . . . 35
7.2 Problems Concerning Licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.2.1 Extracting Host IDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.3 Troubleshooting in HDevelop or HALCON Applications . . . . . . . . . . . . . . . . . . . . . . 37
7.3.1 Startup Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
A More on the Installation
39
A.1 Software Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
A.2 The Installed File Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
A.2.1 Main Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
A.2.2 Machine Configuration Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
A.2.3 User Configuration Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
A.3 HALCON tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
A.4 HALCON’s Environment Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
A.4.1 Setting Environment Variables Under Windows . . . . . . . . . . . . . . . . . . . . . . . 43
A.4.2 Setting Environment Variables Under Linux . . . . . . . . . . . . . . . . . . . . . . . . . 43
A.4.3 HALCON-Specific Environment Variables . . . . . . . . . . . . . . . . . . . . . . . . . 43
A.4.4 General Environment Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Index
45
Introduction
7
Introduction
Chapter 1
Introduction
To use HALCON on a computer, you must 1. install HALCON on this computer and
2. obtain a license.
Before looking into the details of these two steps in chapter 2 on page 15 and
chapter 5 on page 25, this chapter gives an overview of the different HALCON
versions and licensing methods. Finally, it describes the system requirements
for running HALCON.
1.1 HALCON Editions
HALCON comes in two editions: · HALCON Progress Edition This edition is
available by subscription with a six-month release cycle. · HALCON Steady
Edition This edition is available as a regular purchase with a biennial
release cycle. The development version is provided in two variants (see
below).
1.2 HALCON Configurations
You can use HALCON in two configurations: 1. Development version The
development version (sometimes also denoted as full version) includes the full
spectrum of HALCON, i.e., language interfaces to C, C++, .NET, and Python,
interfaces to image acquisition and I/O devices, the Extension Package
Interface, which allows you to integrate your own HALCON operators, and, of
course, the interactive development environment HDevelop. You need this
version whenever you want to develop applications based on HALCON. The
development version of HALCON Steady is available in two variants: HALCON
Steady and HALCON Steady Deep Learning, which includes the deep learning
functionality. 2. Runtime version If you have finished developing an
application based on HALCON, you only need a runtime version of HALCON for
each computer where the application is to be run. Since the runtime version is
not determined for developing applications it does not include the interactive
development environment HDevelop. Furthermore, you can obtain runtime version
licenses that include only parts of the functionality (so-called modules). For
more information, see section 5.4 on page 28 and contact your local
distributor.
8
Introduction
1.3 Releases and HALCON Versions
The term version has a second meaning: It denotes the HALCON major releases,
e.g., HALCON 23.11.0.0 (HALCON Progress), or HALCON 23.11.1.0 (HALCON Steady).
For HALCON Steady there might also be so-called maintenance releases like
HALCON 23.11.2.0 or higher. The main differences between these two types of
releases are:
· Functionality A new HALCON version always represents a major step in the
functionality. This means that it contains a significant number of new
operators, but possibly also new functionality in HDevelop, e.g., new
assistants. Furthermore, the functionality of individual operators may be
extended or operators have been sped up. Of course, all currently known bugs
in the preceding release will have been fixed.
In contrast, the main intention of a maintenance release is to fix all
currently known bugs. Nevertheless, such a release typically also brings some
speed-ups and minor functional extensions.
· Compatibility A new HALCON version is not downward compatible, with the
following implications: First, you must upgrade your HALCON license (see
section 5.5 on page 30). Second, if you want to run applications created with
an older release under the new version, you must regenerate the applications,
as the new HALCON library is not binary compatible to the old one. The term
‘applications’ includes also image acquisition interfaces and extension
packages you created yourself based on an older release. Note that a new
version may also be source-code incompatible in some parts, e.g., the
signature of an operator or a class method may have been changed. These
changes are indicated in the release notes of the HALCON version. In such a
case, you must adapt the source code of your application before regenerating
it.
In contrast, a maintenance release is in most cases fully downward compatible
to its corresponding version. This compatibility includes the license. Please
note, however, that some maintenance releases may not be fully binary or
source-code compatible because of technical reasons. In such cases, the
release notes will contain corresponding warnings and describe how to proceed.
1.4 Supported Platforms and Minimum System Requirements
HALCON runs on Windows and Linux. The minimum system requirements are listed
in table 1.1; more details follow below.
1.4.1 Platform-Specific HALCON Versions
For the operating systems listed in table 1.1 on page 9, platform-specific
versions of HALCON’s executables and libraries are provided. The name of the
currently used version is stored in the environment variable HALCONARCH. On
Windows and Linux, HALCON uses AVX2-optimized code for many operators, when
run on a machine that supports AVX2. Note that HALCON should also run on newer
versions of the operating systems than the ones listed; however, we cannot
guarantee this. HALCONARCH appears in several directory paths: Executable
HALCON programs like hdevelop, and DLLs like halcon.dll (Windows only), reside
in %HALCONROOT%bin%HALCONARCH%. On Windows systems, this path is therefore
automatically included in the environment variable PATH; on a Linux system,
you must include it in your login script. The libraries that you need for
linking programs, e.g., halcon.lib (Windows) or libhalcon.so (Linux) reside in
the directory %HALCONROOT%lib%HALCONARCH%. Please note that when creating a
64-bit application, both the development computer and the computer on which
the application will run must be 64-bit platforms. To create .NET applications
under Linux, you need to install .NET Core or Mono.
1.4 Supported Platforms and Minimum System Requirements
9
Introduction
Architecture Processor
Disk Space Memory Display Resolution Supported OS Versions
Compiler HALCONARCH Specifics
Libraries
Application-Specific Requirements
Compute Device with OpenCL
Windows
Linux
x64
x64
aarch64
armv7a
64-bit
64-bit
64-bit
32-bit
Intel 64 or AMD 64 SSE2 (AVX2 dispatch)
Intel 64 or AMD 64 SSE2 (AVX2 dispatch)
Armv8-A with AArch64 support
Armv7-A with NEON support
4 GB / 1 GB (full installation / Runtime without deep learning)
256 MB
1024 × 768
1024 × 768
Windows 10 (x64 editions), 11, Windows Server 2016, 2019, 2022
Linux x86_64
Linux aarch64
Linux armv7a
Visual Studio 2013
gcc 7.5
gcc 7.5
gcc 7.5
x64-win64
x64-linux
aarch64-linux
armv7a-linux
Kernel with hidraw support
Kernel with hidraw support, hard-float ABI
GLIBC_2.27, GLIBCXX_3.4.24
GLIBC_2.27, GLIBCXX_3.4.24
GLIBC_2.27, GLIBCXX_3.4.24
X11R7, freetype 2.4.11, fontconfig 2.10.95, OpenGL 2.0, OpenSSL 1.1.1, libdbus-1-3 (HDevelop)
X11R7, freetype 2.4.11, fontconfig 2.10.95, OpenGL 2.0, OpenSSL 1.1.1
X11R7, freetype 2.4.11, fontconfig 2.10.95, OpenGL 2.0, OpenSSL 1.1.1
OpenCL 1.1
OpenCL 1.1
OpenCL 1.1 [1]
OpenCL 1.1 [1]
Table 1.1: Minimum system requirements. Further requirements occur for the HALCON Variable Inspect and deep learning applications. Please see the corresponding sections below. [1]: The support of OpenCL depends highly on the platform and the OpenCL driver coming with it, use at your own risk.
1.4.2 Platform-Independent Applications
Even when using a platform-specific version of HALCON, you can still create
platform-independent applications, in two ways:
· With HDevelop, HALCON’s integrated development environment (IDE). HDevelop
programs are stored in a platform-independent format, thus, you can run them
on any supported platform.
· With HALCON/.NET, HALCON’s interface to .NET programming languages.
Applications written in .NET languages are stored in a platform-independent
intermediate language, which is then converted by the so-called common
language runtime into platform-specific code.
· With HALCON/Python, HALCON’s interface to Python script language. Python is
an interpreted, highlevel and general-purpose programming language that runs
your code platform independently on a language interpreter engine.
You can combine both methods by using HDevEngine/.NET to run HDevelop programs
from a HALCON/.NET application.
1.4.3 HALCON Variable Inspect (Visual Studio Extension)
HALCON Variable Inspect is shipped in two packages. Which package to use
depends on the version of Visual Studio to support. The respective package of
HALCON Variable Inspect depends on the following components:
Variable Inspect Extension for Visual Studio 2019 and earlier · Visual Studio
2013 (Update 5 or higher) through Visual Studio 2019
10
Introduction
· .NET 4.6 Older installations of Visual Studio 2013 might be missing the .NET
4.6 framework. If the installation of HALCON Variable Inspect fails with an
error, install the .NET 4.6 framework first.
Variable Inspect Extension for Visual Studio 2022 and later · Visual Studio
2022 and later · .NET 4.7.2
1.4.4 Requirements for Deep Learning and Deep-Learning-Based Methods
Disk space requirement for HALCON including deep learning:
Runtime:
3.4 GB (using CUDA 12.1.0).
Full installation:
20 GB.
Applications of deep learning as well as deep-learning-based methods, like
Deep OCR, may have further requirements depending on the device (CPU or GPU)
on which they are running. These requirements are given below in table 1.3 and
table 1.4, respectively.
Whether an implementation is available for a specific device depends on the
method and task. An overview for the different deep-learning-based methods is
given in table 1.2.
Method (Model ‘type’)
3D Gripping Point Detection (‘3d_gripping_point_detection’)
Anomaly Detection (‘anomaly_detection’)
Classification (‘classification’)
Deep Counting
Component: Backbone (‘counting’)
Deep OCR
Component: Detection (‘ocr_detection’)
Component: Recognition (‘ocr_recognition’)
Global Context Anomaly Detection (‘gc_anomaly_detection’)
Multi-Label Classification (‘multi_label_classification’)
Object Detection and Instance Segmentation (‘detection’)
Semantic Segmentation and Edge Extraction (‘segmentation’)
Training
GPU
CPU [1] [1] [1] [1] [1,2] [1] [1] [1]
Inference
GPU
CPU
[1]
Table 1.2: Deep learning: Model dependencies. [1]: With exception of aarch64 and armv7a. [2]: Supported but not optimized and as a consequence time- intensive.
GPU Applications: When running deep learning as well as deep-learning-based
applications on GPU, additional prerequisites apply. Table 1.3 lists
additional prerequisites for which HALCON has been tested successfully. In
case of multiple entries the ones corresponding have to be used.
HALCON checks which CUDA-version is installed and looks automatically for the
corresponding subdirectories with its libraries. Under Windows or Linux x64,
these libraries are provided in a separate package (see
Introduction
1.4 Supported Platforms and Minimum System Requirements
11
OS Versions GPU NVIDIA driver supporting Libraries
CUDA cuBLAS cuDNN
Windows
Linux
x64
x64
aarch64
Windows 10, 11
Linux x86_64
Linux aarch64
NVIDIA GPU with minimal compute capability 5.0
12.1.0
12.1.0
11.4 [1]
12.1.3.1
12.1.3.1
11.6.6.84
8.9.2
8.9.2
8.6.0
Table 1.3: Requirements for deep-learning-based applications on GPU. [1]: Install NVIDIA JetPack 5.1.1.
section A.1 on page 39.) Under Linux aarch64 these libraries have to be
installed manually as described in chapter 4 on page 23.
CPU Applications: The following table 1.4 lists all platforms that support the
execution of deep-learning-based applications.
Platform
Windows
x64 min. SSE4.1
x64 min. SSE4.1
Table 1.4: Requirements for Deep Learning applications on CPU. [1]: With exception of anomaly detection.
Linux aarch64 [1]
armv7a [1]
12
Introduction
1.4.5 Requirements for Language Interface Examples
For HALCON language interface examples additional requirements may apply.
Building HALCON examples with CMake
Minimum requirements depend on the language:
C and C++
Minimum supported CMake version: 3.7.1
.NET
Minimum supported CMake version: 3.8.2
Building Easy Extension Interface for .NET
CMake
Minimum supported CMake version: 3.7.1
C/C++-tooling
For example from Visual Studio
.NET Runtime
At least .NET runtime 6.0. Newer versions may be incompatible.
1.5 Limitations
1.5.1 General Limitations
Below, we list limitations that are relevant for typical application
development with HALCON.
· String processing: The HALCON library does not handle multibyte characters
internally. File names containing multibyte characters are supported after
calling set_system(‘filename_encoding’,’utf8′).
· Processing of NaNs: Due to performance reasons, the HALCON library does
not check for NaNs in input data. Using such input can lead to undefined
behavior.
· Maximum image size: HALCON: 32 768×32 768 HALCON XL: 1 073 741 824×1 073
741 824 (230 × 230)
· Maximum number of channels per image: The number of channels per image is
limited to 65535.
Range for coordinates: HALCON: from -32 767 to +32 767 HALCON XL: from -1
073 741 823 to 1 073 741 823 (-230 to 230 – 1)
· Maximum number of windows: 600
1.5.2 Limitations for Dongle-based Licenses
After starting applications based on HALCON 20.05 (or later), the dongle must
be removed and inserted again before starting applications based on HALCON
19.11 (or earlier). This problem can be avoided by installing the CodeMeter
Runtime from WIBU SYSTEMS AG. The CodeMeter Runtime is not shipped with HALCON
and must be downloaded from https://www.wibu.com in the download area.
On Arm platforms (aarch64 architecture) with GLIBC 2.21, it is no longer
possible to run both 64-bit and 32-bit HALCON processes in parallel because
they might block each other.
1.5 Limitations
13
Introduction
1.5.3 Limitations Related to Compute Devices
Operators that are based on texture are limited to the maximum size of the
graphics card. Currently this limit is 8192×8192. This is relevant for the
following operators:
· projective_trans_image and projective_trans_image_size, · affine_trans_image
and affine_trans_image_size, · polar_trans_image, polar_trans_image_inv, and
polar_trans_image_ext, · rotate_image, · mirror_image, · map_image, ·
image_to_world_plane, and · change_radial_distortion_image.
Further limitations are listed below.
· All other operators are restricted to the maximum allocated block size,
e.g., 200 MB on the Tesla C2050. · edges_sub_pix and lines_gauss are not Open
CL accelerated for HALCON XL. · edges_sub_pix and lines_gauss need a lot of
memory on the compute device.
1.5.4 Limitations Related to Image Acquisition
· Maximum number of acquisition interfaces: 128 · Maximum number of open
handles per acquisition interface: 256 · Maximum number of interface-specific
parameters: 2048
1.5.5 Limitations Related to OpenGL
Operators using OpenGL for visualization (e.g., disp_object_model_3d) require
OpenGL 2.1, GLSL 1.2, and the OpenGL extensions “GL_EXT_framebuffer_object”
and “GL_EXT_framebuffer_blit”. Therefore, those operators cannot be used via
Windows Remote Desktop or SSH forwarding. Other operators, like
find_shape_model_3d), have an optimized implementation when OpenGL is
available. Which operators benefit from OpenGL can be found in the reference
documentation of the corresponding operators. To figure out which OpenGL
features are available and offered by the driver, HALCON opens a hidden OpenGL
window during initialization when the first HALCON operator is called. Thus,
if the system has defective OpenGL drivers installed, HALCON may crash during
initialization. To work around this issue, HALCON can be told to ignore OpenGL
entirely by defining and setting the system environment variable
“HALCON_NO_OPENGL” to 1.
1.5.6 Limitations Related to Extension Packages
Maximum number of parameters:
Iconic input parameters:
9
Iconic output parameters: 9
Control input parameters: 20
Control output parameters: 20
14
Introduction
1.6 Licensing
To run HALCON on a computer, you need a license. For HALCON Steady, licenses
are always issued for a certain HALCON version (i.e., major release, see
section 1.3 on page 8). However, a license is not exclusively bound to this
version: It is upward compatible within the version number, i.e., licenses for
major releases are also valid for follow-up maintenance releases. For HALCON
Progress, licenses are issued for the subscription period.
The license file is typically called “license.dat”. Between “license” and
“.dat”, arbitrary information can be included. Thus, different licenses for
different versions (e.g., license-23.11.dat for version 23.11) can be stored
in the same directory.
The three possible licensing types mainly correspond to the different HALCON
versions described in section 1.2 on page 7. Detailed information about HALCON
licenses can be found in chapter 5 on page 25.
· Evaluation license To evaluate the full power of HALCON, you can obtain an
evaluation license from your local distributor free of charge. This type of
license is not bound to any computer hardware, i.e., you can use HALCON on any
computer you installed it on; however, it is only valid for a limited time,
typically for a month. Note that you may not use this license to develop
commercial applications.
· Development license To develop HALCON applications, whether in HDevelop or
via a programming language, you need a development license. In contrast to the
evaluation license, this license is permanent. Furthermore, this license is
bound to a certain hardware component (network card or dongle, see section 5.1
on page 25). If you want to use HALCON on multiple computers simultaneously,
you need a license for each of them.
· Runtime license If you finished developing your application based on HALCON
and now want to install and run it on a customer’s computer, you only need a
runtime license. Like development licenses, runtime licenses are permanent and
bound to a certain hardware component (network card or dongle). As already
noted, you can obtain runtime licenses that cover only parts of the
functionality (so-called modules). Please contact your local distributor for
more information.
Installing HALCON
15
Installation
Chapter 2
Installing HALCON
2.1 Downloading HALCON
Note that you first need to register before downloading software. 1. Log in to
MVTec’s Download Area at http://www.mvtec.com/downloads. 2. Click HALCON
DOWNLOADS. 3. Choose PRODUCT VERSION, OPERATING SYSTEM, and, if applicable,
the ARCHITECTURE. 4. Download one of the following: · “MVTec Software Manager”
(SOM) A lightweight package manager that downloads only the necessary packages
during installation. · “Full Version” The download for Windows and Linux
includes SOM and all packages required for the full HALCON installation. ·
“Runtime Version” This download includes SOM and all packages required for the
HALCON runtime installation.
2.2 Starting the Installation
2.2.1 Installing HALCON Under Windows/Linux
There are two installation options: · GUI-based installation, i.e.,
controlling SOM via your web browser (section 2.2.1.1 on page 16). · Command
line installation, with the possibility for a silent installation (section
2.2.1.2 on page 16).
In both cases, you can run SOM with user permissions (“user mode”) or with
administrator permissions (“system mode”). Software packages can be installed
only for yourself or for all users of the system. In the latter case, SOM will
request the credentials for system-wide installation when the corresponding
option has been selected. For more information, see the section “Running SOM”
in SOM’s internal documentation. Both installation methods require a valid
login to the download area. You can only log in from the GUI (start
SOM, and click the LOGIN button). The login is remembered across SOM sessions
and will be used by the !
command line installation. For aarch64-linux only: To use the deep learning
functionality on GPUs, two third-party libraries need to be
installed manually (see chapter 4 on page 23). For inference on CPUs, the
third-party libraries are not required, !
but it may be necessary to link the correct OpenMP. For more information, see
Programmer’s Guide, section 2.4 on page 19.
16
Installing HALCON
2.2.1.1 GUI-based Installation
To install HALCON using the SOM GUI in the browser, do the following:
1. If you downloaded the “Full Version” or the “Runtime Version”, unzip the
downloaded archive. 2. Execute som. If som is not executable under Linux,
adapt its file permissions.
SOM opens a page in your default web browser. If SOM is not yet installed or
up-to-date, a welcome dialog offers to install SOM or to update your current
installation of SOM. You can skip or postpone this step by closing the dialog.
To install HALCON, an installation of SOM is not required. Nonetheless,
installing SOM is recommended, because it can manage and update your
installation(s) and provides easy access to HDevelop and the documentation. 3.
Open the page AVAILABLE. All available HALCON versions are listed. 4. To start
the default installation, click the INSTALL button of the HALCON version you
wish to install. The “Packages” dialog opens, with all necessary packages
already pre-selected. Alternatively, click SELECT PACKAGES to set up the
installation without pre-selections. See section A.1 on page 39 for
information about the packages. You can install additional packages at a later
time by starting SOM again and selecting the packages you need. 5. Click
APPLY. The installation starts. The installed HALCON version appears under
INSTALLED.
To complete the HALCON installation, add a license (section 2.2.1.3 on page
17) and, if applicable, configure your installation (section 2.2.1.4 on page
17).
2.2.1.2 Command Line Installation
SOM can also be operated from the command line. This enables script-driven
installation and removal of software packages. For more information, see the
chapter “Command line usage” of SOM’s internal documentation. If you want to
install HALCON remotely, see also the chapter “Headless operation” .
1. If you downloaded the “Full Version” or the “Runtime Version”, unzip the
downloaded archive. 2. Run “MVTec Software Manager CLI” if you have installed
SOM. Otherwise, open a command prompt,
and change to the directory where you saved the som executable. 3. List the
catalog and available feed URLs:
som cat
4. To install, for example the runtime version of HALCON, type:
som -f FEED install rt
where FEED has to be replaced with the actual feed URL or a unique substring
of the feed URL, e.g., halcon-23.11-progress. The EULA is shown, followed by a
line repeating your last command line with an additional parameter –accept
HASH. 5. To open the help, enter
som help
6. Copy and paste the line to start the installation, for example:
som –accept HASH -f FEED install rt
2.2 Starting the Installation
17
To complete the HALCON installation, add a license (section 2.2.1.3 on page
17) and, if applicable, configure your installation (section 2.2.1.4 on page
17).
Silent Installation You can also use the last command for non-interactive
(i.e., silent) installations. To install silently, suppress the command output
as usual, i.e., under Windows with > nul, and under Linux with > /dev/null.
For example:
som –accept HASH -f halcon-23.11-progress install rt > nul
Installation
2.2.1.3 License Installation
Installing a License File
You can either place the license file license.dat manually into the directory
$HALCONROOT/license. Alternatively, you can use SOM to install the license
file. Note that SOM overwrites licenses of the same file name.
If you want to avoid this, you have to rename the license file in advance. The
correct notation for license files is !
license*.dat. To install the license file via SOM:
1. Open the page INSTALLED. All installed HALCON versions are listed.
2. Open the three-dots pop-up menu of the HALCON version you wish to add the
license to. 3. Select Manage packages. 4. Click Browse… to select the license
file. 5. Click install license file.
HALCON can now be started out of SOM.
Installing a Dongle-bound License
If you are using a CodeMeter dongle and CodeMeter Runtime is running,
CodeMeter Runtime needs to be at least version 6.00. Otherwise, the dongle is
not recognized correctly, and HALCON throws an error regarding the license
file. Under Linux, you need to allow access to the hidraw device for CodeMeter
dongles. This can be done by copying the file
$HALCONROOT/misc/linux/udev/rules.d/59-halcon-codemeter.rules to the
/etc/udev/rules.d system directory (see also section 7.2.1 on page 36).
2.2.1.4 Configuration
Setting Environment Variables
On Windows, the environment variables are set during the installation. On
Linux, the following environment variables must be set in order for HALCON to
work independent from a SOM session (see section A.4 on page 43 for more
information about these and other environment variables):
· HALCONROOT: directory you installed HALCON in. · HALCONEXAMPLES: directory
the example programs are installed in ($HALCONROOT/examples). · HALCONIMAGES:
directory the example images are installed in ($HALCONEXAMPLES/images). ·
HALCONARCH: select value corresponding to the used platform (see table 1.1 on
page 9). · PATH: this system variable should include
$HALCONROOT/bin/$HALCONARCH. · LD_LIBRARY_PATH: this system variable should
include $HALCONROOT/lib/$HALCONARCH.
18
Installing HALCON
HALCONROOT=”/home/foo/MVTec/HALCON-23.11-progress”; export HALCONROOT
HALCONARCH=”x64-linux”; export HALCONARCH
PATH=”$HALCONROOT/bin/$HALCONARCH:$PATH”; export PATH
LD_LIBRARY_PATH=”$HALCONROOT/lib/$HALCONARCH:$LD_LIBRARY_PATH”; export
LD_LIBRARY_PATH
Figure 2.1: Example for a shell script with environment variables in sh
syntax, generated when installing HALCON into the directory
/home/foo/MVTec/HALCON-23.11-progress on a Linux system.
It is recommended that you set the environment variables in a login script or
a shell resource script, e.g., .cshrc or .profile. The installation script
automatically creates an example shell script .profile_halcon in $HALCONROOT
which contains the necessary settings in sh syntax, see figure 2.1 on page 18.
The shell script can be included in your login script. Make sure
LD_LIBRARY_PATH is set correctly after a reboot, e.g., with:
echo $LD_LIBRARY_PATH
Some systems disallow setting LD_LIBRARY_PATH in .profile. If the variable is
not set after reboot, you should try to set LD_LIBRARY_PATH in other
initialization files like .bashrc.
Optimizing Parallelization Optionally, you can optimize HALCON’s automatic
operator parallelization for your computer as described in the Programmer’s
Guide, section 2.1.1 on page 15.
2.3 Switching HALCON Versions
If multiple versions of HALCON are installed on your system, the active version may be switched using SOM on Windows. To switch the HALCON version:
1. Open SOM. Note the different HALCON versions under INSTALLED.
2. Click the radio button in front of HDevelop or HDevelop XL to register the corresponding HALCON
version.
!
Please note that you should use HALCON XL only when you need its features.
Only one HALCON version can be active at any given time. See also “Handling of
HALCON versions” in SOM’s internal documentation.
You can also switch the HALCON versions manually:
· On Linux systems, by setting the environment variable HALCONROOT accordingly. Note that in order for this method to work, paths based on HALCONROOT in other environment variables like PATH and LD_LIBRARY_PATH must use the variable and not its content. See figure 2.1 on page 18 for an example.
· Under Windows, you must adapt those environment variables that are set during the installation, i.e., HALCONROOT, HALCONARCH, PATH, HALCONEXAMPLES, and HALCONIMAGES, and those you set yourself (e.g., HALCONEXTENSIONS). Please refer to section A.4 on page 43 for more information about setting environment variables.
2.4 Updating HALCON
With HALCON, the term “update” means to install a newer maintenance release
over a release based on the same HALCON version. As described in section 1.3
on page 8, you can update HALCON without needing a new license. To check for
available updates, open SOM and watch for the bell icon. This icon signifies
available HALCON updates. To update HALCON:
2.5 Installing I/O Device and Image Acquisition Interfaces
19
1. Click on the bell icon or open the pop-up menu and select Update. 2. Click APPLY.
Installation
2.5 Installing I/O Device and Image Acquisition Interfaces
With every HALCON installation, you obtain several already installed I/O
device and image acquisition interfaces (see also section A.2 on page 40).
Additional interfaces are obtainable from the MVTec/HALCON Download area.
In between HALCON releases, image acquisition interfaces might be updated by
MVTec or the manufacturer of an image acquisition device. Such updates are
indicated on MVTec’s WWW server, to which you can connect by selecting
HDevelop’s menu entry Help HALCON News (WWW) or in the Start Dialog which
appears when starting HDevelop. You can then download the interface together
with its documentation and HDevelop example programs.
2.6 Installing Extension Packages
The HALCON Extension Package Interface enables you to integrate newly
developed image processing algorithms into HALCON in the form of so-called
extension packages. The same mechanism is used by MVTec to extend the current
HALCON release with additional functionality. Which extension packages are
currently available can be checked by selecting HDevelop’s menu entry Help
HALCON News (WWW). This section describes how to integrate a (downloaded)
package named newextpkg in order to use it within your HALCON system.
1. Extract the package to a directory of your choice, e.g., %HALCONROOT%.
2. Add the complete path of the package, e.g., %HALCONROOT%packagesnewextpkg
to the environment variable HALCONEXTENSIONS. Note, that the delimiter between
paths in an environment variable is a semicolon on Windows systems and a colon
on Linux systems.
Never change the name of an extension package or the corresponding names of
the libraries or DLLs con-
tained in it. These names are encoded within the libraries/DLLs. If you change
the names this information will no !
longer match. Thus, the loader of the operating system will fail to open the
dynamic libraries. If the package contains images used, e.g., within example
programs we recommend including the complete path to the corresponding
directory images within the package in the environment variable HALCONIMAGES
(see section A.4 on page 43) to access those images without specifying a
complete path.
2.6.1 Using an Extension Package Within HDevelop
To use a new package within HDevelop under Windows, you just need to restart
the program. HDevelop automatically integrates all extension packages
specified in HALCONEXTENSIONS, i.e., the operators contained in a package can
be accessed and used like any other HALCON operator. Under Linux, you must
include the package library subdirectory (i.e., lib/$HALCONARCH) in the
environment variable LD_LIBRARY_PATH before starting HDevelop the first time
(see table 1.1 on page 9 for the possible values of HALCONARCH).
2.6.2 Using an Extension Package in a Stand-Alone Application
If you want to generate a stand-alone application that uses an extension
package, you have to link the package libraries (DLLs under Windows, shared
libraries under Linux) to the application code, in addition to the HALCON
library.
20
Installing HALCON
2.6.2.1 Using an Extension Package Under Windows
In order to create new application programs you have to link the corresponding
language interface library, e.g., packagecpp.lib for a C++ application, to
your objects. Furthermore, you will need the HALCON interface library, in the
example of a C++ application halconcpp.lib, as for any HALCON application. To
be able to link the package DLL to your application program, the complete DLL
file path of the new package, e.g.,
%HALCONROOT%packagesnewextpkgbin%HALCONARCH% must be added to the environment
variable PATH (see table 1.1 on page 9 for the possible values of HALCONARCH).
! Do not copy a package DLL into the Windows system directories, as it would
be loaded twice in this case.
2.6.2.2 Using an Extension Package Under Linux
In order to create new application programs, you must link libnewextpkg.so and
the corresponding language interface library, e.g., libnewextpkgcpp.so for a
C++ application, to your objects (besides libhalcon.so and the HALCON
interface library, in the example of a C++ application libhalconcpp.so, as for
any HALCON application). Furthermore, you have to add the path to the package
library subdirectory lib/$HALCONARCH to the environment variable
LD_LIBRARY_PATH, otherwise the loader will fail to access the libraries.
Uninstalling HALCON
21
Installation
Chapter 3
Uninstalling HALCON
3.1 Uninstalling HALCON Under Windows
The preferred method to uninstall HALCON is to use the automatic
uninstallation program as described in the following section. If you want to
keep track of what is happening to your system, you can follow the
instructions given in section 3.1 on page 21.
If you have installed different HALCON versions simultaneously with a
compatible HALCON Variable Inspect extension for Visual Studio, uninstalling
either of these versions will also uninstall the Variable Inspect extension.
As a result, the Variable Inspect extension will be missing in the remaining
HALCON version.
Uninstalling Automatically
To uninstall HALCON:
1. Open SOM.
2. Open the pop-up menu of the HALCON version to be uninstalled and select
Uninstall.
Alternatively, you can remove HALCON via the Control Panel of Windows.
Note that the uninstallation removes exactly those files that were installed.
This has two implications: If you
added files after the installation manually, e.g., new image acquisition
interfaces, extension packages, images, or !
manuals, these files and the corresponding directories will “survive” the
uninstallation. On the other hand, if you only modified a file, e.g., an
example, without changing its name, the uninstallation will remove it
nevertheless. Therefore, you might want to copy such files to another
directory before starting the uninstallation.
The uninstallation process will not remove any user-specific settings. This
means that entries concerning, e.g., the layout of HDevelop or its file
history, will be left in the file %APPDATA%MVTecHDevelop.ini. If you have run
the utility hcheck_parallel, AOP information has been stored in
%ProgramData%MVTecHALCON 23.11 .aop_info. You can remove these files manually
without risk. Moreover, the uninstaller does not remove the MVTec GigE Vision
streaming filter driver if it is installed. This driver needs to be removed
separately.
Uninstalling Manually
The commands given in the following description should be entered in a Windows command prompt, which can be obtained by entering cmd.exe in the dialog Start Run. You need administrator privileges to perform the uninstallation.
1. Delete the installation directory.
You can also use Windows Explorer to do this. Note that the license file and any local additions to this
directory will be lost. A backup of these files is highly recommended.
!
rmdir /S “%HALCONROOT%”
22
Uninstalling HALCON
2. Delete all HALCON registry keys. You can also use the Windows registry
editor regedit.exe to delete the keys. To remove the registry keys for a user
installation of HALCON, replace HKLM with HKCU.
reg delete “HKLMSOFTWAREMicrosoftWindowsCurrentVersionUninstallMVTec HALCON
version” reg delete HKLMSOFTWAREClasses.hdev reg delete
HKLMSOFTWAREClasses.dev reg delete HKLMSOFTWAREClasses.hdpv reg delete
HKLMSOFTWAREClasses.dpv reg delete HKLMSOFTWAREClasses.hdpl reg delete
HKLMSOFTWAREClasses.hobj reg delete HKLMSOFTWAREClassesHDevelop.Source.File
reg delete HKLMSOFTWAREClassesHDevelop.External.Procedure reg delete
HKLMSOFTWAREClassesHDevelop.Procedure.Library reg delete
HKLMSOFTWAREClassesHALCON.Object
Replace version with the version you are uninstalling, e.g., 23.11-Progress.
3. Delete all environment variables.
reg delete “HKLMSYSTEMCurrentControlSetControlSession ManagerEnvironment” /V
HALCONARCH reg delete “HKLMSYSTEMCurrentControlSetControlSession
ManagerEnvironment” /V HALCONEXAMPLES reg delete
“HKLMSYSTEMCurrentControlSetControlSession ManagerEnvironment” /V HALCONIMAGES
reg delete “HKLMSYSTEMCurrentControlSetControlSession ManagerEnvironment” /V
HALCONROOT
reg delete HKCUEnvironment /V HALCONARCH reg delete HKCUEnvironment /V
HALCONEXAMPLES reg delete HKCUEnvironment /V HALCONIMAGES reg delete
HKCUEnvironment /V HALCONROOT
Please also use the GUI to manually remove the HALCON binary directory from
the environment variable PATH. See section A.4 on page 43 on how to edit
environment variables using the Windows GUI.
3.2 Uninstalling HALCON Under Linux
Uninstalling Automatically To uninstall HALCON:
1. Open SOM. 2. Open the pop-up menu of the HALCON version to be uninstalled
and select Uninstall.
Unistalling Manually
! Please note: The following procedure will delete your local additions to the
HALCON base directory.
The actual uninstallation consists of simply removing the content of the
HALCON base directory $HALCONROOT and all its subdirectories, e.g., by
executing
rm -rf $HALCONROOT
Furthermore, remove the subdirectory .hdevelop of the directory referenced by
the environment variable HOME (see section A.4 on page 43); HDevelop creates
this directory to save options, window positions, and the file history.
Finally, delete references to HALCON from the environment variables (see
section 2.2.1.4 on page 17).
Installing Third-Party Components
23
Third-Party
Chapter 4
Installing Third-Party Components
This chapter describes how to install third-party components that might be
required in order to use a specific functionality of HALCON. Currently, this
is limited to users of Deep Learning and deep-learning-based methods on NVIDIA
GPUs. Please note that for Deep Learning either of the Deep Learning modules
Inference or Training must be licensed. This condition does not necessarily
apply to deep-learning-based methods as e.g., Deep OCR. In addition to a valid
license, the following third-party components are required for the training of
a network or the inference on GPUs:
· NVIDIA GPU and up-to-date graphics driver (see section 1.4 on page 8 for the
system requirements), · the NVIDIA CUDA Basic Linear Algebra Subroutine
library from the CUDA Toolkit (cuBLAS), · the NVIDIA CUDA Deep Neural Network
library (cuDNN). Under Windows or Linux x64, these libraries are provided in a
separate package via SOM. Therefore, the follow-
ing sections do not apply for these systems. Under Linux aarch64 the libraries
have to be installed separately, see !
the section section 4.1 on page 23.
4.1 Third-Party Components for Deep Learning on Linux aarch64
4.1.1 Getting the Components
In order to run Deep Learning, additional requirements apply. Please see
section 1.4.4 on page 10. Running Deep Learning on GPUs on Linux aarch64, the
following components must be installed additionally:
· CUDA with the cuBLAS library · the cuDNN library The required versions are
listed in table 1.2 on page 10. A convenient way to install them is the NVIDIA
“JetPack” installer version 5.1.1, which you can download from
https://developer.nvidia.com/embedded/jetpack. Make sure to select the CUDA
Toolkit and cuDNN Package as to install on the target. It might still be
necessary to install CUDA. In this case, libcuda.so is contained in an
executable installer. Run install.sh on /home/nvidia/NVIDIA_INSTALLER.
4.1.2 Including the Libraries
HALCON needs to find the libraries. For this, firstly you need to locate the
shared objects. · The cuBLAS libraries:
24
Installing Third-Party Components
· libcublas.so
· libcublasLt.so They can be found where the CUDA Toolkit has been installed.
· The cuDNN libraries:
· libcudnn.so
· libcudnn_adv_train.so
· libcudnn_ops_infer.so
· libcudnn_cnn_infer.so
· libcudnn_ops_train.so
· libcudnn_adv_infer.so
· libcudnn_cnn_train.so They are generally contained in the lib64
subdirectory.
Secondly, you need to make them findable for HALCON. To do so, you have the
following options, whereof we recommend the first one:
a Extend the environment variable LD_LIBRARY_PATH to include the respective
libraries. This may be done e.g., with the following commands:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/aarch64-linux-gnu
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/targets/aarch64-linux/lib
b Copy the required libraries libcuda.so and the mentioned cuBLAS and cuDNN
library to the third party directory:
$HALCONROOT/lib/$HALCONARCH/thirdparty/cuda11_4. All libraries needed for CUDA
11 have to be in the subdirectory cuda11_4. If the subdirectory
thirdparty/cuda11_4 does not exist, create it first. Additionally extend the
environment variable LD_LIBRARY_PATH to include the respective libraries. This
may be done e.g., with a command like the following:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HALCONROOT/lib/$HALCONARCH/thirdparty/cuda11_4
4.1.3 Additional Required General Settings
The HALCON process must be granted read-write access on: /dev/nvhost-ctrl This
can be achieved e.g., via membership in the “video” group.
All About HALCON Licenses
25
Licensing
Chapter 5
All About HALCON Licenses
Section 1.6 on page 14 already contained an overview of the possible licensing
schemes. In this chapter, you will find detailed information about how to
obtain and install
· evaluation licenses (section 5.2 on page 26), · development licenses
(section 5.3 on page 27), and · runtime licenses (section 5.4 on page 28),
Finally, section 5.5 on page 30 shows how to upgrade a license.
5.1 What is a License?
HALCON licenses are stored in so-called license files. The content of these files specifies
· what is licensed (e.g., development version, runtime version, etc.)
· which modules are licensed (e.g., Calibration, Matching, etc.)
· whether the license is temporary (e.g., evaluation license) or permanent
· the hardware to which the license is bound (see below)
License files are named license.dat (or license-23.11.dat or similar, see section 1.6 on page 14) and reside
in the subdirectory license of the directory where you installed HALCON. Note that HALCON will not run if
you modify the license keys within the license file manually!
!
A single license allows you to run a specific version of HALCON by one user on one system.
The system is identified by a unique host ID. Depending on the type of host ID, you may install HALCON on any number of computers, but in any case you must use it only on the one computer to which the host ID is attached. Further information about licenses can be found in the EULA.
The license is not bound to a specific user. Consequently, different users may use the licensed HALCON version, but not simultaneously. To have multiple users run HALCON at the same time, the corresponding number of licenses are needed. Note that each system service or daemon which executes HALCON is also counted as user. Thus, if only one license is available and a system service executes HALCON, the regular user is not able to run another instance of HALCON in parallel.
Network Card Versus Dongle Binding
As noted in section 1.6 on page 14, development and runtime licenses are bound
to a certain hardware component. This is either the network card (see section
5.3.1 on page 27) or a dongle (see section 5.3.2 on page 27).
Dongle-bound licenses allow using HALCON on different computers by moving the
dongle. Of course, network cards can also be switched between computers, but
in practice they can be regarded as fixed. Thus, if you want to develop
applications with HALCON on more than one stand-alone computer at different
times, the easiest solution is to obtain a dongle-bound license.
26
All About HALCON Licenses
Identifying the Hardware
The license manager software identifies a network card or a HALCON dongle by a
so-called host ID. A valid host ID is the unique, immutable, machine-readable
identification of an actual piece of hardware as devised by the hardware
vendor.
HALCON includes a tool to query the host IDs from the command line. Open a
Command Prompt window or a Linux shell, and then enter the following command:
hhostid
This command produces a list of host IDs, which are available for licensing. For example: 0d00cafebabe 3-3123456
Use hhostid -i to get additional information, such as the type of a certain
host ID:
hhostid -i #0: 0d00cafebabe [MAC]
For example, the following information will be displayed on a computer equipped with a network card and a dongle:
HALCON 23.11 Progress
HDevelop version: 23.11.0.0 (06.11.2023) HALCON version: 23.11.0.0 (06.11.2023)
Platform version: x64-win64 (avx2)
(c) 1996-2023 MVTec Software GmbH, Munich, Germany
The host IDs of this computer are:
0d00cafebabe
(network card ID)
3-3123456
(dongle ID)
The first line shows the HALCON edition (Progress, Steady, or Steady Deep Learning, see section 1.1 on page 7).
5.2 Evaluation Licenses
As already noted in section 1.6 on page 14, with an evaluation license you can
evaluate the full functionality of HALCON free of charge on any computer. The
only restrictions are that evaluation licenses are valid only for a limited
time (typically a month), and no commercial applications may be developed.
5.3 Development Licenses
27
Step 1: Obtain the license
You can obtain an evaluation license from your local distributor.
Step 2: Install the license
“Installing” the license simply means placing the license file into the
subdirectory license of the directory where you installed HALCON. If
necessary, rename the file to license.dat (or license-23.11.dat or similar,
see section 1.6 on page 14). Note that you can evaluate HALCON on any computer
where you installed HALCON just by copying the evaluation license file into
the corresponding subdirectory license. You can also evaluate HALCON under
different operating systems.
Licensing
5.3 Development Licenses
A development license allows you to use the full functionality of your HALCON
edition (see section 1.2 on page 7) including the development tools like
HDevelop (see also section 1.6 on page 14). It must be bound to a certain
hardware component (see also section 5.1 on page 25). The following sections
describe how to proceed to obtain and install a
· license bound to a network card (section 5.3.1)
· license bound to a dongle (section 5.3.2 on page 27)
5.3.1 License Bound to a Network Card
Step 1: Extract the host ID The easiest way to extract the host ID is to
execute the following command from a Windows command prompt or a Linux shell.
hhostid -i
All host IDs of type MAC can be used for licensing. See section 5.1 on page 26
for more information.
Step 2: Obtain the license Send the host ID of the network card to your local
distributor. The distributor then sends you a license file.
Step 3: Install the license Place the license file into the subdirectory
license of the directory where you installed HALCON. If necessary, rename the
file to license.dat (or license-23.11.dat or similar, see section 1.6 on page
14).
5.3.2 License Bound to a Dongle
Step 1: Obtain dongle and license
Please note that you cannot use any dongle but only those supplied by MVTec via your local distributor.
Currently, HALCON supports USB dongles.
!
The distributor will send you the dongle together with a corresponding license file. The dongle ID is printed on the dongle.
Step 2: Install the license
Place the license file into the subdirectory license of the directory where
you installed HALCON. If necessary, rename the file to license.dat (or
license-23.11.dat or similar, see section 1.6 on page 14).
If you want to use HALCON on more than one computer by switching the dongle
between them, repeat this step for every computer.
28
All About HALCON Licenses
5.3.3 License Bound to a Remote Dongle
Starting with HALCON 21.05, you can also use a dongle connected to a remote
computer over the network.
The remote dongle must be plugged into a computer with a running CodeMeter
Runtime, version 6.50 or later, that is configured to allow remote clients to
acquire licenses. For security reasons, MVTec recommends using version 7.10 or
later. Please see the CodeMeter Runtime documentation on how to configure the
CodeMeter Runtime correctly.
Make sure the communication between client and server is possible, i.e., not
blocked by a firewall. By default, TCP port 22350 is used.
You must also tell HALCON how to contact the dongle. This is done by adding
the server=
The following example license file shows a HALCON runtime license for the
dongle ID 3-3668597. HALCON first looks for the dongle locally, then attempts
to contact the CodeMeter Runtime at the IPv4 address 10.0.0.5 and, if this
fails, contacts the CodeMeter Runtime at license.example.com:
LICENSE MVTec_HALCON 23.11 MODULES=fc123bdomit ID=CM:3-3668597
FLAGS=PROGRESS_OK SESSIONS=1 SIGNATURE=”F155 C6B7 5E24 5FAF 224D B779 93D7
65B1 1F0C CCD9 CE94 03D0 0D79 066D C66F F869 A92D EC52 B7A2 04A7 874C B503
BE19 B150 C9C1 592F 41EB C808 8479 380C CE95 1408″
server=_local,10.0.0.5,license.example.com
Note that the hhostid tool and the get_system(‘hostids’) HALCON operator call
can only find dongles connected directly to the computer on which HALCON is
running and will not find remote dongles.
5.4 Runtime Licenses
In contrast to a development license, a runtime license only allows you to run
HALCON applications. Furthermore, a runtime license can be restricted to a set
of selected modules if your application does not require the full
functionality of HALCON.
5.4.1 Getting a Runtime License Restricted to Specific Modules
In the following we list the steps to determine the used modules, obtain an appropriate runtime license and install it.
Step 1: Extract the required modules
To extract the modules that are used by an application proceed as follows:
1. If the application is running in HDevelop, select the menu item File
Properties, which will open a dialog. In its tab Used Modules the used modules
are listed (see the HDevelop User’s Guide, section 6.14 on page 110, for more
information). Figure 5.1 shows the result for an OCR application.
If you click Copy to Clipboard, the required modules are saved in the
clipboard, from where you can insert them in other applications.
Please note that this method determines the list of used modules by inspecting
all operators of the current program, no matter if they can be reached or not.
If the program contains operator calls that are never executed, it is
recommended to deactivate the corresponding program lines using F4 before
opening this dialog to get a correct list of used modules.
2. If the application is written in a programming language (C, C++, C#, VB.NET, etc.), insert the operator
get_modules (see the corresponding entry in the HALCON Reference Manuals for more information) at
!
the end of the program. Note that the operator get_modules will only return the correct modules if all
HALCON operators used in the application are executed at least once.
5.4 Runtime Licenses
29
Licensing
Figure 5.1: Used modules for an OCR application.
Note that there is a special case regarding the modules for deep-learning-
based methods, where the required license does not depend on the used
operator, but on the used model type (dynamic module). See section 5.4.2 on
page 29 for further details.
Step 2: Extract the host ID Please refer to section 5.3.1 on page 27 (network
card) for information about how to extract the host ID. If you choose a
dongle-bound license, no further action is required as you get the dongle
together with the license (see section 5.3.2 on page 27).
Step 3: Obtain the license Send the determined module names and except in
case of a dongle-bound license the extracted host ID to your local
distributor. The distributor then sends you a license file. If you requested a
dongle-bound license, you will also receive the dongle.
Step 4: Install the license Place the license file into the subdirectory
license of the directory where you installed HALCON. If necessary, rename the
file to license.dat (or license-23.11.dat or similar, see section 1.6 on page
14).
5.4.2 Dynamic Modules for Deep-Learning-Based Applications
For some HALCON deep learning operators, the required licensed module is
dynamic. This is the case if the respective operator can be used for methods
of different modules. Thus, the license needed does not depend on the
operator, but on the used model type of the used deep learning network. What
kind of licenses may be required by an operator can be queried using
get_operator_info. See table 5.1 on page 30 for an overview which module
licenses are necessary to run the different types of the deep learning models
with a deep learning operator.
30
All About HALCON Licenses
‘type’ ‘3d_gripping_point_detection’ ‘anomaly_detection’ ‘classification’ ‘counting’ ‘detection’ ‘gc_anomaly_detection’ ‘generic’ ‘ocr_detection’ ‘ocr_recognition’ ‘segmentation’
DL [1]
OCR/OCV [2] –
3D [3] –
Table 5.1: Deep learning model type-specific dynamic license modules. [1]: Modules ‘Deep Learning Inference’ and ‘Deep Learning Training’ [2]: Module ‘OCR/OCV’ [3]: Module ‘3D Metrology’ [4]: Module ‘Matching’.
Matching [4] –
5.5 How to Upgrade a License
If you upgrade a HALCON license to a newer version, your distributor provides
you with a new license file which contains new license keys. This new license
file should replace the old one in %HALCONROOT%license license.dat.
5.6 How to Check the Genuineness of HALCON (Windows)
To verify that your HALCON installation is genuine, you can check the digital
signature of the file halcon.dll. Make sure that your Windows installation is
fully updated. Otherwise, the signature verification might not work as
expected.
· Right-click the file %HALCONROOT%bin%HALCONARCH%/halcon.dll. · Select
“Properties”. · Select the tab “Digital Signature”. · Select the signature
“MVTec Software GmbH” and click “Details”. If your version of HALCON is
genuine, the dialog reads “This digital signature is OK”. Otherwise, your
version of HALCON has been tampered with. This might lead to unexpected
behavior of HALCON.
HALCON in a Docker Container
31
Chapter 6
HALCON in a Docker Container
When developing or deploying your application using Docker containers on
Linux, you need to include the HALCON software in your container image. This
chapter describes how to modify your Dockerfile to install and run HALCON in a
Docker container. To do so, you need to place the following files next to your
Dockerfile:
· HALCON offline installer for Linux (see the “MVTec Software Manager” (SOM)
documentation for details) · Valid license file (see section 6.3 for the
licensing options available) It may also be helpful to look at the Docker
example under examples/docker/halcon-application of your HALCON installation.
6.1 Include a HALCON Installation
6.1.1 Basic HALCON Packages
HALCON can be easily installed into a Docker image by adding a command
execution line of the offline MVTec Software Installer (SOM) into the
Dockerfile. To do this, you need to place the installer zip file (e.g.,
halcon23.11.0.0-x64-linux.zip) next to your Dockerfile. You can then use the
following line to install the HALCON Runtime package along with the Deep
Learning package, for example:
RUN unzip halcon-23.11.0.0-x64-linux.zip -d /tmp RUN cd
/tmp/halcon-23.11..0.0-x64-linux &&
./som install -f halcon-23.11.0 runtime –accept
To complete the installation you will need to accept the EULA by adding the
specific EULA hash
ENV LD_LIBRARY_PATH=/opt/MVTec/Halcon-23.11-Progress/lib/$HALCONARCH
6.1.2 Required System Packages
To make sure that all system requirements listed in table 1.1 on page 9 needed
by HALCON are installed you should also install the according system packages.
Use the package manager of the Linux distribution your Docker image is based
on. E.g., for Ubuntu 22.04, using the apt installation manager, this call
could be:
Docker
32
HALCON in a Docker Container
RUN apt-get update && apt-get install -y –no-install-recommends libx11-6
libxext6 && rm -rf /var/lib/apt/lists/
For other versions of Ubuntu or other Linux distributions, the names of the
packages may be different. Consult the packages website of your distribution
at hand for the correct names.
6.1.3 HALCON Language Interface
HALCON/C and HALCON/C++ language interfaces already come with the runtime
package of a basic HALCON installation and no additional work will be
necessary. However, HALCON/Python and HALCON/.NET interfaces have to be
installed with the according package manager of the specific language
framework. E.g., you install HALCON/Python by using pip
RUN apt-get update && apt-get install -y –no-install-recommends python3-pip &&
rm -rf /var/lib/apt/lists/
RUN pip install mvtec-halcon==23110 pillow numpy
Use the system package manager to install a package for dotnet-sdk if
supported (like apt does for Ubuntu since 22.04). In case support is missing,
you can download it from Microsoft. Afterwards, you can install HALCON/.NET
using the NuGet package manager for .NET.
RUN apt-get update && apt-get install -y –no-install-recommends wget && wget
https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
-O packages-microsoft-prod.deb && dpkg -i packages-microsoft-prod.deb && rm
packages-microsoft-prod.deb && apt-get update && apt-get install -y –no-
install-recommends dotnet-sdk-7.0 && apt remove -y wget && rm -rf
/var/lib/apt/lists/*
RUN dotnet add package MVTec.HalconDotNet -v 23110
See the Programmer’s Guide for further language-specific requirements that
might need to be set in the Docker image.
6.2 Include External Hardware
6.2.1 NVIDIA GPUs for Deep Learning
Using NVIDIA GPUs requires some additional setup on the host system: The
latest graphics driver for the GPU at hand needs to be installed. NVIDIA
Container Toolkit needs to be installed in order to allow Docker access to the
GPUs. See the official NVIDIA documentation on installing the NVIDIA Container
Toolkit for details. On an Ubuntu system, the necessary steps are:
· Make the package manager aware of the external repository and install the
NVIDIA Container Toolkit package
· Configure the Container Toolkit using the nvidia-ctk command · Restart the
Docker daemon
6.3 Licensing HALCON within a Docker Container
33
You can then verify that the setup worked by running nvidia-smi within the
container:
sudo docker run –rm –runtime=nvidia –gpus all ubuntu nvidia-smi
The flags -runtime=nvidia -gpus=all are required in your Docker run command
line for all containers using NVIDIA GPUs.
6.2.2 NVIDIA GPUs for OpenCL
The host system setup described in the previous subsection is also required
here. In addition you need to install clinfo and verify that your GPU is
reported correctly. Within the image, you need to install some packages for
OpenCL and perform setup to make OpenCL aware of the NVIDIA GPUs:
RUN apt-get update && apt-get install -y –no-install-recommends ocl-icd-
libopencl1 opencl-headers clinfo && rm -rf /var/lib/apt/lists/*
RUN mkdir -p /etc/OpenCL/vendors && echo “libnvidia-opencl.so.1” >
/etc/OpenCL/vendors/nvidia.icd
Docker
6.3 Licensing HALCON within a Docker Container
This section shows the different licensing options that are available for
running HALCON in a Docker container. They describe licensing HALCON by
· using a remote dongle (section 6.3.1 on page 33) and · forwarding a USB
dongle into the container (section 6.3.2 on page 34). You can also use an
evaluation license. See section 5.2 for further details. In any case, you will
have to copy the license file to the license directory of your HALCON
installation in your Docker image. Therefore, add the following line to your
Dockerfile:
COPY
If you intend to reuse the image on different machines, you may want to manage
the license separately from the Docker image. In this case, you can optionally
bind-mount the license directory as a volume. The following subsections list
additional installation steps for specific license types.
6.3.1 Remote Dongle
The use of the remote dongle is explained in section 5.2. Please read this
chapter first. As described, you have to modify the license file to add the
“Remote Dongle” functionality. Add the additional line:
“server=host.docker.internal”. The DNS name resolves to your host system IP
address.
LICENSE MVTec_HALCON 23.11 MODULES=fc123bdomit VALID=2024-11-30
ID=CM:3-3666322 FLAGS=PROGRESS_OK SESSIONS=1 SIGNATURE=”519B 0815 E95D C60C
954E 06FB 06FB 06FB 06FB 06FB 06FB 06FB DE1D E41F 2037 7637 F86E F55F 8C45
BAC1 5FD4 8408 1CEA 06FB 34E2 36FC 06FB 9DE6 1B01 01BD 7444 DE09″
server=host.docker.internal
34
HALCON in a Docker Container
The remote dongle feature also requires the configuration of the CodeMeter
runtime by enabling its “Network Server” feature. Then, grant client access to
the IP range used by Docker’s network. The IP range of Docker’s default bridge
network can be obtained using
docker network inspect bridge | grep -i subnet
When using a Linux host machine you may need to add -add-
host=host.docker.internal:host-gateway to your Docker run command to allow
Docker to communicate with the host’s network via host.docker.internal.
6.3.2 Forward USB License Dongle Into Container (Linux Only)
This option requires a Linux host system as it is not possible to forward USB
devices from Windows hosts into Linux containers. Prior to interacting with
Docker, you need to ensure that hhostid on the host system reports the dongle
correctly. For help with this see section 7.2.1 on page 36. You need the Linux
kernel to assign a hidraw device to the dongle in order for this method to
work. To make this happen, you need to ensure that the codemeter service is
not running. To deactivate it use:
sudo systemctl disable –now codemeter.service
Note that for a non-root user in the container a Linux udev rule needs to be
set up in the image to enable the access to this hostid.
RUN mkdir -p /etc/udev/rules.d/ RUN cp
/opt/MVTec/Halcon-23.11/misc/linux/udev/rules.d/59-halcon-codemeter.rules
/etc/udev/rules.d/59-halcon-codemeter.rules
To grant the container access to the dongle when running the container, you
need to forward the corresponding hidraw device. This can be obtained for
instance by running the following after connecting the dongle to the host
system:
grep HID_NAME /sys/class/hidraw/*/device/uevent | grep WIBU
To start the container (/dev/hidraw4 is an example here) you have to pass the
device, e.g.:
docker run –rm -it –runtime=nvidia –gpus=all -v $PWD/src:/home/src –device
/dev/hidraw4
Troubleshooting
35
Troubleshooting
Chapter 7
Troubleshooting
This chapter offers help for problems with the licensing mechanism (section
7.2 on page 36), when starting HDevelop or your own HALCON applications
(section 7.3 on page 37), and other miscellaneous problems. Note that
throughout the chapter the environment variable HALCONARCH is referenced. See
table 1.1 on page 9 for the possible values of this variable.
7.1 Problems During Installation
7.1.1 HALCON Variable Inspect (Visual Studio Extension)
Problem HALCON Variable Inspect (VSIX) cannot be installed. Note that you can
use HALCON Variable Inspect 23.11 with previously installed versions of HALCON
as well. To be able to use the new version with a previous version of HALCON
Steady, rename the license file of HALCON 23.11 to, e.g., license-23.11.dat,
and then copy it to the %HALCONROOT%license directory of the older HALCON
Steady installation. See the Programmer’s Guide, section 3.4 on page 24 for
more information about HALCON Variable Inspect.
Cause The problem is caused if users with different permissions are involved.
If an older version of HALCON Variable Inspect has been installed as
administrator, it cannot be upgraded by a general user.
Solution The old HALCON Variable Inspect has to be uninstalled before the SOM
package can be installed. To uninstall HALCON Variable Inspect from your
Visual Studio:
1. Open Visual Studio. 2. Open the menu Extensions Manage Extensions. 3.
Change to Installed. 4. Select HALCON version Variable Inspect and click
Uninstall. 5. Try installing HALCON Variable Inspect again. If the
installation still fails, continue with the next step. 6. Open a command
prompt as administrator. 7. Execute the following command to uninstall all
instances of HALCON Variable Inspect. Note that this will
remove all instances of HALCON Variable Inspect in all installed versions of
Visual Studio: VSIXBootstrapper.exe /admin /uninstall:4159242D-A658-4E33-BD2F-
7F4ED4CFC420
36
Troubleshooting
8. Try installing HALCON Variable Inspect again. If the installation still
fails, continue with the next step. 9. Open a command prompt as user. 10.
Execute the following command to uninstall all instances of HALCON Variable
Inspect. Note that this will
remove all instances of HALCON Variable Inspect in all installed versions of
Visual Studio:
VSIXBootstrapper.exe /uninstall:4159242D-A658-4E33-BD2F-7F4ED4CFC420
7.2 Problems Concerning Licenses
If you encounter problems with your HALCON license even though your license
file exists and is located in the correct directory, a first step is always to
check if the host ID identifying your network card or dongle matches the entry
in the license file (see the corresponding sections in chapter 5 on page 25).
If the two do not match, please send the new identifying information to your
distributor. See section 7.2.1 if you encounter problems with extracting the
identifying information.
7.2.1 Extracting Host IDs
· hhostid does not return a dongle ID Please note that only HALCON dongles
(orange) are reported by hhostid. Other dongles (e.g., blue MERLIC dongles)
are not supported.
· hhostid does not return a MAC address This might happen if you call hhostid
from a virtualized environment using locally administered MAC addresses.
HALCON only supports MAC based licenses bound to universally administered,
permanent MAC addresses. Locally administered MAC addresses are rejected.
· hhostid shows the dongle ID on Linux only when run as root If HALCON is run
without root permissions, HALCON needs read/write permissions on the hidraw
device created for the dongle. The following udev rule is required to achieve
this:
Udev rules to allow access to hidraw device for CodeMeter dongles
ACTION==”remove”, GOTO=”halcon-cm_end”
SUBSYSTEM==”hidraw”, ATTRS{idVendor}==”064f”, ATTRS{idProduct}==”2af9″,
MODE=”666″
LABEL=”halcon-cm_end”
You can add this rule to /etc/udev/rules.d yourself, or copy the file
$HALCONROOT/misc/linux/udev/rules.d/59-halcon-codemeter.rules to that
directory. Note that the UDEV rule must be activated after installation which
can be achieved by a reboot, for example. · hhostid shows no dongle ID on
Linux even though a HALCON dongle is plugged in In order to be able to use the
dongle on Linux, you must be running kernel version 2.6.39 or later with the
following configuration options enabled:
· CONFIG_HID · CONFIG_HIDRAW · CONFIG_TMPFS
These options are usually enabled by most Linux distributions. A common
exception are embedded systems, for which one or more of these options may be
disabled. In this case, hhostid is not able to access the dongle and a custom
kernel including the required components must be built. To check if the
running kernel has been built with CONFIG_HIDRAW enabled, run the following
command:
gunzip -c /proc/config.gz | grep CONFIG_HIDRAW
The other configuration options can be checked analogously.
7.3 Troubleshooting in HDevelop or HALCON Applications
37
Troubleshooting
7.3 Troubleshooting in HDevelop or HALCON Applications
7.3.1 Startup Errors
This section explains miscellaneous error messages when starting HDevelop or
your own HALCON applications and their reasons.
· Error using license file This error message might have several reasons: –
The file %HALCONROOT%licenselicense.dat is missing and/or not readable.
– Your license is not valid on this machine.
– If there is more than one user trying to use HALCON via remote access, the
second user gets an error message.
· HALCON stops recognizing the dongle The HALCON dongle will lock itself if it
is repeatedly unplugged and plugged back in within a short time (more than 50
times within 20 minutes). If this happens, the dongle will not respond for
five minutes. Any attempt to access the dongle during this time will restart
the five minute timeout. On Windows, if Wibu CodeMeter Runtime is not
installed, starting and stopping HALCON is detected as being plugged in and
out by the dongle. This means that if HALCON processes are rapidly started and
stopped, the dongle will lock itself. Installing Wibu CodeMeter Runtime will
avoid this problem as HALCON will then communicate with the dongle via the
CodeMeter Runtime instead of accessing the dongle directly.
· No license for this operator The operator which you try to execute belongs
to a HALCON module that is not licensed (see section 5.4 on page 28. Obtain a
new license including this module.
· hdevelop: Command not found (Linux) Check your system environment variable
PATH. It must include the path $HALCONROOT/bin/$HALCONARCH.
· lib : can’t open file (Linux) Check the system variable LD_LIBRARY_PATH
(see section A.4 on page 43).
· No help files for package
· If the package name is “system”: Wrong HALCONROOT.
· Check the file permissions. Probably HDevelop cannot access important files.
· Help file for package
· If the package name is that of a user package: Inconsistent version of the
help files of this package.
· Can’t open display (Linux) If you see an error message like this you may
have a wrong system variable DISPLAY and/or your program is not allowed to
open a window by the specified X-server.
· No refresh of window content on a Linux system On some Linux systems the
default behavior regarding occluded windows may be set in an inconvenient way
for HALCON. The result is that if a window is temporarily occluded by another
window, its content is not saved and restored anymore, i.e., windows remain
“black” after uncovering. An example for this are all SuSE Linux distributions
7.0. The corresponding property is called “backing-store”; you can check the
current setting of this property by typing (the following example corresponds
to a SuSE 8.2 Linux system):
38
Troubleshooting
xdpyinfo | grep backing-store
which should result in the output like options: backing-store YES, save-unders YES
if the window content is saved and restored. You can change this behavior by
changing the configuration file of your X server. It usually resides in
/etc/X11/xorg.conf if you are using Xorg, or in /etc/X11/XF86Config if you are
using XFree86. Consult your system’s documentation if in doubt.
You will probably need to become root to modify this file. Open the file in a
text editor, find the section named “Device”, and add the following option to
this section:
Section “Device”
…
Option
“BackingStore” “True”
EndSection
Alternatively, you can modify the file Xservers residing in the directory
/usr/lib/X11/xdm (or /opt/kde3/share/config/kdm in case of newer Linux
versions), see your system’s documentation. Note, that you probably need root
privileges to modify this file. Append the option +bs (i.e., “plus backing-
store”) to the line that starts the local X server:
:0 local /usr/X11R6/bin/X :0 vt07 +bs
Now, stop and start the X server again (by using the appropriate commands or by rebooting your computer); the command xdpyinfo now should yield the output shown above.
More on the Installation
39
Appendix
Appendix A
More on the Installation
A.1 Software Packages
Depending on your operating system, the following meta packages are available
via SOM:
Development The development version of HALCON, including interfaces to
supported programming languages, the full documentation, and all example
programs, including all necessary images and 3D models.
Runtime The runtime version of HALCON, i.e., only the set of libraries that
are necessary to run a HALCON application. Naturally, this type of
installation encompasses neither documentation, examples nor images. However,
it contains HDevEngine and the provided external procedures.
AI Accelerator Interfaces Plugins for optimizing the performance of deep
learning, like the “TensorRT Inference PlugIn”.
Image Acquisition Interfaces The most widely used interfaces. Additional
interfaces can be downloaded under http://www.mvtec. com/products/interfaces.
Digital I/O Interfaces Interfaces for several I/O devices. Additional
interfaces can be downloaded under http://www.mvtec. com/products/interfaces.
Variable Inspect Extension for Visual Studio Extension that simplifies the
debugging of applications in Visual Studio.
40
More on the Installation
The packages above are based on the following packages:
EULA The End User License Agreement.
Installation maintenance Support files for installation and uninstallation.
Example programs Example programs for all supported programming languages.
Example data 3D-Models and images.
Runtime files All files needed for runtime installation, and the HALCON tools
“hhostid” and “hcheck_parallel”.
Runtime files (general) Support files needed for runtime installation (Linux).
Development files Include files for development, the entire product
documentation, and the HALCON tools “hbench”, and “hcomp”.
HDevelop HALCON’s interactive development environment (HDevelop) and a command
line tool to run HDevelop scripts (hrun).
HDevelop XL The large-image version of HDevelop and a command line tool to run
HDevelop scripts (hrun).
Deep learning core Pretrained classifiers for deep learning applications.
Deep learning data Images and pretrained classifiers for deep learning example
programs.
Deep learning third party library CUDA libraries.
Microsoft Visual C++ Redistributable Files for the development with C++.
A.2 The Installed File Structure
The default installation targets depend on the operating system. For Windows and Linux users they also depend on the installation mode (“User mode” or “System mode”).
Windows
User mode Install target (programs) Install target (data)
System mode Install target (programs) Install target (data)
%LOCALAPPDATA%ProgramsMVTec %APPDATA%MVTec
%PROGRAMFILES%MVTec %PUBLIC%DocumentsMVTec
A.2 The Installed File Structure
41
Appendix
Linux
User mode Install target (programs) Install target (data)
System mode Install target (programs) Install target (data)
$HOME/MVTec $HOME/MVTec
opt/MVTec opt/MVTec
A.2.1 Main Directory
In the following, the most important directories and files are described
briefly. Note that, depending on your installation, not all directories may be
present.
bin Contains HALCON programs and HALCON tools, for example HDevelop, in
subdirectories corresponding to the different platforms. The subdirectories
dotnet20 and dotnet35 contain the HALCON/.NET assemblies based on .NET
Framework 2.0, and .NET Framework 3.5, respectively. Windows only: This
directory also contains the DLLs of the HALCON libraries, the DLLs for the
supported image acquisition interfaces, and I/O device interfaces.
calib Contains description files for the calibration plates, which you can use
to calibrate your camera.
doc Contains the whole documentation in English, e.g., the User’s Manuals and
the Operator Reference.
doc_de_DE Contains the German version of the Operator Reference.
doc_ja_JP Contains the Japanese version of the Operator Reference.
examples Contains example programs, images, and models. To experiment with the
examples without modifying the distributed versions, you can create a private
copy in your own working directory.
filter Contains predefined filter masks.
genicam Contains the underlying GenAPI runtime software for the GigE Vision,
GenICamTL, and USB3Vision image acquisition interfaces.
help The files in this directory act as the HALCON database, i.e., they
provide information about HALCON to HDevelop and to all HALCON applications.
In particular, they contain the operator database. The XML files starting with
index_manuals contain the index data of the manuals. The XML files starting
with index_examples contain the data for the Browse Examples dialog in
HDevelop and those starting with tip_of_the_day contain the information for
the Tip of the Day that appears in the HDevelop Start Dialog.
include Contains the header files that are necessary to use HALCON within the
programming languages C or C++.
lib Contains the HALCON libraries.
license The license file must be placed here (see section 5.1 on page 25.)
42
More on the Installation
lut Contains predefined look-up tables.
misc Contains miscellaneous files for the installer, e.g., the GigE Vision
filter driver. Windows only: In addition, the installer of the HALCON Variable
Inspect can be found here. Please refer to the Programmer’s Guide, section 3.4
on page 24, for more information about this extension.
ocr Contains pretrained fonts.
procedures Contains external procedures for HDevelop and HDevEngine.
som.d Database for installed SOM packages, i.e., all installed packages are
registered in this subdirectory.
A.2.2 Machine Configuration Data
The following directory contains machine-specific configuration data, e.g., results of the utility hcheck_parallel or the operator optimize_aop.
Windows C:ProgramDataMVTecHALCON-23.11 (%ProgramData%…)
Linux
/opt/halcon ($HALCONROOT)
A.2.3 User Configuration Data
The following directory contains user-specific configuration data, e.g., HDevelop preferences (HDevelop.ini).
Windows %APPDATA%/MVTec
Linux
$HOME/.hdevelop/MVTec
A.3 HALCON tools
The following HALCON tools are delivered:
hbench
hcheck_parallel
hcomp hhostid hrun
A benchmark tool for the HALCON machine vision library to compare the capability of various machines. E.g., memory transfer can be measured with the hbench option (-memory). A tool checking a multiprocessor computer about its potential for speeding up HALCON operators by parallel processing, see Programmer’s Guide, section 2.1.1 on page 15. The HALCON compiler. See Extension Package Programmer’s Manual, section 7.1 on page 97 A tool to find available host IDs for licensing of HALCON, see section 5.1 on page 26. A command line utility to run HDevelop scripts, see HDevelop User’s Guide, appendix C.2 on page 326.
These tools are in the directory bin or a subdirectories corresponding to the platforms of your HALCON installation, see section A.2 on page 40.
The following command displays possible options and a synopsis for every tool:
toolname –help
A.4 HALCON’s Environment Variables
43
A.4 HALCON’s Environment Variables
Most of the configuration necessary to work with HALCON amounts to setting
environment variables, e.g., to tell HALCON the directories where to find
images or extension packages etc. These environment variables are described
below, after some information regarding the different platforms.
Appendix
A.4.1 Setting Environment Variables Under Windows
SOM automatically sets the necessary environment variables, e.g., HALCONROOT,
HALCONEXAMPLES, HALCONIMAGES, and PATH (see below). To take a look at these
settings, search for “Environment” using the system search, and select the
search result “Edit the system environment variables” or “Edit environment
variables for you account”. You can add or modify a variable by entering the
name of a variable and the desired value. If a value consists of multiple
items, e.g., the variable PATH, which may contain multiple directories, those
items must be separated by semicolons.
A.4.2 Setting Environment Variables Under Linux
As described in section 2.2.1.4 on page 17, you must set the necessary
environment variables in a login script or a shell resource script.
A.4.3 HALCON-Specific Environment Variables
· HALCONROOT This is the most important environment variable. It designates
the directory where HALCON is installed. If this variable is unset at the time
HDevelop is run, or when the HALCON library is loaded, its value will be
inferred from the path the executable or the library resides in, respectively.
From this path the trailing part bin%HALCONARCH% or lib%HALCONARCH% will be
removed. The variable HALCONROOT will then be set to the resulting path
temporarily. Based on this variable, the system switches to subdirectories,
which are important for running HALCON. Some of them are listed below; the
HALCON file structure is described in section A.2 on page 40. –
%HALCONROOT%help The files in this directory act as the HALCON information
database (see section A.2 on page 40 for more information).
– %HALCONROOT%dochtmlreferenceoperators HDevelop expects the HTML files of the
operator reference in this directory.
– %HALCONROOT%license This directory contains the license file necessary for
using HALCON (see chapter 5 on page 25).
– %HALCONROOT%examples If the variable HALCONEXAMPLES (see below) is not set,
the system looks for example programs in this directory.
– %HALCONEXAMPLES%images If the variable HALCONIMAGES (see below) is not set,
the system looks for image files in this directory.
· HALCONEXAMPLES This environment variable designates the directory where
HALCON example programs are installed.
· HALCONIMAGES The system uses this environment variable to search for image
files specified by a relative path. As a rule it contains several directory
names, separated by semicolons (Windows) or colons (Linux).
· HALCONARCH This variable designates the used platform. More details can be
found in section 1.4 on page 8.
44
More on the Installation
· HALCONEXTENSIONS This is a list of directories in which user-defined
extension operators (so-called extension packages) are kept. Each package
consists of a number of operators linked into a shared library, plus the
additional operator documentation in help files and HTML files. See section
2.6 on page 19 for information on how to install an extension package, and the
Extension Package Programmer’s Manual for details on creating your own
extension packages.
· HALCONSPY If this environment variable is defined (regardless of the value)
before you start a HALCON program, the HALCON debugging tool HALCON Spy is
activated. This corresponds to call the HALCON operator set_spy with the
parameters “mode”,”on” within a HALCON program. The main difference between
the two modes for activating HALCON Spy is that by defining HALCONSPY it is
possible to monitor an already linked HALCON program during runtime without
modifications. For further information on how to use HALCON Spy and how to
parameterize it via this environment variable please refer to the Programmer’s
Guide, section 3.1 on page 23.
· HALCON_LICENSE_FILE This environment variable can be set to the full path of
a specific license file. In this case, the given license file is used and no
further search is performed. Usually, the license file is searched in the
current working directory and the installed license directory.
A.4.4 General Environment Variables
· PATH Windows: During the installation, the directory
%HALCONROOT%bin%HALCONARCH% is automatically added to the system variable
PATH. Linux: If you want to start HDevelop from an arbitrary directory, you
must include the HALCON program path $HALCONROOT/bin/$HALCONARCH in the system
variable PATH.
· LD_LIBRARY_PATH (Linux only) Please include the HALCON library path
$HALCONROOT/lib/$HALCONARCH in the system variable LD_LIBRARY_PATH. This is
necessary both for running HDevelop and for creating stand-alone applications.
· DISPLAY (Linux only) The system uses this environment variable to open
windows. It is used in the same way as for other X applications.
· HOME (Linux only) This system variable points to your home directory.
Index
45
Index
Index
compatibility (HALCON), 8 cuBLAS library, 23 cuDNN library, 23
Deep learning third-party components, 23 development license, 27 development
version, 7 DISPLAY (environment variable), 44 dynamic modules in HALCON, 29
environment variables (general), 44 environment variables (HALCON), 43
evaluation license, 26
get host ID manually, 26 get host ID of network card, 27 get required HALCON
modules, 28
HALCON limitations, 12 HALCON_LICENSE_FILE (environment variable),
44 HALCONARCH (environment variable), 43 HALCONEXAMPLES (environment
variable), 43 HALCONEXTENSIONS (environment variable),
44 HALCONIMAGES (environment variable), 43 HALCONROOT (environment variable),
43 HALCONSPY (environment variable), 44 hhostid, 26, 36 HOME (environment
variable), 44
install extension package, 19 install HALCON, 15 install image acquisition
interface, 19 installed file structure, 40
LD_LIBRARY_PATH (environment variable), 44 license, 25
installation, 17 overview, 14 troubleshooting, 36
maintenance release, 8
node-locked development license bound to dongle, 27
node-locked development license bound to network card, 27
PATH (environment variable), 44
runtime license, 28 runtime version, 7
set environment variables Linux, 43 Windows, 43
Software Manager (SOM), 15 software packages, 39 switch between HALCON
versions, 18 system mode, 15 system requirements, 8
troubleshooting (miscellaneous), 37 troubleshooting for get host ID, 36
uninstall HALCON, 21 update HALCON, 18 upgrade license, 30 user mode, 15
Variable Inspect Extension for Visual Studio troubleshooting, 35
version (HALCON), 8
WOW64, 8
References
- ciii’s blog
- VB Shop
- HALCON - the powerful Machine Vision Software: MVTec Software
- Download Area: MVTec Software
- MVTec interfaces: MVTec Software
- JetPack SDK | NVIDIA Developer
- packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
- Wibu-Systems | Software Protection, Software Licensing, Access Protection, Document Protection - Wibu-Systems
Read User Manual Online (PDF format)
Read User Manual Online (PDF format) >>