Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »


Introduction

For more information about the software Halcon from MVTec, we refer to their office website: https://www.mvtec.com/products/halcon/

Halcon can be preinstalled on the camera under the location /opt/halcon and can be acceses via the path variable $HALCONROOT . If not preinstalled please contact you sales.

Error rendering macro 'viewpdf' : Failed to find attachment with Name arm_based_platforms.pdf

HALCON for Arm-based Platforms

The offical MVTec document "HALCON for Arm-based Platforms" describes the process of  "compiling/cross-compiling" of halcon application and is linked below.

https://www.mvtec.com/fileadmin/Redaktion/mvtec.com/documentation/manuals/arm_based_platforms.pdf

The document is divided into chapter. For a better orientation we give a short overview:

Chapter 1 Using HALCON on Arm-based platforms

Gives a general overview of using Halcon on armbased plattforms.

Chapter 2 Getting started

Discribes the process of installing halcon to an armbased plattform and can be skipped since the halcon tools are preinstalled both on the iam-camera and the virtual machine.

Chapter 3 Creating Applications

Describes the process of  "compiling/cross-compiling" of an halcon application.

Halcon Examples on iam camera

You need to open an SSH Shell connection to the camera. For some example you also need to have X-Server support.

ssh -Y root@192.168.1.10

There are some examples preinstalled to the iam camera. They can be found under the location

cd /home/root/040530_test_halcon

On top of the filesystem the README.md can be found.

There is detalied information about the provided samples.

structure of the test_halcon folder:

The folder contains the file system below. On can see that the three examples do have a similar file structure.

.
|-- README.md			
|-- cpp
|   |-- Makefile
|   |-- test_halcon_aniso_test
|   |   |-- bin
|   |   |   |-- aarch64-linux
|   |   |       |-- find_aniso_shape_model
|   |   |-- makefiles
|   |   |   |-- macros.mak
|   |   |   |-- makefile
|   |   |   |-- rules.mak
|   |   |-- source
|   |   |   |-- find_aniso_shape_model.cpp
|   |   |-- vs2010
|   |       |-- test_halcon_aniso.sln
|   |       |-- test_halcon_aniso.suo
|   |       |-- test_halcon_aniso.vcxproj
|   |       |-- test_halcon_aniso.vcxproj.filters
|   |       |-- test_halcon_aniso.vcxproj.user
|   |       |-- x64
|   |           |-- Release
|   |               |-- test_halcon_aniso.exe
|   |-- test_halcon_live_view
|   |   |-- bin
|   |   |   |-- aarch64-linux
|   |   |       |-- test_halcon_live_view
|   |   |-- makefiles
|   |   |   |-- macros.mak
|   |   |   |-- makefile
|   |   |   |-- rules.mak
|   |   |-- source
|   |   |   |-- test_halcon_live_view.cpp
|   |   |-- vs2010
|   |       |-- test_halcon_live_view.sln
|   |       |-- test_halcon_live_view.suo
|   |       |-- test_halcon_live_view.vcxproj
|   |       |-- test_halcon_live_view.vcxproj.filters
|   |       |-- test_halcon_live_view.vcxproj.user
|   |       |-- x64
|   |           |-- Release
|   |               |-- test_halcon_live_view.exe
|   |-- /test_halcon_sw_trigger
|       |-- bin
|       |   |-- aarch64-linux
|       |       |-- test_halcon_sw_trigger
|       |-- makefiles
|       |   |-- macros.mak
|       |   |-- makefile
|       |   |-- rules.mak
|       |-- source
|       |   |-- test_halcon_sw_trigger.cpp
|       |-- vs2010
|           |-- test_halcon_sw_trigger.sln
|           |-- test_halcon_sw_trigger.suo
|           |-- test_halcon_sw_trigger.vcxproj
|           |-- test_halcon_sw_trigger.vcxproj.filters
|           |-- test_halcon_sw_trigger.vcxproj.user
|           |-- x64
|               |-- Release
|                   |-- test_halcon_sw_trigger.exe
|-- profile_halcon



Description of samples:

test_halcon_aniso_test:

This sample is derived from find_aniso_shape_model.hdev (MVTec Software GmbH).
This sample is designed for testing the performance of the FindAnisoShapeModel() function.
With 50 loops a mean value of the consumed time of FindAnisoShapeModel() is evaluated.

OPTIONS:

NO_WINDOWS ; if defined no windows are shown

test_halcon_live_view:

This sample is derived from error_handling_timeout.cpp (MVTec Software GmbH).
This sample is designed for testing the live view of the iam platform.

OPTIONS:

SAVE_IMAGE ; if defined, a image is saved at the end of program
SET_EXPOSURE_TIME ; if defined, a exposure time is set

test_halcon_sw_trigger:

This sample is derived from error_handling_timeout.cpp (MVTec Software GmbH).
This sample is designed to show the software trigger functionality.
This sample aquires 100 software triggered frames.
No live view is implemented.

OPTIONS:

NONE

Execute one of the provided Halcon examples

