Image Component Library (ICL)
Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
icl::io::pylon::PylonGrabber Class Reference

Grabber implementation for a Basler Pylon-based GIG-E Grabber. More...

#include <PylonGrabber.h>

Inheritance diagram for icl::io::pylon::PylonGrabber:
icl::io::Grabber icl::io::pylon::Interruptable icl::utils::Uncopyable icl::utils::Configurable

Public Member Functions

ICLIO_API PylonGrabber (const Pylon::CDeviceInfo &dev, const std::string args)
 The constructor. More...
 
ICLIO_API ~PylonGrabber ()
 Destructor. More...
 
virtual ICLIO_API const core::ImgBaseacquireImage ()
 grab function grabs an image (destination image is adapted on demand) More...
 
- Public Member Functions inherited from icl::io::Grabber
 Grabber ()
 
virtual ~Grabber ()
 Destructor. More...
 
const core::ImgBasegrab (core::ImgBase **dst=0)
 grab function calls the Grabber-specific acquireImage-method and applies distortion if necessary More...
 
template<class T >
bool desiredUsed () const
 returns whether the desired parameter for the given type is used More...
 
template<class T >
void useDesired (const T &t)
 sets desired parameters (only available for core::depth,utils::Size and core::format) More...
 
void useDesired (core::depth d, const utils::Size &size, core::format fmt)
 sets up the grabber to use all given desired parameters More...
 
template<class T >
void ignoreDesired ()
 set the grabber to ignore the desired param of type T More...
 
void ignoreDesired ()
 sets up the grabber to ignore all desired parameters More...
 
template<class T >
getDesired () const
 returns the desired value for the given type T More...
 
virtual void registerCallback (callback cb)
 registers a callback that is called each time, a new image is available More...
 
virtual void removeAllCallbacks ()
 removes all registered image callbacks More...
 
virtual void notifyNewImageAvailable (const core::ImgBase *image)
 this function can be implemented by subclasses in order to notify, that a new image is available More...
 
void enableUndistortion (const std::string &filename)
 enables the undistorion More...
 
void enableUndistortion (const ImageUndistortion &udist)
 enables the undistortion plugin for the grabber using radial and tangential distortion parameters More...
 
void enableUndistortion (const utils::ProgArg &pa)
 enables undistortion from given programm argument. More...
 
void enableUndistortion (const core::Img32f &warpMap)
 enables undistortion for given warp map More...
 
void setUndistortionInterpolationMode (core::scalemode mode)
 sets how undistortion is interpolated (supported modes are interpolateNN and interpolateLIN) More...
 
void disableUndistortion ()
 disables distortion More...
 
bool isUndistortionEnabled () const
 returns whether distortion is currently enabled More...
 
const core::Img32fgetUndistortionWarpMap () const
 returns the internal warp map or NULL if undistortion is not enabled More...
 
- Public Member Functions inherited from icl::utils::Configurable
virtual ~Configurable ()
 virtual destructor More...
 
 Configurable (const Configurable &other)
 Copy constructor. More...
 
Configurableoperator= (const Configurable &other)
 Assignment operator. More...
 
void setConfigurableID (const std::string &ID)
 sets the ID of this configurable More...
 
const std::string & getConfigurableID () const
 returns the configurables static ID More...
 
bool isOrderedFlagSet () const
 returns whether the ordered flag is set More...
 
void deactivateProperty (const std::string &pattern)
 adds an additional deativation pattern More...
 
void deleteDeactivationPattern (const std::string &pattern)
 removed a formerly added deactivation pattern More...
 
std::vector< std::string > getPropertyListWithoutDeactivated () const
 this returns a filtered list of properties (using all filters added by deactivateProperty) More...
 
virtual void adaptProperty (const std::string &name, const std::string &newType, const std::string &newInfo, const std::string &newToolTip)
 this function can be used to adapt a specific property afterwards More...
 
void registerCallback (const Callback &cb)
 add a callback for changed properties More...
 
void removedCallback (const Callback &cb)
 removes a callback that was registered before More...
 
void syncChangesTo (Configurable *others, int num=1)
 this can be used to let this instance also apply property changes to others More...
 
virtual void setPropertyValue (const std::string &propertyName, const Any &value)
 sets a property value More...
 
