Allied Vision Cameras and Vimba SDK quick guide

From RidgeRun Developer Wiki


Allied Vision

Allied Vision company develops digital cameras for computer vision in a variety of sectors like science and research, medical imaging, traffic monitoring, and sports analytics.

The goal of Allied Vision is for the cameras to adapt to the requirements of the application which they achieve designing the cameras to be modular. This allows them to have a flexible and variable camera portfolio with diversity of sensor, lens mounts, filters and more options for their cameras.

Allied vision includes the development of a software for their cameras with GigE, USB, and MIPI CSI-2 interfaces called Vimba SDK. This software provides code examples, a Vimba Viewer application, Vimba’s Image Transform Library, Vimba’s Defective Pixel Manager, Firmware Updater, and Driver Installer.

The company has also develop a GStreamer plugin for the respective software to record images and use the cameras in GStreamer pipelines.

Vimba SDK

Vimba SDK includes scripts for the cameras driver installation and the necessary library to install the GStreamer plugins.

Currently there are two version of the SDK the Vimba SDK and the VimbaX SDK. VimbaX is the new SDK fully GenICam-compliant and supports latest Alvium features and Vmb APIs.

Check out the differences in the following chart:

Feature VimbaX Vimba
Windows, Linux, ARM, macOS Yes, yes, yes, yes Yes, yes, yes, no
Supports latest Alvium features Yes No
Supports legacy non-GenICam compliant features No Yes
GigE, USB, and CSI-2 support Yes Yes
IEEE 1394 support No Yes
Camera Link Config TL No Yes
C, C++, and Python API Yes Yes
.NET API No Yes
Image Transform Library Yes Yes
Firmware Updater Yes Yes
Viewer Yes Yes

Follow the below instructions to learn how to install Vimba SDK and their corresponding GStreamer plugin to capture with pipelines.

VimbaX install guide

Download VimbaX SDK in Allied Vision Downloads page

Decompress the VimbaX SDK tarball

tar -xvf VimbaX_Setup-2023-4-Linux_ARM64.tar.gz

Allied vision manage 3 types of cameras, each type has it own script to install the respective drivers.

  • GigE camera users: Go to [InstallDir]/VimbaX_x_x/cti/VimbaGigETL_Install.sh
  • USB camera users: Go to [InstallDir]/VimbaX_x_x/cti/VimbaUSBTL_Install.sh
  • CSI-2 camera users: Go to [InstallDir]/VimbaX_x_x/cti/VimbaCSITL_Install.sh

Run the installation script for your respective camera:

cd VimbaX_2023-4/cti
sudo ./VimbaUSBTL_Install.sh

The installation expected output is:

nvidia@nvidia-desktop:VimbaX_2023-4/cti$ sudo ./VimbaUSBTL_Install.sh 
Registering GENICAM_GENTL64_PATH
Registering AVTUSBTL device types
Done
Please reboot before using the USB transport layer

Gstreamer plugin - vmbsrc

Allied vision develop the vmbsrc plugin to capture from the cameras in a Gstreamer pipeline. You can found the source code on the gst-vmbsrc gst-vmbsrc repository

Steps to install vmbsrc

Download and extract the shared library with the vmbsrc element from the git release.

cd
wget https://github.com/alliedvision/gst-vmbsrc/releases/download/1.0.0/gst-vmbsrc-1.0.0-linux-arm64.zip
tar -xvf gst-vmbsrc-1.0.0-linux-arm64.zip

Copy the shared library to the gstreamer plugins directory:

sudo cp deploy/lib/libgstvmbsrc.so /usr/lib/$(uname -m)-linux-gnu/gstreamer-1.0/

In order to use the element, the VimbaC shared library needs to be loadable at runtime. In case this is not complete in the VimbaX installation you can add a file to /etc/ld.so.conf.d/ which contains the path to the shared library.

cd /etc/ld.so.conf.d/
sudo su
touch vimbax.conf
echo /opt/VimbaX_2023-4/api/lib/ > vmbsrc.conf
exit
cd

Update the ldconfig cache.

sudo ldconfig -v

