loading

GenICam

GenICam is a standard of the European Machine Vision Association (EMVA). The GenICam module provides access to GigE compliant cameras. The module will connect directly to the camera over an ethernet connection. The module assumes that the genicam.org (7 MB download) 32x runtime is installed which provides functionality to interpret the camera's configurations. The camera's native drivers need not be installed as communication functions over ethernet.

As this module communicates directly with the camera additional DirectShow drivers are not needed as with other cameras such as webcams. Using the RoboRealm Virtual Webcam driver you can expose a GigE camera as a webcamera by utilizing this module and then activating the virtual webcam functionality within RoboRealm.

The GenICam standard includes the communication structure to GigE cameras but it does NOT enforce naming of custom features (such as setting exposure levels) which can differ in each camera implementation. The module attempts to make some assumptions about how to set exposure, black levels and gain but this may not function for your specific camera. If this is the case, see the Advanced Tab which shows all the possible settings for your camera and look for exposure related features. Typically you need to enable the manual setting and then adjust a 'raw' value to accomplish the change.

The GenICam standard utilizes UDP packets as its ethernet communication mechanism. While this is more efficient than TCP/IP (more common protocol) some routers and switches may not relay those messages over a wider area network. If your camera is not discovered your network may not be relaying UDP packets. You should connect the camera directly to a machine to verify that the network is not an issue when attempting to connect.

Interface

Instructions

1. Camera - Press the circular yellow arrow button to send a discovery request to all cameras on your network. Any connected cameras will appear in the Camera dropdown list after a couple seconds. Selecting one of these cameras and pressing the Start button will initiate a connection to that camera and start capturing images. Please note that the module assumes an exclusive use of the camera such that if any other applications are connected to the camera this will cause an error.

2. Port - The standard GenICam port used to communicate to cameras. Unless your cameras have been configured to work on different ports this should remain the default 3956.

3. Pixel Format - Once connected, the current Pixel Format is displayed as part of a dropdown that lists all formats supported by your camera. You can change the format by selecting a different dropdown from this list. Note that RoboRealm works with 24 bit images, one byte for red, green and blue. Formats that are a higher bit resolution (10, 12, 16) will be downsampled to 8 bits. If possible, use a maximum of 8 bits per channel to avoid unecessary network overhead.

While the module supports many formats natively, there may be some that are unknown to the module. When this happens you will be presented with an interface to send us information about this format such that it can be incorporated into those supported formats.

4. Packet Size - The packet size option specifies how large each piece of information sent from the camera is. The larger the packet the less overhead is incurred but the more information might be lost at any given time (based on the UDP protocol). 1500 is the largest recommended packet size as anything larger will cause many routers and switches to ingore the packet.

5. Allow Jumbo Packets - Select Allow Jumbo Packets if you have allowed jumbo packets on your network. Note, this does NOT enable Jumbo packets but just allows you to specify packet sizes larger than the default 1500 which is not permitted unless Jumbo packets are enabled from the OS point of view.

6. Frame Rate - This specifies in micro seconds the time per image frame. This can be changed to decrease or increase the frames per second (fps) that the camera attempts to send images at. This can help to reduce the network consumption from cameras if only a few images per second are needed.

7. Image Faults - An indication of how many frames are being dropped by the module due to incomplete frame information. Because each frame is being sent using UDP packets are not guaranteed and can go missing. When this happens, a frame update may be missing part of the image information and thus not be a valid complete image frame. This causes the image to be skipped and not presented to the pipeline (unless Ignore Faults checkbox in the Image tab is selected). If you get many image faults your network might be overloaded since packets are going missing.

8. Pause Pipeline Till Connected - To ensure that on first run of the pipeline that the GenICam module is sending an image, you can select the "Pause Pipeline" checkbox. This will prevent the pipeline from continuining until an image has been received from the camera. Note, this will cause the program to appear frozen during this time period so it should only be used when your configuration requires that the first iteration of the pipeline has an image to work with. We instead, recommend that you configure your pipeline to allow for image capture failure by checking the GENICAM_IMAGE_COUNT for a non-zero value.

9. First Image Timeout - The first time the module attempts to connect to a GenICam module can cause signficant delays as the network connection is established and configuration information is downloaded and parsed. Because of this the first frame may take much longer than normal to acquire. This timeout ensures that the first frame is given more time to be returned than subsequant frames.

10. Image Timeout - The time between frame grabs. If an image takes too long to be sent to the module from the GenICam camera, it will be assumed an error has happeneded and will attempt to restart the connection. Normally, most cameras will send many images per second so this timeout can be made very small if you know your network connection to your camera is very stable. If you find that you are getting too many re-connections to the camera and small pauses in the image stream, you may want to increase the timeout.

11. Scan Area - You can use the Width, Height, Left, and Top parameters to change what portion of the sensor pixels you want to capture. This allows one to specify a global AOI (Area of Interest) which helps to reduce processing requirements and network consumption. Note that changing the Width and Height does NOT scale the image content accordingly as in many other consumer cameras.

12. Binning - Should you not need the maximum resolution that the camera can provide but still need the full field of view you can specify a binning amount. This will combine pixels in the appropriate direction (horizontal or vertical) in order to effectively reduce the image dimensions, i.e. scaling. Binning will reduce the image width and height by the binning factor. The default of 1 causes no change, the value 2 will effectively reduce the image width or height by a factor of 2, the value 3 by a factor of 4, etc.

13. Black Level, Exposure, Gain - To set specific camera settings, check the checkboxes to switch the camera into manual mode for those settings and change the values accordinly. It is not uncommon for the image to immediately become all black or white when these settings are activated. If this is the case, the manual settings may not be appropriate for the current lighting settings and can be changed to improve the image quality.