virtual std::vector< std::string > getPropertyList () const
 returns a list of All properties, that can be set using setProperty More...
 
virtual bool supportsProperty (const std::string &propertyName) const
 base implementation for property check (seaches in the property list) More...
 
virtual void saveProperties (const std::string &filename, const std::vector< std::string > &propertiesToSkip=EMPTY_VEC) const
 writes all available properties into a file More...
 
virtual void loadProperties (const std::string &filename, const std::vector< std::string > &propertiesToSkip=EMPTY_VEC)
 reads a camera config file from disc More...
 
virtual std::string getPropertyType (const std::string &propertyName) const
 get type of property More...
 
virtual std::string getPropertyInfo (const std::string &propertyName) const
 get information of a properties valid values More...
 
virtual Any getPropertyValue (const std::string &propertyName) const
 returns the current value of a property or a parameter More...
 
virtual std::string getPropertyToolTip (const std::string &propertyName) const
 returns the tooltip description for a given property More...
 
virtual int getPropertyVolatileness (const std::string &propertyName) const
 Returns whether this property may be changed internally. More...
 
- Public Member Functions inherited from icl::io::pylon::Interruptable
virtual ~Interruptable ()
 Virtual destructor. More...
 

Static Public Member Functions

static ICLIO_API Pylon::CDeviceInfo getDeviceFromArgs (std::string args)
 Uses args to choose a pylon device. More...
 
- Static Public Member Functions inherited from icl::io::Grabber
static std::string translateSteppingRange (const utils::SteppingRange< double > &range)
 translates a SteppingRange into a string representation More...
 
static utils::SteppingRange< double > translateSteppingRange (const std::string &rangeStr)
 creates a SteppingRange out of a string representation More...
 
static std::string translateDoubleVec (const std::vector< double > &doubleVec)
 translates a vector of doubles into a string representation More...
 
static std::vector< double > translateDoubleVec (const std::string &doubleVecStr)
 creates a vector of doubles out of a string representation More...
 
static std::string translateStringVec (const std::vector< std::string > &stringVec)
 translates a vector of strings into a single string representation More...
 
static std::vector< std::string > translateStringVec (const std::string &stringVecStr)
 creates a vector of strins out of a single string representation More...
 
- Static Public Member Functions inherited from icl::utils::Configurable
static std::string create_default_ID (const std::string &prefix)
 this function can be used in subclasses to create a default ID More...
 
static Configurableget (const std::string &id)
 returns configurable by given ID More...
 
static void register_configurable_type (const std::string &classname, Function< Configurable * > creator)
 registers a configurable type More...
 
static std::vector< std::string > get_registered_configurables ()
 returns a list of all registered configurable classnames More...
 
static Configurablecreate_configurable (const std::string &classname)
 creates a configurable by given name More...
 

Private Member Functions

void acquisitionStart ()
 starts the acquisition of pictures by the camera More...
 
void acquisitionStop ()
 stops the acquisition of pictures by the camera More...
 
void grabbingStart ()
 creates buffers and registers them at the grabber More...
 
void grabbingStop ()
 deregisters buffers from grabber and deletes them More...
 
void cameraDefaultSettings ()
 helper function that makes default settings for the camera. More...
 
void convert (const void *pImageBuffer)
 Converts pImageBuffer to correct type and writes it into m_Image. More...
 

Static Private Member Functions

static void printHelp ()
 Prints information about the startup argument options. More...
 

Private Attributes

utils::Mutex m_ImgMutex
 A mutex lock to synchronize buffer and color converter access. More...
 
PylonAutoEnv m_PylonEnv
 The PylonEnvironment automation. More...
 
Pylon::IPylonDevice * m_Camera
 The camera interface. More...
 
Pylon::IStreamGrabber * m_Grabber
 The streamGrabber of the camera. More...
 
PylonCameraOptionsm_CameraOptions
 PylonCameraOptions used to get and set camera settings. More...
 
PylonColorConverterm_ColorConverter
 PylonColorConverter used for color conversion. More...
 
PylonGrabberThreadm_GrabberThread
 PylonGrabberThread used for continous image acquisition. More...
 
std::vector< PylonGrabberBuffer< uint16_t > * > m_BufferList
 A list of used buffers. More...
 