The binarys of the brebuild examples can be found in the ../bin directory of each example project. The test_halcon_live_view can be executed by the commands below. The two others examples can be executet in the same way.

cd /home/root/040530_test_halcon/cpp/test_halcon_live_view/bin/aarch64-linux/
./test_halcon_live_view

The test_halcon_live_view example opens a figure showing the camera live image. Therefore it is necessary that the OpenSSH connecton allows x11 forwarding!

The two other examples test_halcon_aniso_test and test_halcon_sw_trigger do not need the x11 forwarding.

Compiling the provided Halcon examples

It is possible to compile the examples on a Linux Host system (e. g. by using the provided virtual machine image) or native on the camera (over OpenSSH) both unsing makefiles.

For cross-compiling, you have to source profile_halcon:
source .profile_halcon

You can test successful sourcing with:
echo $HALCONARCH

You should see:
aarch64-linux

The next section described the process of building the software trigger project as an example.

Build e. g. the software trigger example

The steps discribed below are both the same on native and cross compile enviroment.

navigate into the makfile directory

cd /home/root/040530_test_halcon/cpp/test_halcon_sw_trigger/makefiles

Remove the prebuild binary by execute the command make make clean and build it from source by make .

For more details: The exact behavior of both commands are defined in the makefile.

make clean
make

The compiled binary can be found in the ../bin directory and can be executed as follow

cd ../bin/aarch64-linux/
./test_halcon_sw_trigger

The other examples test_halcon_live_view and test_halcon_aniso_test or your own project as discribed in the next section can be build from source in the same way.

Building your own Halcon examples:

Prepare Makefiles

Possibly the easiest way is to copy the complete folder of one of the examples and rename it to your project name.

cd /home/root/040530_test_halcon/cpp/
mkdir your_project_name
cp -vr test_halcon_sw_trigger/* your_project_name

Now you can edit and rename the given source file from the director your_project_name/source/ or simply replace it by your own cpp file.

On will get a well-arranged file structure if you use the make clean command before futher edithing your project director. On can achive this by executing the commands below.

cd /home/root/040530_test_halcon/cpp/your_project_name/makefiles/
make clean

cd /home/root/040530_test_halcon/cpp/your_project_name/source/
mv test_halcon_sw_trigger.cpp your_source_file_name.cpp

Since you are analysing an monochrome image sensor it is important to use a monochrome pixel fomat. Therfore the given examples do all show how to configrure the pixel format in source code. Like the listening from test_halcon_sw_trigger.cpp below.

try
{
	acqdevice.SetFramegrabberParam("PixelFormat", "Mono8");
}
catch (HException &except)
{
	cout << "---> PixelFormat failed!\n";
	cout << "---> Cause: " << except.ErrorMessage() << "(HALCON error " << except.ErrorCode() << ")\n";
	cout << "---> CloseFramegrabber!\n";
	acqdevice.CloseFramegrabber();
	return except.ErrorCode();
}


You also need to edit the makefile as discribed below at line 38 by the name of your cpp source file.

#------------------------------------------------------------------------------
# makefile
#------------------------------------------------------------------------------
# HALCON/C++ examples
#
# ATTENTION:
#
#   This makefile uses gmake syntax and works only with gmake, therefore.
#   On Windows systems you can use nmake with the file makefile.win 
#   which is also provided in this directory
#   The executables are created in the directory 
#   $(HALCONEXAMPLES)/cpp/console/bin$(CONF_SUFFIX)/$(HALCONARCH)
#
# Copyright (c) 1996-2019 by MVTec Software GmbH
#                            www.mvtec.com
#------------------------------------------------------------------------------
# The makefile can be used in the following way:
#    gmake all
#    gmake all XL=1
#    gmake allxl
#    gmake clean
#    gmake <program>
#    gmake <program> XL=1
#    gmake PROG=<program>
#    gmake PROG=<program> XL=1
#    gmake PROG=<program> clean
# Optionally the STATE variable can be set to release or debug, e.g.
#    gmake STATE=debug all
#------------------------------------------------------------------------------
#
#  Make sure that the following environment variables are set correctly:
#    - HALCONROOT
#    - HALCONARCH 
#------------------------------------------------------------------------------

# -- common stuff -------------------------------------------------------------

PROG           = your_source_file_name

ifndef BASE_DIR
BASE_DIR       = ../
endif
ifndef MAKE_DIR
MAKE_DIR       = $(BASE_DIR)makefiles/
endif
ifndef MAKE_FILE
MAKE_FILE      = makefile
endif

ifndef SRC_DIR
SRC_DIR        = $(BASE_DIR)source/
endif

Using make command

navigate into the makfile directory and exexute the make command.

cd /home/root/040530_test_halcon/cpp/your_project_name/makefiles
make

You may need to remove your binaries were builed before by execute the command make clean before.

The binary can be found now in the ../bin directory and can be executed by the commands below.

cd ../bin/aarch64-linux/
./your_source_file_name


Attachments

  File Modified


🔍 References

🔗 related content

👥 contact NET

Error rendering macro 'excerpt-include' : No link could be created for 'MasterContent: Contact NET'.

  • No labels