Main MRPT website > C++ reference
MRPT logo
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes
mrpt::hwdrivers::CSwissRanger3DCamera Class Reference

Detailed Description

A class for grabing "range images" from a MESA imaging SwissRanger 3D cameras (SR-2, SR-3000, SR-4k).

NOTES:

As with any other CGenericSensor class, the normal sequence of methods to be called is:

This sensor can be also used from within rawlog-grabber.

  PARAMETERS IN THE ".INI"-LIKE CONFIGURATION STRINGS:
 -------------------------------------------------------
   [supplied_section_name]
    sensorLabel  = CAM3D         // A text description
    preview_window  = true       // Show a window with a preview of the grabbed data in real-time

    open_USB     = true          // false means ethernet (default: true)
    USB_serial   = 0x4000002f    // only for open_USB=true. If not set, the first camera will be open. Serial is the last part of S/N (e.g.  for the camera SN: 00-00-40-00-00-2F).
    IP_address   = 192.168.2.14  // only for open_USB=false. The IP of the camera.

    // Options for the data to save in each CObservation3DRangeScan
    save_3d            = true                   // Save the 3D point cloud (default: true)
    save_range_img     = true                   // Save the 2D range image (default: true)
    save_intensity_img = true                   // Save the 2D intensity image (default: true)
    save_confidence    = true                   // Save the estimated confidence 2D image (default: false)

    enable_img_hist_equal = false               // Enable intensity image histogram equalization (default: false)
    enable_median_filter  = true                        // Enable median filter in range data (default: true)
    enable_mediancross_filter = false   // Enable median cross-filter (default: false)
    enable_conv_gray      = false               // Enable intensity image scale with range (default: false)
    enable_denoise_anf    = true                        // Enable this noise filter (default: true)

    // Camera calibration parameters: See mrpt::utils::TCamera
    //  If not provided, a set of default parameters for a SR4000 camera will be loaded.
    resolution = [176 144]
    cx         = 87.99958
    cy         = 68.99957
    fx         = 262.9201
    fy         = 262.9218
    dist       = [-8.258543e-01 6.561022e-01 2.699818e-06 -3.263559e-05 0]

    // For externaly stored images, the format of image files (default=jpg)
    //external_images_format  = jpg
    // (Only when external_images_format=jpg): Optional parameter to set the JPEG compression quality:
    //external_images_jpeg_quality = 95    // [1-100]. Default: 95

    pose_x=0.21 // Camera position in the robot (meters)
    pose_y=0
    pose_z=0.34
    pose_yaw=0  // Angles in degrees
    pose_pitch=0
    pose_roll=0

#include <mrpt/hwdrivers/CSwissRanger3DCamera.h>

Inheritance diagram for mrpt::hwdrivers::CSwissRanger3DCamera:
Inheritance graph
[legend]

List of all members.

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

 CSwissRanger3DCamera ()
 Default ctor.
 ~CSwissRanger3DCamera ()
 Default ctor.
virtual void initialize ()
 Initializes the 3D camera - should be invoked after calling loadConfig()

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

virtual void doProcess ()
 To be called at a high rate (>XX Hz), this method populates the internal buffer of received observations.
void getNextObservation (mrpt::slam::CObservation3DRangeScan &out_obs, bool &there_is_obs, bool &hardware_error)
 The main data retrieving function, to be called after calling loadConfig() and initialize().
bool open ()
 return false on error - Called automatically from initialize(), no need normally for the user to call this.
void close ()
bool isOpen () const
 whether the camera is open and comms work ok. To be called after initialize()
size_t getRowCount () const
 Get the row count in the camera images, loaded automatically upon camera open().
size_t getColCount () const
 Get the col count in the camera images, loaded automatically upon camera open().
unsigned int getCameraSerialNumber () const
 Get the camera serial number, loaded automatically upon camera open().
double getMaxRange () const
 Returns the maximum camera range, as deduced from its operating frequency.
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).
bool getMesaLibVersion (std::string &out_version) const
 Get the version of the MESA library.
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 &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.

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
Capture configuration methods (apart from loadConfig)
void setOpenFromUSB (bool USB)
 true: open from USB, false: open from ethernet.
bool getOpenFromUSBMode () const
void setOpenIPAddress (const std::string &IP)
std::string getOpenIPAddress () const
void setSave3D (bool save)
void setSaveRangeImage (bool save)
void setSaveIntensityImage (bool save)
void setSaveConfidenceImage (bool save)
void enableImageHistEqualization (bool enable)
bool isEnabledImageHistEqualization () const
void enableMedianFilter (bool enable)
bool isEnabledMedianFilter () const
void enableMedianCrossFilter (bool enable)
bool isEnabledMedianCrossFilter () const
void enableConvGray (bool enable)
bool isEnabledConvGray () const
void enableDenoiseANF (bool enable)
bool isEnabledDenoiseANF () const
void enablePreviewWindow (bool enable=true)
bool isEnabledPreviewWindow () const

