Main MRPT website > C++ reference for MRPT 1.4.0
List of all members | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes
mrpt::hwdrivers::CCameraSensor Class Referenceabstract

Detailed Description

The central class for camera grabbers in MRPT, implementing the "generic sensor" interface.

This class provides the user with a uniform interface to a variety of other classes which manage only one specific camera "driver" (opencv, ffmpeg, PGR FlyCapture,...)

Following the "generic sensor" interface, all the parameters must be passed int the form of a configuration file, which may be also formed on the fly (without being a real config file) as in this example:

const string str =
"[CONFIG]\n"
"grabber_type=opencv\n";
CConfigFileMemory cfg(str);
myCam.loadConfig(cfg,"CONFIG");
myCam.initialize();
CObservationPtr obs = myCam.getNextFrame();

Images can be retrieved through the normal "doProcess()" interface, or the specific method "getNextFrame()".

Some notes:

Images can be saved in the "external storage" mode. Detached threads are created for this task. See setPathForExternalImages() and setExternalImageFormat(). These methods are called automatically from the app rawlog-grabber.

These is the list of all accepted parameters:

PARAMETERS IN THE ".INI"-LIKE CONFIGURATION STRINGS:
-------------------------------------------------------
[supplied_section_name]
# Select one of the grabber implementations -----------------------
grabber_type = opencv | dc1394 | bumblebee_dc1394 | ffmpeg | rawlog | swissranger | svs | kinect | flycap | flycap_stereo | image_dir | duo3d
# Options for any grabber_type ------------------------------------
preview_decimation = 0 // N<=0 (or not present): No preview; N>0, display 1 out of N captured frames.
preview_reduction = 0 // 0 or 1 (or not present): The preview shows the actual image. For 2,3,..., reduces the size of the image by that factor, only for the preview window.
capture_grayscale = 0 // 1:capture in grayscale, whenever the driver allows it. Default=0
# For externaly stored images, the format of image files (default=jpg)
#external_images_format = jpg
# For externaly stored images: whether to spawn independent threads to save the image files.
#external_images_own_thread = 1 // 0 or 1
# If external_images_own_thread=1, this changes the number of threads to launch
# to save image files. The default is determined from mrpt::system::getNumberOfProcessors()
# and should be OK unless you want to save processor time for other things.
#external_images_own_thread_count = 2 // >=1
# (Only when external_images_format=jpg): Optional parameter to set the JPEG compression quality:
#external_images_jpeg_quality = 95 // [1-100]. Default: 95
# Pose of the sensor on the robot:
pose_x=0 ; (meters)
pose_y=0
pose_z=0
pose_yaw=0 ; (Angles in degrees)
pose_pitch=0
pose_roll=0
# Options for grabber_type= opencv ------------------------------------
cv_camera_index = 0 // [opencv] Number of camera to open
cv_camera_type = CAMERA_CV_AUTODETECT
cv_frame_width = 640 // [opencv] Capture width (not present or set to 0 for default)
cv_frame_height = 480 // [opencv] Capture height (not present or set to 0 for default)
cv_fps = 15 // [opencv] IEEE1394 cams only: Capture FPS (not present or 0 for default)
cv_gain = 0 // [opencv] Camera gain, if available (nor present or set to 0 for default).
# Options for grabber_type= dc1394 -------------------------------------
dc1394_camera_guid = 0 | 0x11223344 // 0 (or not present): the first camera; A hexadecimal number: The GUID of the camera to open
dc1394_camera_unit = 0 // 0 (or not present): the first camera; 0,1,2,...: The unit number (within the given GUID) of the camera to open (Stereo cameras: 0 or 1)
dc1394_frame_width = 640
dc1394_frame_height = 480
dc1394_framerate = 15 // eg: 7.5, 15, 30, 60, etc... For posibilities see mrpt::hwdrivers::TCaptureOptions_dc1394
dc1394_mode7 = -1 // -1: Ignore, i>=0, set to MODE7_i
dc1394_color_coding = COLOR_CODING_YUV422 // For posibilities see mrpt::hwdrivers::TCaptureOptions_dc1394
# Options for setting feature values: dc1394_<feature> = <n>
# with <feature> = brightness | exposure | sharpness | white_balance | gamma | shutter | gain
# <n> a value, or -1 (or not present) for not to change this feature value in the camera, possible values are shown in execution
dc1394_shutter = -1
# Options for setting feature modes: dc1394_<feature>_mode = <n>
# with <feature> = brightness | exposure | sharpness | white_balance | gamma | shutter | gain
# <n> = -1 (or not present) [not to change] | 0 [manual] | 1 [auto] | 2 [one_push_auto]
dc1394_shutter_mode = -1
# Options for setting trigger options:
dc1394_trigger_power = -1 // -1 (or not present) for not to change | 0 [OFF] | 1 [ON]
dc1394_trigger_mode = -1 // -1 (or not present) for not to change | 0..7 corresponding to possible modes 0,1,2,3,4,5,14,15
dc1394_trigger_source= -1 // -1 (or not present) for not to change | 0..4 corresponding to possible sources 0,1,2,3,SOFTWARE
dc1394_trigger_polarity = -1 // -1 (or not present) for not to change | 0 [ACTIVE_LOW] | 1 [ACTIVE_HIGH]
dc1394_ring_buffer_size = 15 // Length of frames ring buffer (internal to libdc1394)
# Options for grabber_type= bumblebee_dc1394 ----------------------------------
bumblebee_dc1394_camera_guid = 0 | 0x11223344 // 0 (or not present): the first camera; A hexadecimal number: The GUID of the camera to open
bumblebee_dc1394_camera_unit = 0 // 0 (or not present): the first camera; 0,1,2,...: The unit number (within the given GUID) of the camera to open (Stereo cameras: 0 or 1)
bumblebee_dc1394_framerate = 15 // eg: 7.5, 15, 30, 60, etc... For posibilities see mrpt::hwdrivers::TCaptureOptions_dc1394
# Options for grabber_type= ffmpeg -------------------------------------
ffmpeg_url = rtsp://127.0.0.1 // [ffmpeg] The video file or IP camera to open
# Options for grabber_type= rawlog -------------------------------------
rawlog_file = mylog.rawlog // [rawlog] This can be used to simulate the capture of images already grabbed in the past in the form of a MRPT rawlog.
rawlog_camera_sensor_label = CAMERA1 // [rawlog] If this field is not present, all images found in the rawlog will be retrieved. Otherwise, only those observations with a matching sensor label.
# Options for grabber_type= svs -------------------------------------
svs_camera_index = 0
svs_frame_width = 800
svs_frame_height = 600
svs_framerate = 25.0
svs_NDisp = ...
svs_Corrsize = ...
svs_LR = ...
svs_Thresh = ...
svs_Unique = ...
svs_Horopter = ...
svs_SpeckleSize = ...
svs_procesOnChip = false
svs_calDisparity = true
# Options for grabber_type= swissranger -------------------------------------
sr_use_usb = true // True: use USB, false: use ethernet
sr_IP = 192.168.2.14 // If sr_use_usb=false, the camera IP
sr_grab_grayscale = true // whether to save the intensity channel
sr_grab_3d = true // whether to save the 3D points
sr_grab_range = true // whether to save the range image
sr_grab_confidence = true // whether to save the confidence image
# Options for grabber_type= XBox kinect -------------------------------------
kinect_grab_intensity = true // whether to save the intensity (RGB) channel
kinect_grab_3d = true // whether to save the 3D points
kinect_grab_range = true // whether to save the depth image
#kinect_video_rgb = true // Optional. If set to "false", the IR intensity channel will be grabbed instead of the color RGB channel.
# Options for grabber_type= flycap (Point Grey Research's FlyCapture 2 for Monocular and Stereo cameras, e.g. Bumblebee2) --------
flycap_camera_index = 0
#... (all the parameters enumerated in mrpt::hwdrivers::TCaptureOptions_FlyCapture2 with the prefix "flycap_")
# Options for grabber_type= flycap_stereo (Point Grey Research's FlyCapture 2, two cameras setup as a stereo pair) ------
# fcs_start_synch_capture = false // *Important*: Only set to true if using Firewire cameras: the "startSyncCapture()" command is unsupported in USB3 and GigaE cameras.
fcs_LEFT_camera_index = 0
#... (all the parameters enumerated in mrpt::hwdrivers::TCaptureOptions_FlyCapture2 with the prefix "fcs_LEFT_")
fcs_RIGHT_camera_index = 0
#... (all the parameters enumerated in mrpt::hwdrivers::TCaptureOptions_FlyCapture2 with the prefix "fcs_RIGHT_")
# Options for grabber_type= image_dir
image_dir_url = // [string] URL of the directory
left_filename_format = imL_%05d.jpg // [string] Format including prefix, number of trailing zeros, digits and image format (extension)
right_filename_format = imR_%05d.jpg // [string] Format including prefix, number of trailing zeros, digits and image format (extension). Leave blank if only images from one camera will be used.
start_index = 0 // [int] Starting index for images
end_index = 100 // [int] End index for the images
# Options for grabber_type= duo3d
Create a section like this:
[DUO3DOptions]
rawlog-grabber-ignore = true // Instructs rawlog-grabber to ignore this section (it is not a separate device!)
image_width = 640 // [int] x Resolution
image_height = 480 // [int] y Resolution
fps = 30 // [int] Frames per second (<= 30)
exposure = 50 // [int] Exposure value (1..100)
led = 0 // [int] Led intensity (only for some device models) (1..100).
gain = 50 // [int] Camera gain (1..100)
capture_rectified = false // [bool] Rectify captured images
capture_imu = true // [bool] Capture IMU data from DUO3D device (if available)
calibration_from_file = true // [bool] Use YML calibration files provided by calibration application supplied with DUO3D device
intrinsic_filename = "" // [string] Intrinsic parameters file. This filename should contain a substring _RWWWxHHH_ with WWW being the image width and HHH the image height, as provided by the calibration application.
extrinsic_filename = "" // [string] Extrinsic parameters file. This filename should contain a substring _RWWWxHHH_ with WWW being the image width and HHH the image height, as provided by the calibration application.
rectify_map_filename = "" // [string] Rectification map file. This filename should contain a substring _RWWWxHHH_ with WWW being the image width and HHH the image height, as provided by the calibration application.
// if 'calibration_from_file' = false, three more sections containing the calibration must be provided:
[DUO3D_LEFT]
rawlog-grabber-ignore = true // Instructs rawlog-grabber to ignore this section (it is not a separate device!)
resolution = [640 480]
cx = 320
cy = 240
fx = 700
fy = 700
dist = [0 0 0 0 0]
[DUO3D_RIGHT]
rawlog-grabber-ignore = true // Instructs rawlog-grabber to ignore this section (it is not a separate device!)
resolution = [640 480]
cx = 320
cy = 240
fx = 700
fy = 700
dist = [0 0 0 0 0]
[DUO3D_LEFT2RIGHT_POSE]
rawlog-grabber-ignore = true // Instructs rawlog-grabber to ignore this section (it is not a separate device!)
pose_quaternion = [0.12 0 0 1 0 0 0]
Note
The execution rate, in rawlog-grabber or the user code calling doProcess(), should be greater than the required capture FPS.
In Linux you may need to execute "chmod 666 /dev/video1394/ * " and "chmod 666 /dev/raw1394" for allowing any user R/W access to firewire cameras.
[New in MRPT 1.4.0] The bumblebee driver has been deleted, use the flycap driver in stereo mode.
See Also
mrpt::hwdrivers::CImageGrabber_OpenCV, mrpt::hwdrivers::CImageGrabber_dc1394, CGenericSensor, prepareVideoSourceFromUserSelection()