core::ImgBasem_LastBuffer
 A pointer to the last used buffer. More...
 

Static Private Attributes

static const int m_NumBuffers = 3
 Count of buffers for grabbing. More...
 

Additional Inherited Members

- Public Types inherited from icl::io::Grabber
typedef utils::Function< void, const core::ImgBase * > callback
 new image callback type More...
 
- Public Types inherited from icl::utils::Configurable
typedef Function< void, const Property & > Callback
 Function type for changed properties. More...
 
- Static Public Attributes inherited from icl::utils::Configurable
static const std::vector< std::string > EMPTY_VEC
 used as shortcut – just an empty vector of std::strings More...
 
- Protected Member Functions inherited from icl::io::Grabber
virtual void setDesiredFormatInternal (core::format fmt)
 internally set a desired format More...
 
virtual void setDesiredSizeInternal (const utils::Size &size)
 internally set a desired format More...
 
virtual void setDesiredDepthInternal (core::depth d)
 internally set a desired format More...
 
virtual core::format getDesiredFormatInternal () const
 returns the desired format More...
 
virtual core::depth getDesiredDepthInternal () const
 returns the desired format More...
 
virtual utils::Size getDesiredSizeInternal () const
 returns the desired format More...
 
const core::ImgBaseadaptGrabResult (const core::ImgBase *src, core::ImgBase **dst)
 Utility function that allows for much easier implementation of grabUD. More...
 
- Protected Member Functions inherited from icl::utils::Uncopyable
 Uncopyable ()
 Empty base constructor. More...
 
- Protected Member Functions inherited from icl::utils::Configurable
void addProperty (const std::string &name, const std::string &type, const std::string &info, const Any &value=Any(), const int volatileness=0, const std::string &tooltip=std::string())
 This can be used by derived classes to store supported properties in the internal list. More...
 
void addChildConfigurable (Configurable *configurable, const std::string &childPrefix="")
 This adds another configurable as child. More...
 
void removeChildConfigurable (Configurable *configurable)
 removes the given child configurable More...
 
Propertyprop (const std::string &propertyName)
 this CAN be used e.g. to store a property value in internal property-list More...
 
const Propertyprop (const std::string &propertyName) const
 this CAN be used e.g. to store a property value in internal property-list More...
 
 Configurable (const std::string &ID="", bool ordered=true)
 create this configurable with given ID More...
 
void call_callbacks (const std::string &propertyName, const Configurable *caller) const
 calls all registered callbacks More...
 
- Protected Attributes inherited from icl::utils::Configurable
std::vector< Callbackcallbacks
 internally managed list of callbacks More...
 

Detailed Description

Grabber implementation for a Basler Pylon-based GIG-E Grabber.

This is just a wrapper class of the underlying PylonGrabberImpl class

Some useful hints to increase GigE camera output:

  1. Jumbo Frames: If your Network Adapter supports Jumbo Frames they should be enabled by setting the Maximum Transfer Unit (MTU) size to 8192. Accordingly the cameras property "GevSCPSPacketSize" is set to 8192 per default. Setting this property to a value higher then the Network Adapters MTU may create transfer errors.
  2. Real-time thread priorities: To minimize network packet losses it helps to grant pylon the permission to change a threads priority to real time. This can be achieved by adding the line:
    - rtprio 99
    to
    /etc/security/limits.conf
    This can make the difference between a network throughput of 32 and 100Mb/s.
  3. Transmission errors: If you often get the error code 'GX status 0xe1000014' and already followed the previous hints increasing the 'GevSCPD' (Inter packet delay) parameter can help to minimize these transmission errors.
  4. Camera IP Configuration: can be made with the IpConfigurator which is included in the Pylon driver package. When the tool does not find the camera, ICL will neither. This most commonly means that the camera is in an other ip-address block then the computer. Because a connection to the camera is needed in order to change the cameras ip settings, it is possible to either chnage the ip address of the computer to the same ip-address block or to use the Windows version of the IpConfigurator - which does not seem to have souch problems - to change the cameras ip settings once.
  5. Network Adapter: Basler is recommending Network Adapters of the Intel PRO 1000 series. They observed a significantly higher CPU load when working with other.

