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, bumblebee,...)
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:
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. See setPathForExternalImages and setExternalImageFormat. These methods are called automatically from rawlog-grabber.
These is the list of all accepted parameters:
Definition at line 178 of file CCameraSensor.h.
#include <mrpt/hwdrivers/CCameraSensor.h>

Public Types | |
| 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 The camera is not open until "initialize" is called. | |||
| virtual | ~CCameraSensor () | ||
| Destructor. | |||
| void | doProcess () | ||
| This method should be called periodically (at least at 1Hz to capture ALL the real-time data) It is thread safe, i.e. | |||
| mrpt::slam::CObservationPtr | getNextFrame () | ||
| Retrieves the next frame from the video source, raising an exception on any error. | |||
| virtual void | initialize () | ||
| Tries to open the camera, after setting all the parameters with a call to loadConfig. | |||
| void | close () | ||
| Close the camera (if open). | |||
| 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). | |||
| void | enableLaunchOwnThreadForSavingImages (bool enable=true) | ||
| This must be called before initialize() | |||
| virtual const mrpt::hwdrivers::TSensorClassId * | GetRuntimeClass () const =0 | ||
| TSensorState | getState () const | ||
| The current state of the sensor. | |||
| double | getProcessRate () const | ||
| std::string | getSensorLabel () const | ||
| void | setSensorLabel (const std::string &sensorLabel) | ||
| void | loadConfig (const mrpt::utils::CConfigFileBase &configSource, const std::string §ion) | ||
Loads the generic settings common to any sensor (See CGenericSensor), then call to "loadConfig_sensorSpecific"
| |||
| void | getObservations (TListObservations &lstObjects) | ||
| Returns a list of enqueued objects, emptying it (thread-safe). | |||
| void | setExternalImageFormat (const std::string &ext) | ||
| Set the extension ("jpg","gif","png",...) that determines the format of images saved externally The default is "jpg". | |||
| void | setExternalImageJPEGQuality (const unsigned int quality) | ||
| The quality of JPEG compression, when external images is enabled and the format is "jpg". | |||
| 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. | |
| static void | registerClass (const TSensorClassId *pNewClass) |
| Register a class into the internal list of "CGenericSensor" descendents. | |
| static CGenericSensor * | createSensor (const std::string &className) |
| Creates a sensor by a name of the class. | |
| static CGenericSensorPtr | createSensorPtr (const std::string &className) |
| Just like createSensor, but returning a smart pointer to the newly created sensor object. | |
Protected Member Functions | |
| void | loadConfig_sensorSpecific (const mrpt::utils::CConfigFileBase &configSource, const std::string &iniSection) |
| Loads specific configuration for the device from a given source of configuration parameters, for example, an ".ini" file, loading from the section "[iniSection]" (see utils::CConfigFileBase and derived classes) See hwdrivers::CCameraSensor for the possible parameters. | |
| 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. | |
| void | appendObservation (const mrpt::utils::CSerializablePtr &obj) |
| Like appendObservations() but for just one observation. | |
Protected Attributes | |
| poses::CPose3D | m_sensorPose |
| std::string | m_grabber_type |
| Can be "opencv",... | |
| bool | m_capture_grayscale |
| int | m_cv_camera_index |
| std::string | m_cv_camera_type |
| mrpt::hwdrivers::TCaptureCVOptions | m_cv_options |
| uint64_t | m_dc1394_camera_guid |
| int | m_dc1394_camera_unit |
| mrpt::hwdrivers::TCaptureOptions_dc1394 | m_dc1394_options |
| int | m_preview_decimation |
| int | m_preview_reduction |
| int | m_bumblebee_camera_index |
| mrpt::hwdrivers::TCaptureOptions_bumblebee | m_bumblebee_options |
| int | m_bumblebee_monocam |
| int | m_svs_camera_index |
| mrpt::hwdrivers::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 | |
| std::string | m_sr_ip_address |
| bool | m_sr_save_3d |
| Save the 3D point cloud (default: true) | |
| bool | m_sr_save_range_img |
| Save the 2D range image (default: true) | |
| bool | m_sr_save_intensity_img |
| Save the 2D intensity image (default: true) | |
| bool | m_sr_save_confidence |
| Save the estimated confidence 2D image (default: false) | |
| bool | m_kinect_save_3d |
| Save the 3D point cloud (default: true) | |
| bool | m_kinect_save_range_img |
| Save the 2D range image (default: true) | |
| bool | m_kinect_save_intensity_img |
| Save the 2D intensity image (default: true) | |
| bool | m_kinect_video_rgb |
| Save RGB or IR channels (default:true) | |
| bool | m_external_images_own_thread |
| Whether to launch independent thread. | |
| size_t | m_grab_decimation_counter |
| Used when "m_grab_decimation" is enabled. | |
| TSensorState | m_state |
| std::string | m_path_for_external_images |
| The path where to save off-rawlog images: empty means save images embedded in the rawlog. | |
| std::string | m_external_images_format |
| The extension ("jpg","gif","png",...) that determines the format of images saved externally. | |
| unsigned int | m_external_images_jpeg_quality |
| For JPEG images, the quality (default=95%). | |
Common settings to any sensor, loaded in "loadConfig" | |
| double | m_process_rate |
| See CGenericSensor. | |
| size_t | m_max_queue_len |
| See CGenericSensor. | |
| size_t | m_grab_decimation |
| If set to N>=2, only 1 out of N observations will be saved to m_objList. | |
| std::string | m_sensorLabel |
| See CGenericSensor. | |
Private Attributes | |
| CImageGrabber_OpenCV * | m_cap_cv |
| The OpenCV capture object. | |
| CImageGrabber_dc1394 * | m_cap_dc1394 |
| The dc1394 capture object. | |
| CStereoGrabber_Bumblebee * | m_cap_bumblebee |
| The bumblebee capture object. | |
| mrpt::hwdrivers::CStereoGrabber_SVS * | m_cap_svs |
| The svs capture object. | |
| CFFMPEG_InputStream * | m_cap_ffmpeg |
| The FFMPEG capture object. | |
| mrpt::utils::CFileGZInputStream * | m_cap_rawlog |
| The input file for rawlogs. | |
| CSwissRanger3DCamera * | m_cap_swissranger |
| SR 3D camera object. | |
| CKinect * | m_cap_kinect |
| Kinect camera object. | |
| 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. | |
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. | |
| std::vector < mrpt::system::TThreadHandle > | m_threadImagesSaver |
| bool | m_threadImagesSaverShouldEnd |
| mrpt::synch::CCriticalSection | m_csToSaveList |
| The critical section for m_toSaveList. | |
| std::vector< TListObservations > | m_toSaveList |
| The queues of objects to be returned by getObservations, one for each working thread. | |
| void | thread_save_images (unsigned int my_working_thread_index) |
| Thread to save images to files. | |
|
inherited |
Definition at line 84 of file CGenericSensor.h.
|
inherited |
Definition at line 85 of file CGenericSensor.h.
|
inherited |
The current state of the sensor.
| Enumerator | |
|---|---|
| ssInitializing | |
| ssWorking | |
| ssError | |
Definition at line 90 of file CGenericSensor.h.
| mrpt::hwdrivers::CCameraSensor::CCameraSensor | ( | ) |
Constructor The camera is not open until "initialize" is called.
|
virtual |
Destructor.
|
inlineprotectedinherited |
Like appendObservations() but for just one observation.
Definition at line 155 of file CGenericSensor.h.
|
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:
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.
|
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:
|
inlinestaticinherited |
Just like createSensor, but returning a smart pointer to the newly created sensor object.
Definition at line 188 of file CGenericSensor.h.
|
virtual |
This method should be called periodically (at least at 1Hz to capture ALL the real-time data) It is thread safe, i.e.
you can call this from one thread, then to other methods from other threads.
Implements mrpt::hwdrivers::CGenericSensor.
|
inline |
This must be called before initialize()
Definition at line 222 of file CCameraSensor.h.
|
inlineinherited |
Definition at line 241 of file CGenericSensor.h.
| mrpt::slam::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):
|
inherited |
Returns a list of enqueued objects, emptying it (thread-safe).
The objects must be freed by the invoker.
|
inlineinherited |
Definition at line 100 of file CGenericSensor.h.
|
pure virtualinherited |
|
inlineinherited |
Definition at line 102 of file CGenericSensor.h.
|
inlineinherited |
The current state of the sensor.
Definition at line 98 of file CGenericSensor.h.
|
virtual |
Tries to open the camera, after setting all the parameters with a call to loadConfig.
| This | method must throw an exception with a descriptive message if some critical error is found. |
Reimplemented from mrpt::hwdrivers::CGenericSensor.
|
inherited |
Loads the generic settings common to any sensor (See CGenericSensor), then call to "loadConfig_sensorSpecific"
| This | method throws an exception with a descriptive message if some critical parameter is missing or has an invalid value. |
|
protectedvirtual |
Loads specific configuration for the device from a given source of configuration parameters, for example, an ".ini" file, loading from the section "[iniSection]" (see utils::CConfigFileBase and derived classes) See hwdrivers::CCameraSensor for the possible parameters.
Implements mrpt::hwdrivers::CGenericSensor.
|
staticinherited |
Sends a formated text to "debugOut" if not NULL, or to cout otherwise.
Referenced by mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >::execute().
|
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().
|
inlineinherited |
Set the extension ("jpg","gif","png",...) that determines the format of images saved externally The default is "jpg".
Definition at line 233 of file CGenericSensor.h.
|
inlineinherited |
The quality of JPEG compression, when external images is enabled and the format is "jpg".
Definition at line 238 of file CGenericSensor.h.
|
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.
| std::exception | If the directory doesn't exists and cannot be created. |
Reimplemented from mrpt::hwdrivers::CGenericSensor.
|
inlineinherited |
Definition at line 103 of file CGenericSensor.h.
|
private |
Thread to save images to files.
|
protected |
Definition at line 239 of file CCameraSensor.h.
|
protected |
Definition at line 241 of file CCameraSensor.h.
|
protected |
Definition at line 240 of file CCameraSensor.h.
|
private |
Definition at line 285 of file CCameraSensor.h.
|
private |
Definition at line 286 of file CCameraSensor.h.
|
private |
The bumblebee capture object.
Definition at line 277 of file CCameraSensor.h.
|
private |
The OpenCV capture object.
Definition at line 275 of file CCameraSensor.h.
|
private |
The dc1394 capture object.
Definition at line 276 of file CCameraSensor.h.
|
private |
The FFMPEG capture object.
Definition at line 279 of file CCameraSensor.h.
|
private |
Kinect camera object.
Definition at line 282 of file CCameraSensor.h.
|
private |
The input file for rawlogs.
Definition at line 280 of file CCameraSensor.h.
|
private |
The svs capture object.
Definition at line 278 of file CCameraSensor.h.
|
private |
SR 3D camera object.
Definition at line 281 of file CCameraSensor.h.
|
protected |
Definition at line 228 of file CCameraSensor.h.
|
private |
The critical section for m_toSaveList.
Definition at line 297 of file CCameraSensor.h.
|
protected |
Definition at line 229 of file CCameraSensor.h.
|
protected |
Definition at line 230 of file CCameraSensor.h.
|
protected |
Definition at line 231 of file CCameraSensor.h.
|
protected |
Definition at line 233 of file CCameraSensor.h.
|
protected |
Definition at line 234 of file CCameraSensor.h.
|
protected |
Definition at line 235 of file CCameraSensor.h.
|
private |
Number of working threads. Default:1, set to 2 in quad cores.
Definition at line 293 of file CCameraSensor.h.
|
protectedinherited |
The extension ("jpg","gif","png",...) that determines the format of images saved externally.
Definition at line 139 of file CGenericSensor.h.
|
protectedinherited |
For JPEG images, the quality (default=95%).
Definition at line 140 of file CGenericSensor.h.
|
protected |
Whether to launch independent thread.
Definition at line 264 of file CCameraSensor.h.
|
protected |
Definition at line 246 of file CCameraSensor.h.
|
protectedinherited |
If set to N>=2, only 1 out of N observations will be saved to m_objList.
Definition at line 127 of file CGenericSensor.h.
|
protectedinherited |
Used when "m_grab_decimation" is enabled.
Definition at line 132 of file CGenericSensor.h.
|
protected |
Can be "opencv",...
Definition at line 227 of file CCameraSensor.h.
|
protected |
Save the 3D point cloud (default: true)
Definition at line 259 of file CCameraSensor.h.
|
protected |
Save the 2D intensity image (default: true)
Definition at line 261 of file CCameraSensor.h.
|
protected |
Save the 2D range image (default: true)
Definition at line 260 of file CCameraSensor.h.
|
protected |
Save RGB or IR channels (default:true)
Definition at line 262 of file CCameraSensor.h.
|
protectedinherited |
See CGenericSensor.
Definition at line 126 of file CGenericSensor.h.
|
protectedinherited |
The path where to save off-rawlog images: empty means save images embedded in the rawlog.
Definition at line 138 of file CGenericSensor.h.
|
private |
Definition at line 288 of file CCameraSensor.h.
|
protected |
Definition at line 236 of file CCameraSensor.h.
|
protected |
Definition at line 237 of file CCameraSensor.h.
|
private |
Definition at line 289 of file CCameraSensor.h.
|
private |
Normally we'll use only one window, but for stereo images we'll use two of them.
Definition at line 289 of file CCameraSensor.h.
|
protectedinherited |
See CGenericSensor.
Definition at line 125 of file CGenericSensor.h.
|
protected |
Definition at line 249 of file CCameraSensor.h.
|
protected |
Definition at line 250 of file CCameraSensor.h.
|
protected |
Definition at line 248 of file CCameraSensor.h.
|
protectedinherited |
See CGenericSensor.
Definition at line 128 of file CGenericSensor.h.
|
protected |
Definition at line 222 of file CCameraSensor.h.
|
protected |
Definition at line 253 of file CCameraSensor.h.
|
protected |
true: USB, false: ETH
Definition at line 252 of file CCameraSensor.h.
|
protected |
Save the 3D point cloud (default: true)
Definition at line 254 of file CCameraSensor.h.
|
protected |
Save the estimated confidence 2D image (default: false)
Definition at line 257 of file CCameraSensor.h.
|
protected |
Save the 2D intensity image (default: true)
Definition at line 256 of file CCameraSensor.h.
|
protected |
Save the 2D range image (default: true)
Definition at line 255 of file CCameraSensor.h.
|
protectedinherited |
Definition at line 134 of file CGenericSensor.h.
|
protected |
Definition at line 243 of file CCameraSensor.h.
|
protected |
Definition at line 244 of file CCameraSensor.h.
|
private |
Definition at line 294 of file CCameraSensor.h.
|
private |
Definition at line 296 of file CCameraSensor.h.
|
private |
The queues of objects to be returned by getObservations, one for each working thread.
Definition at line 298 of file CCameraSensor.h.
| Page generated by Doxygen 1.8.3 for MRPT 0.9.6 SVN: at Fri Feb 15 22:05:02 EST 2013 |