14. Advanced Tree - All camera settings are displayed in the Advanced tab. You can explore the tree by expanding the categories as appropriate to view the underlying features. When you click on one of the features you will see the description along with an interface that has the ability to change the value if allowed. In this way you can set camera features directly. Note that some features cannot be changed while the camera is operational. To change these features you will beed to stop streaming before they will be accepted.

15. Higher Bit Images - RoboRealm operates on 24 bits RGB per pixel for performance reasons. When loading in images with higher bit depths RoboRealm needs to know how to process the image into a 24 bit image. There are many ways this can be accomplished:

  • High - Uses the upper 8 bits of the image
  • Low - Uses the lower 8 bits of the image
  • Sqrt - Square root's the image pixel to the 8 bit range
  • Inv Sqrt - The Sqrt function will favor darker pixels, the Inv Sqrt favors lighter
  • Center Mean - Forces the high bit range to be centered at the image mean
  • Below Mean - Shows only pixel below the image mean compressed into 24 bits
  • Above Mean - Shows only pixel above the image mean compressed into 24 bits
  • Around Mean - Similar to Center Mean but thresholds values on either side to improve contrast
  • Normalize - Determines image low and high values and scales to 24 bit
  • Pseudo X - Translates image intensity into a higher color range for improved visibility
  • Reinhard/Drago - DISABLED - High Dynamic Range reduction techniques as specified in the FreeImage.dll but are too slow for live image processing.
  • Logarithm - Takes the logarithm of the image pixel and then stretches to 8 bit range
  • G->RGB - Spreads all bits of the single green channel into all RGB channels such that the true value of that single channel can be processed.
  • Range Min / Max - Scales the specified range into 0 to 255 with clamping below min and above max values.

16. Process Color Channels Together - Specifies that color channels will be considered a single channel such that the relative color amounts will not change. Unselected, each color channel will be processed independently which can improve or worsen an images overall appearance.

Variables


GENICAM_ALERT - a variable set with the current (seconds) timestamp when the
last communication failure was detected. This can be used to send alerts to
staff to investigate image acquisition failures.

GENICAM_IMAGE_COUNT - the number of images the module has presented to the
pipeline. This is reset to zero on connection failure.

Connection Checklist

  1. Genicam Download - The module implements a lot of the Genicam communiation protocol but does need additional packages as part of the Genicam download. You can get the 32bit version here and the 64 bit version here. A message will also alert you to these missing packages when attempting to add the module to the pipeline.
  2. 32 or 64 Bit - When using either the 32 bit or 64 bit version of RoboRealm, be SURE to download the right Genicam package that is of the same bit size. 32 bit programs CANNOT use 64 bit drivers, and vice versa. The additional DLLs need to match the same bit size otherwise it can appear that the module is NOT finding the appropriate DLLs.
  3. Jumbo Packets - Some cameras assume that the PC is configured to accept Jumbo Packets. Its likely your PC is not configured for this which is a reason the GenICam module will not be able to read any information form the camera as the packet is being ignored by the Windows OS and never passed to the module. You can see how to enable Jumbo packets on the PC by following How to enable jumbo frames
  4. Windows Firewall - To increase speed and reduce network traffic the Genicam protocol uses UDP packages that are sent from the camera to the PC. It is not uncommon that your Windows Firewall is preventing those UDP packets from reaching RoboRealm. If you are able to receive the XML configuration from your camera after pressing the Start button (you can verify that something is present in the XML tab) but receive no images, check that the default port (54321) has a rule in your Windows Firewall to allow UDP packets to be received on that port.
  5. DirectShow - When using the Genicam module do NOT use the Camera_Properties module nor have the Camera button pressed and assigned to the same camera as it appears in Windows. Doing so will conflict with using this module and cause very unexpected events. Both pressing the Camera button and the Camera_Properties module will enable the DirectInput system to also start communicating with the camera which can often lead to very unexpected results.

  6. All else - If the above checks do not solve the issues, copy the XML from the XML tab (if any), copy the Log tab (if any) and send us a message with the pasted contents of those two tabs that we can help review what the issue might be.

See Also


Firewire Camera

For more information


Wikipedia: GenICam

 New Post 

GenICam Related Forum PostsLast postPostsViews
Basler Camera Scan Area Setting
In GeniCam module, I can not set area scan larger than 500 x 500. I am using Basler ACA2440-20GC&n...
2 year 11 1884
Camera Bug
Hi, I am using a Basler GigE camera in RR. The software picks up the c...
5 year 2 2376
Reconnect to camera when lost connection?
Hello, Is there an option to periodically try to reconnect previously lost connection to camera?
6 year 9 2277
Rectangular DataMatrix barcode
Hi, I just purchase a commercial license of roborealm to test the possibility of using it in our pr...
7 year 2 2117
GigE Point Grey Blackfly in external trigger mode
Hi Steven, I'm having trouble with GigE  Ptgrey BFLY-PGE-50S5M camera. I w...
8 year 2 3644
GenICam XML Parse error
I'm using a 30 day trial of RR 2.76.3. I've installed the GenICam module but I'm having an error when it goes to grab frames fro...
8 year 5 4988
Can not connect to Basler acA640-120
Hi STeven. Can not connect to Basler acA640-120. Module is used GenlCam.
9 year 2 2736
Barcode decode anomaly
Hi STeven, I'm seeing something when using the barcode decode module.  What I have is an...
9 year 15 3457
Set variable
Hi STeven, Is there a way to set either gain or exposure on the camera when using the GenICam modul...
9 year 1 2320
Basler Camera II
Hi STeven, it has been awhile.  This is a continuation from a post from last year (see post Basler Camera).  ...
9 year 17 4902