Static Public Member Functions

static void registerClass (const TSensorClassId *pNewClass)
 Register a class into the internal list of "CGenericSensor" descendents.
static CGenericSensorcreateSensor (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

virtual void loadConfig_sensorSpecific (const mrpt::utils::CConfigFileBase &configSource, const std::string &section)
 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)

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

void internal_resendParamsToCamera () const
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

mrpt::poses::CPose3D m_sensorPoseOnRobot
bool m_save_3d
 Save the 3D point cloud (default: true)
bool m_save_range_img
 Save the 2D range image (default: true)
bool m_save_intensity_img
 Save the 2D intensity image (default: true)
bool m_save_confidence
 Save the estimated confidence 2D image (default: false)
bool m_enable_img_hist_equal
bool m_enable_median_filter
bool m_enable_mediancross_filter
bool m_enable_conv_gray
bool m_enable_denoise_anf
bool m_open_from_usb
 true: USB, false: ETH
size_t m_usb_serial
std::string m_ip_address
size_t m_rows
size_t m_cols
 Size of camera images, set on open()
unsigned int m_cam_serial_num
 Serial number of the camera, set on open()
double m_maxRange
 Max range, as deducted from the camera frequency.
bool m_preview_window
 Show preview window while grabbing.
mrpt::gui::CDisplayWindowPtr m_win_range
mrpt::gui::CDisplayWindowPtr m_win_int
void * m_cam
 opaque handler to SRCAM. NULL means it's not open yet.
mrpt::utils::TCamera m_cameraParams
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.

Member Typedef Documentation

Definition at line 84 of file CGenericSensor.h.

Definition at line 85 of file CGenericSensor.h.


Member Enumeration Documentation

The current state of the sensor.

See also:
CGenericSensor::getState
Enumerator:
ssInitializing 
ssWorking 
ssError 

Definition at line 90 of file CGenericSensor.h.


Constructor & Destructor Documentation

mrpt::hwdrivers::CSwissRanger3DCamera::CSwissRanger3DCamera ( )

Default ctor.

mrpt::hwdrivers::CSwissRanger3DCamera::~CSwissRanger3DCamera ( )

Default ctor.


Member Function Documentation

void mrpt::hwdrivers::CGenericSensor::appendObservation ( const mrpt::utils::CSerializablePtr obj) [inline, protected, inherited]

Like appendObservations() but for just one observation.

Definition at line 155 of file CGenericSensor.h.

void mrpt::hwdrivers::CGenericSensor::appendObservations ( const std::vector< mrpt::utils::CSerializablePtr > &  obj) [protected, inherited]

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:

                                CObservationGPSPtr  o = CObservationGPSPtr( new CObservationGPS() );
                                o-> .... // Set data
                                appendObservation(o);

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::CSwissRanger3DCamera::close ( )
static CGenericSensor* mrpt::hwdrivers::CGenericSensor::createSensor ( const std::string className) [static, inherited]

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) [inline, static, inherited]

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

Definition at line 188 of file CGenericSensor.h.

virtual void mrpt::hwdrivers::CSwissRanger3DCamera::doProcess ( ) [virtual]

To be called at a high rate (>XX Hz), this method populates the internal buffer of received observations.

This method is mainly intended for usage within rawlog-grabber or similar programs. For an alternative, see getNextObservation()

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

Implements mrpt::hwdrivers::CGenericSensor.

void mrpt::hwdrivers::CSwissRanger3DCamera::enableConvGray ( bool  enable) [inline]

Definition at line 180 of file CSwissRanger3DCamera.h.

void mrpt::hwdrivers::CSwissRanger3DCamera::enableDenoiseANF ( bool  enable) [inline]

Definition at line 183 of file CSwissRanger3DCamera.h.

void mrpt::hwdrivers::CSwissRanger3DCamera::enableImageHistEqualization ( bool  enable) [inline]

Definition at line 171 of file CSwissRanger3DCamera.h.

void mrpt::hwdrivers::CSwissRanger3DCamera::enableMedianCrossFilter ( bool  enable) [inline]

Definition at line 177 of file CSwissRanger3DCamera.h.

void mrpt::hwdrivers::CSwissRanger3DCamera::enableMedianFilter ( bool  enable) [inline]

Definition at line 174 of file CSwissRanger3DCamera.h.

void mrpt::hwdrivers::CSwissRanger3DCamera::enablePreviewWindow ( bool  enable = true) [inline]

Definition at line 186 of file CSwissRanger3DCamera.h.

