VisionLib also supports IDS uEye devices as one type of high-end industrial cameras, in order to meet quality and accuracy demands such as in automated manufacturing, inspection, and robotics. Using VisionLib together with uEye may be particularly useful to you if your use case is characterized by some of the following requirements:
In order to use uEye cameras, it is necessary to install the uEye driver package first. It can be obtained from the IDS download section. You may need to create an account on the IDS web page.
In general, uEye cameras can be accessed with VisionLib in two ways:
The DirectShow interface should work immediately after uEye driver installation. Access your uEye camera with VisionLib like any other camera or webcam by using the camera input source type as described in Handling Input Sources. It works with any version of uEye drivers.
The VisionLib uEye interface provides you with additional possibilities for camera control and is the main focus of this article. To make it work, the version of the driver package must match the uEye library version with which the VisionLib was built, which is IDS Software Suite 4.94 WHQL. If it is not the most recent version anymore, you will find it in the archive section of the IDS web page.
In Unity, import the VisionLib.SDK.Examples-Unity.unitypackage
and open the UEyeCameraTracking
example scene from VisionLib Examples/ModelTracking/Advanced
to see how the VisionLib uEye interface can be used. This scene also enables you to calibrate the uEye camera and configure some of its parameters with UI elements. Furthermore, you can save and load the final settings to and from the internal camera memory (EEPROM) or a specified file.
In order to begin the configuration of your camera, press the Calibrate
button and select the desired uEye camera by pressing the <serialNumber> VisionLib uEye-Interface
button. If this option is not available, the camera is not properly connected or the plugin has not been loaded. In the latter case, check the console messages and ensure the drivers are installed.
Afterwards, you can use the Parameters on
button to show the parameter sliders for configuration. There are options to set exposure, gain, black level, gamma and color mode.
Modify them until you get a sharp image. Once you are satisfied with your settings, you can save them to a file or the EEPROM of the camera with the corresponding buttons. The file used for saving or loading must be specified by a file path in the text field above the buttons and the filename extension must be .ini
.
Now start the actual calibration of the camera by hitting the Run
button. When you are done, drop the resulting calibration file in the TrackingConfiguration
component of the VLTracking
GameObject. Finally, press Start
and test your configuration by tracking the handcrafted paper car.
Manual loading of the plugin is required if you want uEye cameras to be listed in the available devices list of the device info, for example to show uEye cameras in the input selection. In the example scene, the plugin is loaded automatically by the UEyePluginLoader
component of the VLUEyeCameraParameters
GameObject. When using a custom scene, you can achieve the same behaviour by adding the VLUEyeCameraParameters
prefab to your hierarchy. In the C-interface, load the plugin by calling vlWorker_LoadPlugin("VideoUEye")
.
Note: The plugin will be loaded automatically when using a tracking configuration file with a device of type uEyeCameraMono
, like described below.
Note: The VPVideoUEye.dll
always has to be located next to vlSDK.dll
.
If something is not working correctly, make sure to have a look at the log messages for guidance.
In Unity, it is possible to select the VisionLib interface by choosing <serialNumber> VisionLib uEye-Interface
in the input source selection dialogue.
Alternatively, the uEye camera can be accessed through the tracking configuration file. Therefore, one has to specify the type of the image source in the input section to be uEyeCameraMono
. The uEye plugin will be loaded automatically in this case. Moreover, one can specify a deviceID
or serialNumber
in the data section of that image source to choose a specific device if more than one uEye camera is connected to your system. You can copy the specific deviceID
from the console log in Unity after selecting the desired device in the input selection of the example scene. If nothing is specified, the first uEye device detected by the system will be used.
Please have a look at the exemplary input section of a tracking configuration file below:
Especially, notice the option to undistort the image for more accurate tracking after calibrating your camera. As uEye cameras support a wide variety of lenses, it is recommended to always calibrate them in order to receive the best results. For more details on the calibration process, see Camera Calibration.
Setting the useColor
option to false in the input section as well as in the tracker section, will enable you to use grey valued images in the whole tracking pipeline. This setup will result in accelerating the tracking at cost of robustness of auto initialization.
For a list of all possible input parameters for image sources of type uEye
, please refer to the Configuration File Reference.
To configure uEye parameters in a custom Unity scene, use the VLUEyeCameraParameters
prefab from VisionLib SDK/Core/Prefabs/TrackingParameters/
. This prefab provides all accessible parameters. Use the events emitted by the individual parameters to read their values and the SetValue
function of each parameter to set them to your own desires. Additionally, the UEyeCameraParameters
component attached to the prefab provides functionality to use the internal camera memory.
In VisionLib's C-interface, camera parameters are controlled via json-commands. The attributes listed below are accessed via SetAttribute
and GetAttribute
commands or the special commands respectively. For example, you could load the camera settings from internal memory or change the color mode to monochrome by using the json-commands
in vlWorker_PushJsonCommand. Remember to escape the necessary characters in the C-string.
The following attributes are accessible by the interface:
Attribute | Type | Description |
---|---|---|
imageSource.exposure | float [exposureMin..exposureMax] | Read / Write the exposure/shutter value of the camera. |
imageSource.exposureMax | float | Read only. Get the maximal exposure value for the current camera settings. |
imageSource.exposureMin | float | Read only. Get the minimal exposure value for the current camera settings. |
imageSource.gain | integer [0..100] | Read / Write the gain value of the camera. |
imageSource.blackLevel | integer [0..255] | Read / Write the black level value of the camera. |
imageSource.gamma | integer [0..1000] |
Read / Write the gamma value of the camera. The |
imageSource.colorMode | integer [1, 6, 11, 129] |
Read / Write the color mode, i.e. the pixel format of the images as transmitted from the camera to VisionLib. Can be set to: 1 (BGR), 129 (RGB), 6 (monochrome), or 11 (raw sensor / Bayer format) The parameter You can accelerate tracking by selecting mode 6 (monochrome) together with the option |
imageSource.loadParametersFromFile | string | Write only. The file path that is used to load uEye camera settings from an .ini file. |
imageSource.saveParametersToFile | string | Write only. The file path that is used to save uEye camera settings to an .ini file. |
Additionally, these unique commands are available:
Command | Description |
---|---|
imageSource.loadParametersFromEEPROM | Load camera parameters from internal memory. |
imageSource.saveParametersToEEPROM | Save camera parameters to internal memory. |
imageSource.resetParametersToDefault | Reset camera parameters. |
If the set of parameters currently available is not enough to configure the camera for your needs, you can also use the IDS-camera manager, which is shipped with the uEye drivers. With the IDS camera manager you can adjust any other camera parameter. You can save the whole configuration either on your hard drive (* .ini file) or on the camera memory (EEPROM). From there you can load it with the VisionLib uEye interface to use your custom configuration.
Note: The IDS-camera manager and VisionLib cannot access the same camera at the same time.