Machine vision basics — EMVA, GenICam, SFNC, what?

Introduction

Compared to a typical USB video device (UVC) such as a standard webcam, modern machine vision cameras provide much more functionality and a lot more configuration. To enable interoperability between different camera devices and software applications the EMVA — the European Machine Vision Alliance is maintaining a set of standards. The big advantage for the customer is, that makes it trivial to switch from one camera to another model or even to another interface without changes to the software application controlling it.

GenTL — Generic Transportation Layer

Machine vision cameras connect via different interfaces to a host computer. Baumer provides cameras which connect via USB3 U3V — USB3 Vision and GigE — Gigabit Ethernet. The GenTL standard ensures that the software application can easily work with both interfaces.

GenICam — Generic Interface for Cameras

The GenICam standard (also called GenApi) defines the mechanism on how a camera announces its features and capabilities to the software controlling it. This is done via an XML-file which is downloaded from the camera while it is connected. It provides the software with all the information how features can be used and provided attributes for each feature.

The Baumer GAPI encapsulates the GenAPI and provided you with an easy way to access the features and it's attributes.

The Feature access mode helps you to understand what your camera can or can't do. They are defined in the following order:

  • Not implemented — the camera does not support the feature
  • Not available — the feature might be implemented but temporarily not available
  • Write only — the feature is only writable, but not readable
  • Read only — the feature is only readable, but not writable
  • Readable and writable — full read and write access to the feature

Attention

Please be aware, that the value and the access mode of a camera features can change at any point, for example switching on the AutoExposure will set the ExposureTime feature to read only and change its value as required.


SFNC — Standard Features Naming Convention

The last important standard to know is the SFNC. This standard ensures all manufacturers of camera devices adhere to a unified convention for the names of the features. So each manufacturer who implements for example an auto exposure will name the feature “ExposureAuto” and adhere to the standard values “Off”, “Once” and “Continuous”. Again, this is important because it ensures you don't have to change your software to work with different cameras.

As cameras and features are constantly evolving the SFNC is evolving as well. Each camera does therefore adhere to a specific version of the SFNC. This version can be requested from the camera to understand what you are dealing with.

Furthermore, manufacturers have the option to include non SFNC features. Those are typically features which will be standardised in future versions of the SFNC. These features are used in the same way as the SFNC features and each manufacturer will provide information about those features typically in the camera documentation.

The Baumer GAPI helps you with the SFNC features by providing a header with constants which help with auto-complete for the feature names in your IDE.

Further information