unsigned int mrpt::hwdrivers::CSwissRanger3DCamera::getCameraSerialNumber ( ) const [inline]

Get the camera serial number, loaded automatically upon camera open().

Definition at line 145 of file CSwissRanger3DCamera.h.

size_t mrpt::hwdrivers::CSwissRanger3DCamera::getColCount ( ) const [inline]

Get the col count in the camera images, loaded automatically upon camera open().

Definition at line 142 of file CSwissRanger3DCamera.h.

unsigned int mrpt::hwdrivers::CGenericSensor::getExternalImageJPEGQuality ( ) const [inline, inherited]

Definition at line 241 of file CGenericSensor.h.

double mrpt::hwdrivers::CSwissRanger3DCamera::getMaxRange ( ) const [inline]

Returns the maximum camera range, as deduced from its operating frequency.

Definition at line 148 of file CSwissRanger3DCamera.h.

bool mrpt::hwdrivers::CSwissRanger3DCamera::getMesaLibVersion ( std::string out_version) const

Get the version of the MESA library.

Returns:
false on error
void mrpt::hwdrivers::CSwissRanger3DCamera::getNextObservation ( mrpt::slam::CObservation3DRangeScan out_obs,
bool &  there_is_obs,
bool &  hardware_error 
)

The main data retrieving function, to be called after calling loadConfig() and initialize().

Parameters:
out_obsThe output retrieved observation (only if there_is_obs=true).
there_is_obsIf set to false, there was no new observation.
hardware_errorTrue on hardware/comms error.
See also:
doProcess
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.

bool mrpt::hwdrivers::CSwissRanger3DCamera::getOpenFromUSBMode ( ) const [inline]

Definition at line 161 of file CSwissRanger3DCamera.h.

std::string mrpt::hwdrivers::CSwissRanger3DCamera::getOpenIPAddress ( ) const [inline]

Definition at line 164 of file CSwissRanger3DCamera.h.

double mrpt::hwdrivers::CGenericSensor::getProcessRate ( ) const [inline, inherited]

Definition at line 100 of file CGenericSensor.h.

size_t mrpt::hwdrivers::CSwissRanger3DCamera::getRowCount ( ) const [inline]

Get the row count in the camera images, loaded automatically upon camera open().

Definition at line 140 of file CSwissRanger3DCamera.h.

virtual const mrpt::hwdrivers::TSensorClassId* mrpt::hwdrivers::CGenericSensor::GetRuntimeClass ( ) const [pure virtual, inherited]
std::string mrpt::hwdrivers::CGenericSensor::getSensorLabel ( ) const [inline, inherited]

Definition at line 102 of file CGenericSensor.h.

TSensorState mrpt::hwdrivers::CGenericSensor::getState ( ) const [inline, inherited]

The current state of the sensor.

Definition at line 98 of file CGenericSensor.h.

virtual void mrpt::hwdrivers::CSwissRanger3DCamera::initialize ( ) [virtual]

Initializes the 3D camera - should be invoked after calling loadConfig()

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

Reimplemented from mrpt::hwdrivers::CGenericSensor.

void mrpt::hwdrivers::CSwissRanger3DCamera::internal_resendParamsToCamera ( ) const [protected]
bool mrpt::hwdrivers::CSwissRanger3DCamera::isEnabledConvGray ( ) const [inline]

Definition at line 181 of file CSwissRanger3DCamera.h.

bool mrpt::hwdrivers::CSwissRanger3DCamera::isEnabledDenoiseANF ( ) const [inline]

Definition at line 184 of file CSwissRanger3DCamera.h.

bool mrpt::hwdrivers::CSwissRanger3DCamera::isEnabledImageHistEqualization ( ) const [inline]

Definition at line 172 of file CSwissRanger3DCamera.h.

bool mrpt::hwdrivers::CSwissRanger3DCamera::isEnabledMedianCrossFilter ( ) const [inline]

Definition at line 178 of file CSwissRanger3DCamera.h.

bool mrpt::hwdrivers::CSwissRanger3DCamera::isEnabledMedianFilter ( ) const [inline]

Definition at line 175 of file CSwissRanger3DCamera.h.

bool mrpt::hwdrivers::CSwissRanger3DCamera::isEnabledPreviewWindow ( ) const [inline]

Definition at line 187 of file CSwissRanger3DCamera.h.

bool mrpt::hwdrivers::CSwissRanger3DCamera::isOpen ( ) const

whether the camera is open and comms work ok. To be called after initialize()

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.

virtual void mrpt::hwdrivers::CSwissRanger3DCamera::loadConfig_sensorSpecific ( const mrpt::utils::CConfigFileBase configSource,
const std::string section 
) [protected, virtual]

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)

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

Implements mrpt::hwdrivers::CGenericSensor.

bool mrpt::hwdrivers::CSwissRanger3DCamera::open ( )