Check the plugin is installed:

nvidia@nvidia-desktop:~$ gst-inspect-1.0 | grep vmb
vmbsrc:  vmbsrc: VimbaX GStreamer source


Vimba install guide

Download Vimba SDK in Allied Vision Downloads page

Decompress the Vimba SDK tarball

tar -xzf Vimba_v6.1_ARM64.tgz

Allied vision manage 3 types of cameras, each type has it own script to install the respective drivers.

  • GigE camera users: Go to [InstallDir]/Vimba_x_x/VimbaGigETL.
  • USB camera users: Go to [InstallDir]/Vimba_x_x/VimbaUSBTL.
  • CSI-2 camera users: Go to [InstallDir]/Vimba_x_x/VimbaCSITL.

Run the script for your camera.

cd Vimba_6_1/VimbaUSBTL
sudo ./Install.sh

The installation expected output is:

nvidia@nvidia-desktop:Vimba_6_1/VimbaUSBTL$ sudo ./Install.sh 
Registering GENICAM_GENTL64_PATH
Registering VimbaUSBTL device types
Done
Please reboot before using the USB transport layer

Gstreamer plugin - vimbasrc

Allied vision develop the vimbasrc plugin to capture from the cameras in a Gstreamer pipeline. Follow the below instructions to install the plugin.

Dependencies:

Steps to install vimbasrc

Clone the plugin sources from vimbasrc repository

cd
git clone https://github.com/alliedvision/gst-vimbasrc.git

Export the Vimba SDK code to a variable

export VIMBA_HOME=[InstallDir]/Vimba_6_1/

Go to the vimbasrc directory, make executable the build script and run the script to install the GStreamer plugin

cd gst-vimbasrc
chmod +x build.sh
./build.sh

Expected output:

nvidia@nvidia-desktop:~/gst-vimbasrc$ ./build.sh 
# ============================================================================
cmake -S . -B build -DVIMBA_HOME=$VIMBA_HOME
-- The C compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1") 
-- Checking for module 'gstreamer-1.0'
--   Found gstreamer-1.0, version 1.14.5
-- Checking for module 'gstreamer-base-1.0'
--   Found gstreamer-base-1.0, version 1.14.5
-- Found GSTREAMER_BASE_LIBRARY: /usr/lib/aarch64-linux-gnu/libgstbase-1.0.so
-- Found GSTREAMER_BASE_INCLUDE_DIR: /usr/include/gstreamer-1.0
-- Found GStreamer: /usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so  
-- Checking for module 'glib-2.0'
--   Found glib-2.0, version 2.56.4
-- Found GLIB2: /usr/lib/aarch64-linux-gnu/libglib-2.0.so  
-- Checking for module 'gobject-2.0'
--   Found gobject-2.0, version 2.56.4
-- Found GObject: /usr/include/glib-2.0  
-- Configuring done
-- Generating done
-- Build files have been written to: /home/nvidia/gst-vimbasrc/build
# ============================================================================
cmake --build build
Scanning dependencies of target gstvimbasrc
[ 25%] Building C object CMakeFiles/gstvimbasrc.dir/src/gstvimbasrc.c.o
[ 50%] Building C object CMakeFiles/gstvimbasrc.dir/src/vimba_helpers.c.o
[ 75%] Building C object CMakeFiles/gstvimbasrc.dir/src/pixelformats.c.o
[100%] Linking C shared library libgstvimbasrc.so
[100%] Built target gstvimbasrc
# ============================================================================

To use the plugin export the build directory to the GStreamer plugin path

export GST_PLUGIN_PATH=~/gst-vimbasrc/build/:$GST_PLUGIN_PATH

Also you can copy the vimbasrc binary to the gstreamer plugins directory

sudo cp libgstvimbasrc.so /usr/lib/aarch64-linux-gnu/gstreamer-1.0/

Check plugin is installed:

nvidia@nvidia-desktop:~$ gst-inspect-1.0 | grep vimba
vimbasrc:  vimbasrc: Vimba GStreamer source

Cmake Installation

To build the GStreamer plugin you need to build the Cmake package.

If the installed version in your system is a lower than 3.13 uninstall and install the require version.

sudo apt purge cmake

Download cmake sources in https://cmake.org/download/.

wget https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4.tar.gz

Decompress tarball with cmake sources

tar -zxvf cmake-3.13.4.tar.gz

Build and install. This build can take several minutes.

sudo ./bootstrap
sudo make
sudo make install

Check the installation and the package version

cmake --version

GStreamer pipelines

The GStreamer plugins allows allied vision cameras to be available as GStreamer sources. Using the plugin enables to record images, use specify color formats and handle properties as exposure time and gain.

Camera ID

To use the plugins with a respective camera is important to know the cameras ID, use the list_cameras.py script from the Python APIs which list the information of available cameras.

  • For VimbaX the Python package is install in the SDK installation.
cd VimbaX_2023-4/api/examples/VmbPy
python3 ./list_cameras.py
  • For Vimba install the Python package and run the script.
cd Vimba_6_1VimbaPython/Source
python3 -m pip install .
cd Vimba_6_1VimbaPython/Examples
python3 ./list_cameras.py

vmbsrc pipelines examples

Display image:

gst-launch-1.0 vmbsrc camera=DEV_00012C03ADA4 exposuretime=30000 !  queue ! videoconvert ! xvimagesink

The default format is grayscale, in order to have a color image use:

gst-launch-1.0 vmbsrc camera=DEV_00012C03ADA4 exposuretime=30000 ! video/x-raw,format=UYVY ! queue ! videoconvert ! xvimagesink

Stream via RTSP:

gst-launch-1.0 vmbsrc camera=DEV_0gst-launch-1.0 vmbsrc camera=DEV_00012C03ADA4 exposuretime=30000 ! video/x-raw,format=UYVY ! queue ! nvvidconv ! queue ! nvv4l2h264enc insert-sps-pps=true bitrate=7000000 ! video/x-h264, mapping=/stream1 ! queue  ! rtspsink service=500000
Example video from MIPI CSI-2 Allied Vision camera

vimbasrc pipelines examples

Display image:

gst-launch-1.0 vmbsrc camera=DEV_1AB22C023E6B exposuretime=30000 !  queue ! videoconvert ! xvimagesink

The default format is grayscale, in order to have a color image use:

gst-launch-1.0 vmbsrc camera=DEV_1AB22C023E6B exposuretime=30000 ! video/x-raw,format=UYVY ! queue ! videoconvert ! xvimagesink

Save a video file:

gst-launch-1.0 vimbasrc camera=DEV_1AB22C023E6B exposuretime=30000 gain=1000000 ! video/x-raw,format=UYVY ! queue ! nvvidconv ! queue ! nvv4l2h264enc insert-sps-pps=true bitrate=8000000 idrinterval=10 ! mpegtsmux ! filesink location=test.mp4

Save an image file:

gst-launch-1.0 vimbasrc camera=DEV_1AB22C023E6B exposuretime=30000 gain=1000000 num-buffers=1 ! video/x-raw,format=UYVY ! videoconvert ! pngenc ! filesink location=out.png

Stream via RTSP:

gst-launch-1.0 vimbasrc camera=DEV_1AB22C023E6B exposuretime=30000 ! video/x-raw,format=UYVY ! queue ! nvvidconv ! queue ! nvv4l2h264enc insert-sps-pps=true bitrate=8000000 idrinterval=10 ! perf ! video/x-h264, mapping=/stream1  ! rtspsink service=5000
Example video from USB Allied Vision camera

Troubleshooting

IF the GStreamer source is copy into /opt do not run the build script, it will fail with permission errors.

Instead of using the build script, run the following commands:

sudo cmake --build build -DVIMBA_HOME=$VIMBA_HOME
sudo cmake --build build


For direct inquiries, please refer to the contact information available on our Contact page. Alternatively, you may complete and submit the form provided at the same link. We will respond to your request at our earliest opportunity.


Links to RidgeRun Resources and RidgeRun Artificial Intelligence Solutions can be found in the footer below.