Definition at line 243 of file CCameraSensor.h.

#include <mrpt/hwdrivers/CCameraSensor.h>

Inheritance diagram for mrpt::hwdrivers::CCameraSensor:
Inheritance graph

Public Types

typedef void(* TPreSaveUserHook )(const mrpt::obs::CObservationPtr &obs, void *user_ptr)
 Functor type. More...
 
enum  TSensorState { ssInitializing = 0, ssWorking, ssError }
 The current state of the sensor. More...
 
typedef std::multimap
< mrpt::system::TTimeStamp,
mrpt::utils::CSerializablePtr > 
TListObservations
 
typedef std::pair
< mrpt::system::TTimeStamp,
mrpt::utils::CSerializablePtr > 
TListObsPair
 

Public Member Functions

 CCameraSensor ()
 Constructor. More...
 
virtual ~CCameraSensor ()
 Destructor. More...
 
void doProcess ()
 This method will be invoked at a minimum rate of "process_rate" (Hz)

Exceptions
Thismethod must throw an exception with a descriptive message if some critical error is found.
More...
 
mrpt::obs::CObservationPtr getNextFrame ()
 Retrieves the next frame from the video source, raising an exception on any error. More...
 
void getNextFrame (std::vector< mrpt::utils::CSerializablePtr > &out_obs)
 
virtual void initialize ()
 Tries to open the camera, after setting all the parameters with a call to loadConfig. More...
 
void close ()
 Close the camera (if open). More...
 
void setSoftwareTriggerLevel (bool level)
 Set Software trigger level value (ON or OFF) for cameras with this function available. More...
 
virtual void setPathForExternalImages (const std::string &directory)
 Set the path where to save off-rawlog image files (this class DOES take into account this path). More...
 
void enableLaunchOwnThreadForSavingImages (bool enable=true)
 This must be called before initialize() More...
 
void addPreSaveHook (TPreSaveUserHook user_function, void *user_ptr)
 Provides a "hook" for user-code to be run BEFORE an image is going to be saved to disk if external storage is enabled (e.g. More...
 
virtual const
mrpt::hwdrivers::TSensorClassId
GetRuntimeClass () const =0
 
TSensorState getState () const
 The current state of the sensor. More...
 
double getProcessRate () const
 
std::string getSensorLabel () const
 
void setSensorLabel (const std::string &sensorLabel)
 
void enableVerbose (bool enabled=true)
 Enable or disable extra debug info dumped to std::cout during sensor operation. More...
 
bool isVerboseEnabled () const
 
void loadConfig (const mrpt::utils::CConfigFileBase &configSource, const std::string &section)
 Loads the generic settings common to any sensor (See CGenericSensor), then call to "loadConfig_sensorSpecific"

Exceptions
Thismethod throws an exception with a descriptive message if some critical parameter is missing or has an invalid value.
More...
 
void getObservations (TListObservations &lstObjects)
 Returns a list of enqueued objects, emptying it (thread-safe). More...
 
void setExternalImageFormat (const std::string &ext)
 Set the extension ("jpg","gif","png",...) that determines the format of images saved externally The default is "jpg". More...
 
void setExternalImageJPEGQuality (const unsigned int quality)
 The quality of JPEG compression, when external images is enabled and the format is "jpg". More...
 
unsigned int getExternalImageJPEGQuality () const
 

Static Public Member Functions

static void printf_debug (const char *frmt,...)
 Sends a formated text to "debugOut" if not NULL, or to cout otherwise. More...
 
static void registerClass (const TSensorClassId *pNewClass)
 Register a class into the internal list of "CGenericSensor" descendents. More...
 
static CGenericSensorcreateSensor (const std::string &className)
 Creates a sensor by a name of the class. More...
 
static CGenericSensorPtr createSensorPtr (const std::string &className)
 Just like createSensor, but returning a smart pointer to the newly created sensor object. More...
 

Protected Member Functions

void loadConfig_sensorSpecific (const mrpt::utils::CConfigFileBase &configSource, const std::string &iniSection)
 See the class documentation at the top for expected parameters. More...
 
void appendObservations (const std::vector< mrpt::utils::CSerializablePtr > &obj)
 This method must be called by derived classes to enqueue a new observation in the list to be returned by getObservations. More...
 
void appendObservation (const mrpt::utils::CSerializablePtr &obj)
 Like appendObservations() but for just one observation. More...
 

Protected Attributes

poses::CPose3D m_sensorPose
 
std::string m_grabber_type
 Can be "opencv",... More...
 
bool m_capture_grayscale
 
int m_cv_camera_index
 
std::string m_cv_camera_type
 
TCaptureCVOptions m_cv_options
 
uint64_t m_dc1394_camera_guid
 
int m_dc1394_camera_unit
 
TCaptureOptions_dc1394 m_dc1394_options
 
int m_preview_decimation
 
int m_preview_reduction
 
uint64_t m_bumblebee_dc1394_camera_guid
 
int m_bumblebee_dc1394_camera_unit
 
double m_bumblebee_dc1394_framerate
 
int m_svs_camera_index
 
TCaptureOptions_SVS m_svs_options
 
std::string m_ffmpeg_url
 
std::string m_rawlog_file
 
std::string m_rawlog_camera_sensor_label
 
std::string m_rawlog_detected_images_dir
 
bool m_sr_open_from_usb
 true: USB, false: ETH More...
 
std::string m_sr_ip_address
 
bool m_sr_save_3d
 Save the 3D point cloud (default: true) More...
 
bool m_sr_save_range_img
 Save the 2D range image (default: true) More...
 
bool m_sr_save_intensity_img
 Save the 2D intensity image (default: true) More...
 
bool m_sr_save_confidence
 Save the estimated confidence 2D image (default: false) More...
 
bool m_kinect_save_3d
 Save the 3D point cloud (default: true) More...
 
bool m_kinect_save_range_img
 Save the 2D range image (default: true) More...
 
bool m_kinect_save_intensity_img
 Save the 2D intensity image (default: true) More...
 
bool m_kinect_video_rgb
 Save RGB or IR channels (default:true) More...
 
TCaptureOptions_FlyCapture2 m_flycap_options
 
bool m_fcs_start_synch_capture
 
TCaptureOptions_FlyCapture2 m_flycap_stereo_options [2]
 
std::string m_img_dir_url
 
std::string m_img_dir_left_format
 
std::string m_img_dir_right_format
 
int m_img_dir_start_index
 
int m_img_dir_end_index
 
bool m_img_dir_is_stereo
 
int m_img_dir_counter
 
TCaptureOptions_DUO3D m_duo3d_options
 
bool m_external_images_own_thread
 Whether to launch independent thread. More...
 
size_t m_grab_decimation_counter
 Used when "m_grab_decimation" is enabled. More...
 
TSensorState m_state
 
bool m_verbose
 
std::string m_path_for_external_images
 The path where to save off-rawlog images: empty means save images embedded in the rawlog. More...
 
std::string m_external_images_format
 The extension ("jpg","gif","png",...) that determines the format of images saved externally. More...
 
unsigned int m_external_images_jpeg_quality
 For JPEG images, the quality (default=95%). More...
 
Common settings to any sensor, loaded in "loadConfig"
double m_process_rate
 See CGenericSensor. More...
 
size_t m_max_queue_len
 See CGenericSensor. More...
 
size_t m_grab_decimation
 If set to N>=2, only 1 out of N observations will be saved to m_objList. More...
 
std::string m_sensorLabel
 See CGenericSensor. More...
 

Private Attributes

CImageGrabber_OpenCVm_cap_cv
 The OpenCV capture object. More...
 
CImageGrabber_dc1394m_cap_dc1394
 The dc1394 capture object. More...
 
CImageGrabber_FlyCapture2m_cap_flycap
 The FlyCapture2 object. More...
 
CImageGrabber_FlyCapture2m_cap_flycap_stereo_l
 
CImageGrabber_FlyCapture2m_cap_flycap_stereo_r
 The FlyCapture2 object for stereo pairs. More...
 
CStereoGrabber_Bumblebee_libdc1394m_cap_bumblebee_dc1394
 
CStereoGrabber_SVSm_cap_svs
 The svs capture object. More...
 
CFFMPEG_InputStreamm_cap_ffmpeg
 The FFMPEG capture object. More...
 
mrpt::utils::CFileGZInputStreamm_cap_rawlog
 The input file for rawlogs. More...
 
CSwissRanger3DCameram_cap_swissranger
 SR 3D camera object. More...
 
CKinectm_cap_kinect
 Kinect camera object. More...
 
COpenNI2Sensorm_cap_openni2
 OpenNI2 object. More...
 
std::string * m_cap_image_dir
 Read images from directory. More...
 
CDUO3DCameram_cap_duo3d
 The DUO3D capture object. More...
 
int m_camera_grab_decimator
 
int m_camera_grab_decimator_counter
 
int m_preview_counter
 
mrpt::gui::CDisplayWindowPtr m_preview_win1
 
mrpt::gui::CDisplayWindowPtr m_preview_win2
 Normally we'll use only one window, but for stereo images we'll use two of them. More...
 

Stuff related to working threads to save images to disk

unsigned int m_external_image_saver_count
 Number of working threads. Default:1, set to 2 in quad cores. More...
 
std::vector
< mrpt::system::TThreadHandle
m_threadImagesSaver
 
bool m_threadImagesSaverShouldEnd
 
mrpt::synch::CCriticalSection m_csToSaveList
 The critical section for m_toSaveList. More...
 
std::vector< TListObservationsm_toSaveList
 The queues of objects to be returned by getObservations, one for each working thread. More...
 
TPreSaveUserHook m_hook_pre_save
 
void * m_hook_pre_save_param
 
void thread_save_images (unsigned int my_working_thread_index)
 Thread to save images to files. More...
 

Member Typedef Documentation

typedef std::multimap< mrpt::system::TTimeStamp, mrpt::utils::CSerializablePtr > mrpt::hwdrivers::CGenericSensor::TListObservations
inherited

Definition at line 68 of file CGenericSensor.h.

typedef std::pair< mrpt::system::TTimeStamp, mrpt::utils::CSerializablePtr > mrpt::hwdrivers::CGenericSensor::TListObsPair
inherited

Definition at line 69 of file CGenericSensor.h.

typedef void(* mrpt::hwdrivers::CCameraSensor::TPreSaveUserHook)(const mrpt::obs::CObservationPtr &obs, void *user_ptr)

Functor type.

Definition at line 290 of file CCameraSensor.h.

Member Enumeration Documentation

The current state of the sensor.

See Also
CGenericSensor::getState
Enumerator
ssInitializing 
ssWorking 
ssError 

Definition at line 74 of file CGenericSensor.h.

Constructor & Destructor Documentation

mrpt::hwdrivers::CCameraSensor::CCameraSensor ( )

Constructor.

The camera is not open until "initialize" is called.

virtual mrpt::hwdrivers::CCameraSensor::~CCameraSensor ( )
virtual

Destructor.

Member Function Documentation

void mrpt::hwdrivers::CCameraSensor::addPreSaveHook ( TPreSaveUserHook  user_function,
void *  user_ptr 
)
inline

Provides a "hook" for user-code to be run BEFORE an image is going to be saved to disk if external storage is enabled (e.g.

to rectify images, preprocess them, etc.) Notice that this code may be called from detached threads, so it must be thread safe. If used, call this before initialize()

Definition at line 295 of file CCameraSensor.h.

void mrpt::hwdrivers::CGenericSensor::appendObservation ( const mrpt::utils::CSerializablePtr &  obj)
inlineprotectedinherited

Like appendObservations() but for just one observation.

Definition at line 146 of file CGenericSensor.h.

void mrpt::hwdrivers::CGenericSensor::appendObservations ( const std::vector< mrpt::utils::CSerializablePtr > &  obj)
protectedinherited

This method must be called by derived classes to enqueue a new observation in the list to be returned by getObservations.

Passed objects must be created in dynamic memory and a smart pointer passed. Example of creation:

mrpt::obs::CObservationGPSPtr o = CObservationGPSPtr( new CObservationGPS() );
o-> .... // Set data

If several observations are passed at once in the vector, they'll be considered as a block regarding the grabbing decimation factor.

void mrpt::hwdrivers::CCameraSensor::close ( )

Close the camera (if open).

This method is called automatically on destruction.

static CGenericSensor* mrpt::hwdrivers::CGenericSensor::createSensor ( const std::string &  className)
staticinherited

Creates a sensor by a name of the class.

Typically the user may want to create a smart pointer around the returned pointer, whis is made with:

Returns
A pointer to a new class, or NULL if class name is unknown.
static CGenericSensorPtr mrpt::hwdrivers::CGenericSensor::createSensorPtr ( const std::string &  className)
inlinestaticinherited

Just like createSensor, but returning a smart pointer to the newly created sensor object.

Definition at line 179 of file CGenericSensor.h.

void mrpt::hwdrivers::CCameraSensor::doProcess ( )
virtual

This method will be invoked at a minimum rate of "process_rate" (Hz)

Exceptions
Thismethod must throw an exception with a descriptive message if some critical error is found.

Implements mrpt::hwdrivers::CGenericSensor.

void mrpt::hwdrivers::CCameraSensor::enableLaunchOwnThreadForSavingImages ( bool  enable = true)
inline

This must be called before initialize()

Definition at line 287 of file CCameraSensor.h.

void mrpt::hwdrivers::CGenericSensor::enableVerbose ( bool  enabled = true)
inlineinherited

Enable or disable extra debug info dumped to std::cout during sensor operation.

Default: disabled unless the environment variable "MRPT_HWDRIVERS_VERBOSE" is set to "1" during object creation.

Definition at line 92 of file CGenericSensor.h.

unsigned int mrpt::hwdrivers::CGenericSensor::getExternalImageJPEGQuality ( ) const
inlineinherited

Definition at line 233 of file CGenericSensor.h.

mrpt::obs::CObservationPtr mrpt::hwdrivers::CCameraSensor::getNextFrame ( )

Retrieves the next frame from the video source, raising an exception on any error.

Note: The returned observations can be of one of these classes (you can use IS_CLASS(obs,CObservationXXX) to determine it):

void mrpt::hwdrivers::CCameraSensor::getNextFrame ( std::vector< mrpt::utils::CSerializablePtr > &  out_obs)
void mrpt::hwdrivers::CGenericSensor::getObservations ( TListObservations lstObjects)
inherited

Returns a list of enqueued objects, emptying it (thread-safe).

The objects must be freed by the invoker.

double mrpt::hwdrivers::CGenericSensor::getProcessRate ( ) const
inlineinherited

Definition at line 84 of file CGenericSensor.h.

virtual const mrpt::hwdrivers::TSensorClassId* mrpt::hwdrivers::CGenericSensor::GetRuntimeClass ( ) const
pure virtualinherited
std::string mrpt::hwdrivers::CGenericSensor::getSensorLabel ( ) const
inlineinherited

Definition at line 86 of file CGenericSensor.h.

TSensorState mrpt::hwdrivers::CGenericSensor::getState ( ) const
inlineinherited

The current state of the sensor.

Definition at line 82 of file CGenericSensor.h.

virtual void mrpt::hwdrivers::CCameraSensor::initialize ( )
virtual

Tries to open the camera, after setting all the parameters with a call to loadConfig.

Exceptions
Thismethod must throw an exception with a descriptive message if some critical error is found.

Reimplemented from mrpt::hwdrivers::CGenericSensor.

bool mrpt::hwdrivers::CGenericSensor::isVerboseEnabled ( ) const
inlineinherited

Definition at line 93 of file CGenericSensor.h.

void mrpt::hwdrivers::CGenericSensor::loadConfig ( const mrpt::utils::CConfigFileBase configSource,
const std::string &  section 
)
inherited

Loads the generic settings common to any sensor (See CGenericSensor), then call to "loadConfig_sensorSpecific"

Exceptions
Thismethod throws an exception with a descriptive message if some critical parameter is missing or has an invalid value.

void mrpt::hwdrivers::CCameraSensor::loadConfig_sensorSpecific ( const mrpt::utils::CConfigFileBase configSource,
const std::string &  iniSection 
)
protectedvirtual

See the class documentation at the top for expected parameters.

Implements mrpt::hwdrivers::CGenericSensor.

static void mrpt::utils::CDebugOutputCapable::printf_debug ( const char *  frmt,
  ... 
)
staticinherited

Sends a formated text to "debugOut" if not NULL, or to cout otherwise.

Referenced by mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >::execute().

static void mrpt::hwdrivers::CGenericSensor::registerClass ( const TSensorClassId pNewClass)
staticinherited

Register a class into the internal list of "CGenericSensor" descendents.

Used internally in the macros DEFINE_GENERIC_SENSOR, etc...

Can be used as "CGenericSensor::registerClass( SENSOR_CLASS_ID(CMySensor) );" if building custom sensors outside mrpt libraries in user code.

Referenced by mrpt::hwdrivers::CGenericSensor::CLASSINIT_GENERIC_SENSOR::CLASSINIT_GENERIC_SENSOR().

void mrpt::hwdrivers::CGenericSensor::setExternalImageFormat ( const std::string &  ext)
inlineinherited

Set the extension ("jpg","gif","png",...) that determines the format of images saved externally The default is "jpg".

See Also
setPathForExternalImages, setExternalImageJPEGQuality

Definition at line 225 of file CGenericSensor.h.

void mrpt::hwdrivers::CGenericSensor::setExternalImageJPEGQuality ( const unsigned int  quality)
inlineinherited

The quality of JPEG compression, when external images is enabled and the format is "jpg".

See Also
setExternalImageFormat

Definition at line 230 of file CGenericSensor.h.

virtual void mrpt::hwdrivers::CCameraSensor::setPathForExternalImages ( const std::string &  directory)
virtual

Set the path where to save off-rawlog image files (this class DOES take into account this path).

An empty string (the default value at construction) means to save images embedded in the rawlog, instead of on separate files.

Exceptions
std::exceptionIf the directory doesn't exists and cannot be created.

Reimplemented from mrpt::hwdrivers::CGenericSensor.

void mrpt::hwdrivers::CGenericSensor::setSensorLabel ( const std::string &  sensorLabel)
inlineinherited

Definition at line 87 of file CGenericSensor.h.

void mrpt::hwdrivers::CCameraSensor::setSoftwareTriggerLevel ( bool  level)

Set Software trigger level value (ON or OFF) for cameras with this function available.

void mrpt::hwdrivers::CCameraSensor::thread_save_images ( unsigned int  my_working_thread_index)
private

Thread to save images to files.

Member Data Documentation

uint64_t mrpt::hwdrivers::CCameraSensor::m_bumblebee_dc1394_camera_guid
protected

Definition at line 317 of file CCameraSensor.h.

int mrpt::hwdrivers::CCameraSensor::m_bumblebee_dc1394_camera_unit
protected

Definition at line 318 of file CCameraSensor.h.

double mrpt::hwdrivers::CCameraSensor::m_bumblebee_dc1394_framerate
protected

Definition at line 319 of file CCameraSensor.h.

int mrpt::hwdrivers::CCameraSensor::m_camera_grab_decimator
private

Definition at line 392 of file CCameraSensor.h.

int mrpt::hwdrivers::CCameraSensor::m_camera_grab_decimator_counter
private

Definition at line 393 of file CCameraSensor.h.

CStereoGrabber_Bumblebee_libdc1394* mrpt::hwdrivers::CCameraSensor::m_cap_bumblebee_dc1394
private

Definition at line 381 of file CCameraSensor.h.

CImageGrabber_OpenCV* mrpt::hwdrivers::CCameraSensor::m_cap_cv
private

The OpenCV capture object.

Definition at line 377 of file CCameraSensor.h.

CImageGrabber_dc1394* mrpt::hwdrivers::CCameraSensor::m_cap_dc1394
private

The dc1394 capture object.

Definition at line 378 of file CCameraSensor.h.

CDUO3DCamera* mrpt::hwdrivers::CCameraSensor::m_cap_duo3d
private

The DUO3D capture object.

Definition at line 389 of file CCameraSensor.h.

CFFMPEG_InputStream* mrpt::hwdrivers::CCameraSensor::m_cap_ffmpeg
private

The FFMPEG capture object.

Definition at line 383 of file CCameraSensor.h.

CImageGrabber_FlyCapture2* mrpt::hwdrivers::CCameraSensor::m_cap_flycap
private

The FlyCapture2 object.

Definition at line 379 of file CCameraSensor.h.

CImageGrabber_FlyCapture2* mrpt::hwdrivers::CCameraSensor::m_cap_flycap_stereo_l
private

Definition at line 380 of file CCameraSensor.h.

CImageGrabber_FlyCapture2 * mrpt::hwdrivers::CCameraSensor::m_cap_flycap_stereo_r
private

The FlyCapture2 object for stereo pairs.

Definition at line 380 of file CCameraSensor.h.

std::string* mrpt::hwdrivers::CCameraSensor::m_cap_image_dir
private

Read images from directory.

Definition at line 388 of file CCameraSensor.h.

CKinect* mrpt::hwdrivers::CCameraSensor::m_cap_kinect
private

Kinect camera object.

Definition at line 386 of file CCameraSensor.h.

COpenNI2Sensor* mrpt::hwdrivers::CCameraSensor::m_cap_openni2
private

OpenNI2 object.

Definition at line 387 of file CCameraSensor.h.

mrpt::utils::CFileGZInputStream* mrpt::hwdrivers::CCameraSensor::m_cap_rawlog
private

The input file for rawlogs.

Definition at line 384 of file CCameraSensor.h.

CStereoGrabber_SVS* mrpt::hwdrivers::CCameraSensor::m_cap_svs
private

The svs capture object.

Definition at line 382 of file CCameraSensor.h.

CSwissRanger3DCamera* mrpt::hwdrivers::CCameraSensor::m_cap_swissranger
private

SR 3D camera object.

Definition at line 385 of file CCameraSensor.h.

bool mrpt::hwdrivers::CCameraSensor::m_capture_grayscale
protected

Definition at line 302 of file CCameraSensor.h.

mrpt::synch::CCriticalSection mrpt::hwdrivers::CCameraSensor::m_csToSaveList
private

The critical section for m_toSaveList.

Definition at line 404 of file CCameraSensor.h.

int mrpt::hwdrivers::CCameraSensor::m_cv_camera_index
protected

Definition at line 305 of file CCameraSensor.h.

std::string mrpt::hwdrivers::CCameraSensor::m_cv_camera_type
protected

Definition at line 306 of file CCameraSensor.h.

TCaptureCVOptions mrpt::hwdrivers::CCameraSensor::m_cv_options
protected

Definition at line 307 of file CCameraSensor.h.

uint64_t mrpt::hwdrivers::CCameraSensor::m_dc1394_camera_guid
protected

Definition at line 310 of file CCameraSensor.h.

int mrpt::hwdrivers::CCameraSensor::m_dc1394_camera_unit
protected

Definition at line 311 of file CCameraSensor.h.

TCaptureOptions_dc1394 mrpt::hwdrivers::CCameraSensor::m_dc1394_options
protected

Definition at line 312 of file CCameraSensor.h.

TCaptureOptions_DUO3D mrpt::hwdrivers::CCameraSensor::m_duo3d_options
protected

Definition at line 365 of file CCameraSensor.h.

unsigned int mrpt::hwdrivers::CCameraSensor::m_external_image_saver_count
private

Number of working threads. Default:1, set to 2 in quad cores.

Definition at line 400 of file CCameraSensor.h.

std::string mrpt::hwdrivers::CGenericSensor::m_external_images_format
protectedinherited

The extension ("jpg","gif","png",...) that determines the format of images saved externally.

See Also
setPathForExternalImages

Definition at line 130 of file CGenericSensor.h.

unsigned int mrpt::hwdrivers::CGenericSensor::m_external_images_jpeg_quality
protectedinherited

For JPEG images, the quality (default=95%).

Definition at line 131 of file CGenericSensor.h.

bool mrpt::hwdrivers::CCameraSensor::m_external_images_own_thread
protected

Whether to launch independent thread.

Definition at line 368 of file CCameraSensor.h.

bool mrpt::hwdrivers::CCameraSensor::m_fcs_start_synch_capture
protected

Definition at line 351 of file CCameraSensor.h.

std::string mrpt::hwdrivers::CCameraSensor::m_ffmpeg_url
protected

Definition at line 326 of file CCameraSensor.h.

TCaptureOptions_FlyCapture2 mrpt::hwdrivers::CCameraSensor::m_flycap_options
protected

Definition at line 348 of file CCameraSensor.h.

TCaptureOptions_FlyCapture2 mrpt::hwdrivers::CCameraSensor::m_flycap_stereo_options[2]
protected

Definition at line 352 of file CCameraSensor.h.

size_t mrpt::hwdrivers::CGenericSensor::m_grab_decimation
protectedinherited

If set to N>=2, only 1 out of N observations will be saved to m_objList.

Definition at line 117 of file CGenericSensor.h.

size_t mrpt::hwdrivers::CGenericSensor::m_grab_decimation_counter
protectedinherited

Used when "m_grab_decimation" is enabled.

Definition at line 122 of file CGenericSensor.h.

std::string mrpt::hwdrivers::CCameraSensor::m_grabber_type
protected

Can be "opencv",...

Definition at line 301 of file CCameraSensor.h.

TPreSaveUserHook mrpt::hwdrivers::CCameraSensor::m_hook_pre_save
private

Definition at line 408 of file CCameraSensor.h.

void* mrpt::hwdrivers::CCameraSensor::m_hook_pre_save_param
private

Definition at line 409 of file CCameraSensor.h.

int mrpt::hwdrivers::CCameraSensor::m_img_dir_counter
protected

Definition at line 362 of file CCameraSensor.h.

int mrpt::hwdrivers::CCameraSensor::m_img_dir_end_index
protected

Definition at line 359 of file CCameraSensor.h.

bool mrpt::hwdrivers::CCameraSensor::m_img_dir_is_stereo
protected

Definition at line 361 of file CCameraSensor.h.

std::string mrpt::hwdrivers::CCameraSensor::m_img_dir_left_format
protected

Definition at line 356 of file CCameraSensor.h.

std::string mrpt::hwdrivers::CCameraSensor::m_img_dir_right_format
protected

Definition at line 357 of file CCameraSensor.h.

int mrpt::hwdrivers::CCameraSensor::m_img_dir_start_index
protected

Definition at line 358 of file CCameraSensor.h.

std::string mrpt::hwdrivers::CCameraSensor::m_img_dir_url
protected

Definition at line 355 of file CCameraSensor.h.

bool mrpt::hwdrivers::CCameraSensor::m_kinect_save_3d
protected

Save the 3D point cloud (default: true)

Definition at line 342 of file CCameraSensor.h.

bool mrpt::hwdrivers::CCameraSensor::m_kinect_save_intensity_img
protected

Save the 2D intensity image (default: true)

Definition at line 344 of file CCameraSensor.h.

bool mrpt::hwdrivers::CCameraSensor::m_kinect_save_range_img
protected

Save the 2D range image (default: true)

Definition at line 343 of file CCameraSensor.h.

bool mrpt::hwdrivers::CCameraSensor::m_kinect_video_rgb
protected

Save RGB or IR channels (default:true)

Definition at line 345 of file CCameraSensor.h.

size_t mrpt::hwdrivers::CGenericSensor::m_max_queue_len
protectedinherited

See CGenericSensor.

Definition at line 116 of file CGenericSensor.h.

std::string mrpt::hwdrivers::CGenericSensor::m_path_for_external_images
protectedinherited

The path where to save off-rawlog images: empty means save images embedded in the rawlog.

Definition at line 129 of file CGenericSensor.h.

int mrpt::hwdrivers::CCameraSensor::m_preview_counter
private

Definition at line 395 of file CCameraSensor.h.

int mrpt::hwdrivers::CCameraSensor::m_preview_decimation
protected

Definition at line 313 of file CCameraSensor.h.

int mrpt::hwdrivers::CCameraSensor::m_preview_reduction
protected

Definition at line 314 of file CCameraSensor.h.

mrpt::gui::CDisplayWindowPtr mrpt::hwdrivers::CCameraSensor::m_preview_win1
private

Definition at line 396 of file CCameraSensor.h.

mrpt::gui::CDisplayWindowPtr mrpt::hwdrivers::CCameraSensor::m_preview_win2
private

Normally we'll use only one window, but for stereo images we'll use two of them.

Definition at line 396 of file CCameraSensor.h.

double mrpt::hwdrivers::CGenericSensor::m_process_rate
protectedinherited

See CGenericSensor.

Definition at line 115 of file CGenericSensor.h.

std::string mrpt::hwdrivers::CCameraSensor::m_rawlog_camera_sensor_label
protected

Definition at line 330 of file CCameraSensor.h.

std::string mrpt::hwdrivers::CCameraSensor::m_rawlog_detected_images_dir
protected

Definition at line 331 of file CCameraSensor.h.

std::string mrpt::hwdrivers::CCameraSensor::m_rawlog_file
protected

Definition at line 329 of file CCameraSensor.h.

std::string mrpt::hwdrivers::CGenericSensor::m_sensorLabel
protectedinherited

See CGenericSensor.

Definition at line 118 of file CGenericSensor.h.

poses::CPose3D mrpt::hwdrivers::CCameraSensor::m_sensorPose
protected

Definition at line 295 of file CCameraSensor.h.

std::string mrpt::hwdrivers::CCameraSensor::m_sr_ip_address
protected

Definition at line 335 of file CCameraSensor.h.

bool mrpt::hwdrivers::CCameraSensor::m_sr_open_from_usb
protected

true: USB, false: ETH

Definition at line 334 of file CCameraSensor.h.

bool mrpt::hwdrivers::CCameraSensor::m_sr_save_3d
protected

Save the 3D point cloud (default: true)

Definition at line 336 of file CCameraSensor.h.

bool mrpt::hwdrivers::CCameraSensor::m_sr_save_confidence
protected

Save the estimated confidence 2D image (default: false)

Definition at line 339 of file CCameraSensor.h.

bool mrpt::hwdrivers::CCameraSensor::m_sr_save_intensity_img
protected

Save the 2D intensity image (default: true)

Definition at line 338 of file CCameraSensor.h.

bool mrpt::hwdrivers::CCameraSensor::m_sr_save_range_img
protected

Save the 2D range image (default: true)

Definition at line 337 of file CCameraSensor.h.

TSensorState mrpt::hwdrivers::CGenericSensor::m_state
protectedinherited

Definition at line 124 of file CGenericSensor.h.

int mrpt::hwdrivers::CCameraSensor::m_svs_camera_index
protected

Definition at line 322 of file CCameraSensor.h.

TCaptureOptions_SVS mrpt::hwdrivers::CCameraSensor::m_svs_options
protected

Definition at line 323 of file CCameraSensor.h.

std::vector<mrpt::system::TThreadHandle> mrpt::hwdrivers::CCameraSensor::m_threadImagesSaver
private

Definition at line 401 of file CCameraSensor.h.

bool mrpt::hwdrivers::CCameraSensor::m_threadImagesSaverShouldEnd
private

Definition at line 403 of file CCameraSensor.h.

std::vector<TListObservations> mrpt::hwdrivers::CCameraSensor::m_toSaveList
private

The queues of objects to be returned by getObservations, one for each working thread.

Definition at line 405 of file CCameraSensor.h.

bool mrpt::hwdrivers::CGenericSensor::m_verbose
protectedinherited

Definition at line 125 of file CGenericSensor.h.




Page generated by Doxygen 1.8.6 for MRPT 1.4.0 SVN: at dom ago 20 02:31:29 CEST 2017 Hosted on:
SourceForge.net Logo