Constructor & Destructor Documentation

◆ PylonGrabber()

ICLIO_API icl::io::pylon::PylonGrabber::PylonGrabber ( const Pylon::CDeviceInfo &  dev,
const std::string  args 
)

The constructor.

Parameters
devThe PylonDevice that should be used for image acquisition.
argsThe arguments provided to this grabber.

◆ ~PylonGrabber()

ICLIO_API icl::io::pylon::PylonGrabber::~PylonGrabber ( )

Destructor.

Member Function Documentation

◆ acquireImage()

virtual ICLIO_API const core::ImgBase* icl::io::pylon::PylonGrabber::acquireImage ( )
virtual

grab function grabs an image (destination image is adapted on demand)

grab function calls the Grabber-specific acquireImage-method and applies distortion if necessary If dst is not NULL, it is exploited and filled with image data

Reimplemented from icl::io::Grabber.

◆ acquisitionStart()

void icl::io::pylon::PylonGrabber::acquisitionStart ( )
privatevirtual

starts the acquisition of pictures by the camera

Implements icl::io::pylon::Interruptable.

◆ acquisitionStop()

void icl::io::pylon::PylonGrabber::acquisitionStop ( )
privatevirtual

stops the acquisition of pictures by the camera

Implements icl::io::pylon::Interruptable.

◆ cameraDefaultSettings()

void icl::io::pylon::PylonGrabber::cameraDefaultSettings ( )
private

helper function that makes default settings for the camera.

◆ convert()

void icl::io::pylon::PylonGrabber::convert ( const void *  pImageBuffer)
private

Converts pImageBuffer to correct type and writes it into m_Image.

◆ getDeviceFromArgs()

static ICLIO_API Pylon::CDeviceInfo icl::io::pylon::PylonGrabber::getDeviceFromArgs ( std::string  args)
static

Uses args to choose a pylon device.

Parameters
argsThe arguments provided to this grabber.
Exceptions
ICLExceptionwhen no suitable device exists.

◆ grabbingStart()

void icl::io::pylon::PylonGrabber::grabbingStart ( )
privatevirtual

creates buffers and registers them at the grabber

Implements icl::io::pylon::Interruptable.

◆ grabbingStop()

void icl::io::pylon::PylonGrabber::grabbingStop ( )
privatevirtual

deregisters buffers from grabber and deletes them

Implements icl::io::pylon::Interruptable.

◆ printHelp()

static void icl::io::pylon::PylonGrabber::printHelp ( )
staticprivate

Prints information about the startup argument options.

Member Data Documentation

◆ m_BufferList

std::vector<PylonGrabberBuffer<uint16_t>*> icl::io::pylon::PylonGrabber::m_BufferList
private

A list of used buffers.

◆ m_Camera

Pylon::IPylonDevice* icl::io::pylon::PylonGrabber::m_Camera
private

The camera interface.

◆ m_CameraOptions

PylonCameraOptions* icl::io::pylon::PylonGrabber::m_CameraOptions
private

PylonCameraOptions used to get and set camera settings.

◆ m_ColorConverter

PylonColorConverter* icl::io::pylon::PylonGrabber::m_ColorConverter
private

PylonColorConverter used for color conversion.

◆ m_Grabber

Pylon::IStreamGrabber* icl::io::pylon::PylonGrabber::m_Grabber
private

The streamGrabber of the camera.

◆ m_GrabberThread

PylonGrabberThread* icl::io::pylon::PylonGrabber::m_GrabberThread
private

PylonGrabberThread used for continous image acquisition.

◆ m_ImgMutex

utils::Mutex icl::io::pylon::PylonGrabber::m_ImgMutex
private

A mutex lock to synchronize buffer and color converter access.

◆ m_LastBuffer

core::ImgBase* icl::io::pylon::PylonGrabber::m_LastBuffer
private

A pointer to the last used buffer.

◆ m_NumBuffers

const int icl::io::pylon::PylonGrabber::m_NumBuffers = 3
staticprivate

Count of buffers for grabbing.

◆ m_PylonEnv

PylonAutoEnv icl::io::pylon::PylonGrabber::m_PylonEnv
private

The PylonEnvironment automation.


The documentation for this class was generated from the following file: