Version: 2.0.0
This repository contains programming samples for Sick Visionary-T Mini AP (V3S145-1AAAAAA), Sick Visionary-S AP (V3S142-1AAxxxx) and Sick Visionary-B Two (V3S146-1AAAAAA). All samples require that the Visionary Stream App is running on the devices.
Target audience
The samples provided in this repository are intended for developers and system integrators familiar with C++ or Python. Basic programming knowledge is assumed to adapt and extend the provided code.
Device Name |
Part No. |
Description |
Firmware Version |
Visionary Stream App version |
Visionary-T Mini AP (V3S145-1AAAAAA) |
3D time-of-flight camera |
3.15.3 |
2.0.2 |
|
Visionary-B Two (V3S146-1AAAAAA) |
3D stereovision camera |
3.17.0 |
2.0.2 |
|
Visionary-S AP (V3S142-1AAxxxx) |
3D structured light stereovision camera |
3.17.0 |
2.0.2 |
-
A Gigabit Ethernet (1000 Mbit/s) connection is the minimum requirement.
-
The network interface card (NIC) used to connect to the camera must support jumbo frames (typically MTU = 9000 bytes).
-
All Ethernet components between the camera and the host machine—including switches and routers—must also support jumbo frames.
-
Optimal network performance cannot be guaranteed without the use of jumbo frames.
This repository provides a collection of examples for accessing the cameras from C/C++ and Python.
GenIStreamC is an SDK from SICK that provides an easy-to-use programming interface for accessing GigE Vision and GenICam–based Visionary cameras. The library binaries, development files and documentation are distributed through a dedicated repository sick_visionary_gev_base. Refer to its GettingStarted document for all required instructions - system requirements, package structure and build instructions and in particular pointers to the library reference and other documentation.
For advanced users and those who want get productive immediately: Ensure you have a recent version of cmake [1] and a compiler available on your machine’s system.
To build the C++ samples, use the following command either in the top-level visionary_gev_samples directory or in the subdirectory of the respective sample using its specific CMakeLists.txt [2]:
-
cmake -B buildoptionally also specify other options like -G for custom generator
Now you can build the files with the chosen build-system you’ve generated them for, for instance, open the solution in VisualStudio or run make/ninja.
-
cmake --build build
To e.g. run the find_sensor sample, you can navigate to the build/output directory from their respective top-level directory:
$ cd build/output/
# On Windows depending on the <CONFIG> = {Debug, Release}
$ cd build/output/<CONFIG>/and execute the sample:
$ ./find_sensoror you can execute it from their respective top-level directory:
$ ./build/output/find_sensor
# On Windows depending on the <CONFIG> = {Debug, Release}
$ cd ./build/output/<CONFIG>/find_sensorThe entry point to accessing Visionary cameras is the
that demonstrates how to use the GenIStreamC library by giving a detailed, fully commented walkthrough. Further, a collection of task-specific source code samples is available:
Harvesters (https://github.com/genicam/harvesters) is a lightweight Python framework that provides an easy‑to‑use interface for accessing GigE Vision and GenICam–based Visionary cameras. When used together with the SICK GenICam GenTL Producer, it enables efficient and intuitive implementation of streaming and device‑control functionality in Python applications.
Refer to the Python samples overview for specific installation instructions and description of the below mentioned samples. The starting point to work with GigE Vision and Harvesters is the
-
Python tutorial sample - a detailed, fully commented walkthrough of how to use Harvesters. We strongly recommend reviewing and understanding this script first. It is well‑documented and guides you step by step through the entire setup process. In addition, it performs several environment checks. Please pay close attention to any hints or warnings that appear during execution, as they may indicate configuration issues or missing dependencies.
Furthermore, we provide a task‑specific sample:
-
IP configuration - provides functionality to query and manage the IP configuration of the camera — an essential prerequisite for reliable device operation. A camera with an IP address that does not match the subnet of the connected network interface will be inaccessible. The main features supported by the script are:
-
Device discovery: Lists all currently visible devices, including identity details and current IP settings.
-
Temporary IP Assignment: Forces a temporary IP address (either user-defined or auto-selected) to bring the device into the same subnet as the host NIC. Note: This address is volatile and will not persist after a power cycle.
-
Persistent Configuration: Sets up permanent IP configuration for future boots, supporting static IP, DHCP, or LLA. Optionally, the IP configuration process can be forcefully restarted.
-
For detailed usage instructions, invoke the script with the --help parameter.
Further technical documentation is available in the doc/ folder:
-
Feature Overview for GenTLProducer
GenICamFeaturesOverview_GenTLProducer — Summarizes the capabilities provided by the GenTLProducer. -
Network Configuration and Performance Guidelines
NetworkConfigurationAndPerformance — Covers essential recommendations for optimizing network setup and ensuring reliable performance. -
Stream Throughput Calculator
StreamThroughputCalculator — A simple HTML-based tool to visualize how stream parameters affect camera throughput.
Capture traffic using Wireshark
To assist with diagnostics, please capture network traffic during the issue using Wireshark. Wireshark is widely supported, and extensive documentation and tutorials are available online.
Activate Python debug logs
For deeper insight into Harvesters behavior, enable debug logging via Python’s logging module:
from harvesters.core import Harvester import logging logging.basicConfig(format='%(asctime)s %(message)s', level=logging.DEBUG) with Harvester(logger=logging) as h: ... <your script as usual> ...
Advanced GenTL logging (only if requested)
In specific cases, detailed GenTL layer logging may be required. Enable it by setting the following environment variables:
SICK_GENTL_LOGGING=1 SICK_GENTL_LOGGING_LEVEL=99
-
On Windows: Use DebugView to view log output.
-
On Linux: Logs will be printed to
stderr.
|
Warning
|
High-verbosity logging can significantly reduce acquisition performance. Enable it only when explicitly requested by support, and disable it after troubleshooting. |
Handling duplicate device discovery
If a script reports multiple devices found, verify whether the device responds twice to discovery—once with read/write access and once without.
This often indicates IP misconfiguration. Avoid multi-homing (assigning multiple IPs from different subnets to the same NIC), and review your IP setup accordingly.
Download encrypted device diagnostics
When contacting SICK support, providing a diagnosis dump can be helpful. You can download the encrypted dump file via HTTPS - simply paste the provided URL into your browser
:
http://<CAMERA_IP>/api/crown/file?filePath=/diagnosisDump.zip
Known Issues
-
Downloading any camera system logs is not supported yet
Depending on the nature of your question, there are two support channels:
-
For questions regarding the code shared in this repo please check the FAQ first and search if an issue already exists. If a related issue doesn’t exist, you can open a new issue using the issue form.
-
For application or device specific questions look for common solutions and knowledge articles on the Sick Support Portal. If your question is not answered there, open a ticket on the Sick Support Portal.