return false on error - Called automatically from initialize(), no need normally for the user to call this.

static void mrpt::hwdrivers::CGenericSensor::registerClass ( const TSensorClassId pNewClass) [static, inherited]

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.

void mrpt::hwdrivers::CGenericSensor::setExternalImageFormat ( const std::string ext) [inline, inherited]

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 233 of file CGenericSensor.h.

void mrpt::hwdrivers::CGenericSensor::setExternalImageJPEGQuality ( const unsigned int  quality) [inline, inherited]

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

See also:
setExternalImageFormat

Definition at line 238 of file CGenericSensor.h.

void mrpt::hwdrivers::CSwissRanger3DCamera::setOpenFromUSB ( bool  USB) [inline]

true: open from USB, false: open from ethernet.

Definition at line 160 of file CSwissRanger3DCamera.h.

void mrpt::hwdrivers::CSwissRanger3DCamera::setOpenIPAddress ( const std::string IP) [inline]

Definition at line 163 of file CSwissRanger3DCamera.h.

virtual void mrpt::hwdrivers::CSwissRanger3DCamera::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::CSwissRanger3DCamera::setSave3D ( bool  save) [inline]

Definition at line 166 of file CSwissRanger3DCamera.h.

void mrpt::hwdrivers::CSwissRanger3DCamera::setSaveConfidenceImage ( bool  save) [inline]

Definition at line 169 of file CSwissRanger3DCamera.h.

void mrpt::hwdrivers::CSwissRanger3DCamera::setSaveIntensityImage ( bool  save) [inline]

Definition at line 168 of file CSwissRanger3DCamera.h.

void mrpt::hwdrivers::CSwissRanger3DCamera::setSaveRangeImage ( bool  save) [inline]

Definition at line 167 of file CSwissRanger3DCamera.h.

void mrpt::hwdrivers::CGenericSensor::setSensorLabel ( const std::string sensorLabel) [inline, inherited]

Definition at line 103 of file CGenericSensor.h.


Member Data Documentation

opaque handler to SRCAM. NULL means it's not open yet.

Definition at line 235 of file CSwissRanger3DCamera.h.

Serial number of the camera, set on open()

Definition at line 229 of file CSwissRanger3DCamera.h.

Definition at line 237 of file CSwissRanger3DCamera.h.

Size of camera images, set on open()

Definition at line 228 of file CSwissRanger3DCamera.h.

Definition at line 220 of file CSwissRanger3DCamera.h.

Definition at line 221 of file CSwissRanger3DCamera.h.

Definition at line 217 of file CSwissRanger3DCamera.h.

Definition at line 218 of file CSwissRanger3DCamera.h.

Definition at line 219 of file CSwissRanger3DCamera.h.

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

See also:
setPathForExternalImages

Definition at line 139 of file CGenericSensor.h.

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

Definition at line 140 of file CGenericSensor.h.

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.

Used when "m_grab_decimation" is enabled.

Definition at line 132 of file CGenericSensor.h.

Definition at line 226 of file CSwissRanger3DCamera.h.

size_t mrpt::hwdrivers::CGenericSensor::m_max_queue_len [protected, inherited]

See CGenericSensor.

Definition at line 126 of file CGenericSensor.h.

Max range, as deducted from the camera frequency.

Definition at line 230 of file CSwissRanger3DCamera.h.

true: USB, false: ETH

Definition at line 224 of file CSwissRanger3DCamera.h.

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

Definition at line 138 of file CGenericSensor.h.

Show preview window while grabbing.

Definition at line 232 of file CSwissRanger3DCamera.h.

double mrpt::hwdrivers::CGenericSensor::m_process_rate [protected, inherited]

See CGenericSensor.

Definition at line 125 of file CGenericSensor.h.

Definition at line 228 of file CSwissRanger3DCamera.h.

Save the 3D point cloud (default: true)

Definition at line 212 of file CSwissRanger3DCamera.h.

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

Definition at line 215 of file CSwissRanger3DCamera.h.

Save the 2D intensity image (default: true)

Definition at line 214 of file CSwissRanger3DCamera.h.

Save the 2D range image (default: true)

Definition at line 213 of file CSwissRanger3DCamera.h.

See CGenericSensor.

Definition at line 128 of file CGenericSensor.h.

Definition at line 210 of file CSwissRanger3DCamera.h.

Definition at line 134 of file CGenericSensor.h.

Definition at line 225 of file CSwissRanger3DCamera.h.

Definition at line 233 of file CSwissRanger3DCamera.h.

Definition at line 233 of file CSwissRanger3DCamera.h.




Page generated by Doxygen 1.7.5 for MRPT 0.9.5 SVN: at Thu Oct 13 21:25:36 UTC 2011