Visual Servoing Platform  version 3.0.1
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
vpMbXmlParser Class Reference

#include <visp3/mbt/vpMbXmlParser.h>

+ Inheritance diagram for vpMbXmlParser:

Public Member Functions

Public Member Functions Inherited from vpMbXmlParser
 vpMbXmlParser ()
 
virtual ~vpMbXmlParser ()
 
double getAngleAppear () const
 
double getAngleDisappear () const
 
void getCameraParameters (vpCameraParameters &_cam) const
 
double getFarClippingDistance () const
 
bool getFovClipping () const
 
bool getLodState () const
 
double getMinLineLengthThreshold () const
 
double getMinPolygonAreaThreshold () const
 
double getNearClippingDistance () const
 
bool hasFarClippingDistance () const
 
bool hasNearClippingDistance () const
 
void parse (const char *filename)
 
virtual void readMainClass (xmlDocPtr doc, xmlNodePtr node)
 
void read_camera (xmlDocPtr doc, xmlNodePtr node)
 
void read_face (xmlDocPtr doc, xmlNodePtr node)
 
void read_lod (xmlDocPtr doc, xmlNodePtr node)
 
void setAngleAppear (const double &aappear)
 
void setAngleDisappear (const double &adisappear)
 
void setCameraParameters (const vpCameraParameters &_cam)
 
void setFarClippingDistance (const double &fclip)
 
void setNearClippingDistance (const double &nclip)
 
void writeMainClass (xmlNodePtr node)
 
Public Member Functions Inherited from vpXmlParser
void parse (const std::string &filename)
 
void save (const std::string &filename, const bool append=false)
 
void setMap (const std::map< std::string, int > &_map)
 
void setMainTag (const std::string &tag)
 

Static Public Member Functions

Static Public Member Functions Inherited from vpXmlParser
static void cleanup ()
 

Protected Types

enum  dataToParseMb {
  conf, face, angle_appear, angle_disappear,
  near_clipping, far_clipping, fov_clipping, camera,
  height, width, u0, v0,
  px, py, lod, use_lod,
  min_line_length_threshold, min_polygon_area_threshold, last
}
 

Protected Member Functions

Protected Member Functions Inherited from vpMbXmlParser
void init ()
 
Protected Member Functions Inherited from vpXmlParser
bool xmlReadBoolChild (xmlDocPtr doc, xmlNodePtr node)
 
char * xmlReadCharChild (xmlDocPtr doc, xmlNodePtr node)
 
double xmlReadDoubleChild (xmlDocPtr doc, xmlNodePtr node)
 
float xmlReadFloatChild (xmlDocPtr doc, xmlNodePtr node)
 
int xmlReadIntChild (xmlDocPtr doc, xmlNodePtr node)
 
std::string xmlReadStringChild (xmlDocPtr doc, xmlNodePtr node)
 
unsigned int xmlReadUnsignedIntChild (xmlDocPtr doc, xmlNodePtr node)
 
void xmlWriteBoolChild (xmlNodePtr node, const char *label, const bool value)
 
void xmlWriteCharChild (xmlNodePtr node, const char *label, const char *value)
 
void xmlWriteDoubleChild (xmlNodePtr node, const char *label, const double value)
 
void xmlWriteFloatChild (xmlNodePtr node, const char *label, const float value)
 
void xmlWriteIntChild (xmlNodePtr node, const char *label, const int value)
 
void xmlWriteStringChild (xmlNodePtr node, const char *label, const std::string &value)
 
void xmlWriteUnsignedIntChild (xmlNodePtr node, const char *label, const unsigned int value)
 

Protected Attributes

vpCameraParameters cam
 
double angleAppear
 
double angleDisappear
 
bool hasNearClipping
 
double nearClipping
 
bool hasFarClipping
 
double farClipping
 
bool fovClipping
 
bool useLod
 
double minLineLengthThreshold
 
double minPolygonAreaThreshold
 
std::map< std::string, int > nodeMap
 
std::string main_tag
 

Detailed Description

Parse an Xml file to extract configuration parameters of a mbtConfig object.

Data parser for the model based tracker.

Definition at line 63 of file vpMbXmlParser.h.

Member Enumeration Documentation

Enumerator
conf 
face 
angle_appear 
angle_disappear 
near_clipping 
far_clipping 
fov_clipping 
camera 
height 
width 
u0 
v0 
px 
py 
lod 
use_lod 
min_line_length_threshold 
min_polygon_area_threshold 
last 

Definition at line 89 of file vpMbXmlParser.h.

Constructor & Destructor Documentation

vpMbXmlParser::vpMbXmlParser ( )

Default constructor.

Definition at line 54 of file vpMbXmlParser.cpp.

References init().

vpMbXmlParser::~vpMbXmlParser ( )
virtual

Default destructor.

Definition at line 67 of file vpMbXmlParser.cpp.

Member Function Documentation

static void vpXmlParser::cleanup ( )
inlinestaticinherited

As stated in http://xmlsoft.org/html/libxml-parser.html#xmlCleanupParser to clean up memory allocated by the xml2 library itself, the user should call xmlCleanupParser() only when the process has finished using the xml2 library. In case of doubt abstain from calling this function or do it just before calling exit() to avoid leak reports from valgrind ! That's why in ViSP the destructor doesn't call xmlCleanupParser(). Rather we provide the static function vpXmlParser::cleanup() that calls xmlCleanupParser() that could be called just before exit().

Examples:
mbtEdgeKltMultiTracking.cpp, mbtEdgeKltTracking.cpp, mbtEdgeMultiTracking.cpp, mbtEdgeTracking.cpp, mbtKltMultiTracking.cpp, mbtKltTracking.cpp, testXmlParser.cpp, tutorial-detection-object-mbt.cpp, tutorial-detection-object-mbt2.cpp, tutorial-mb-edge-tracker.cpp, tutorial-mb-hybrid-tracker.cpp, tutorial-mb-klt-tracker.cpp, and tutorial-mb-tracker-full.cpp.

Definition at line 308 of file vpXmlParser.h.

double vpMbXmlParser::getAngleAppear ( ) const
inline

Get the angle to determine if a face appeared.

Returns
angleAppear

Definition at line 124 of file vpMbXmlParser.h.

Referenced by vpMbEdgeKltTracker::loadConfigFile(), vpMbKltTracker::loadConfigFile(), and vpMbEdgeTracker::loadConfigFile().

double vpMbXmlParser::getAngleDisappear ( ) const
inline

Get the angle to determine if a face disappeared.

Returns
angleDisappear

Definition at line 131 of file vpMbXmlParser.h.

Referenced by vpMbEdgeKltTracker::loadConfigFile(), vpMbKltTracker::loadConfigFile(), and vpMbEdgeTracker::loadConfigFile().

void vpMbXmlParser::getCameraParameters ( vpCameraParameters _cam) const
inline
double vpMbXmlParser::getFarClippingDistance ( ) const
inline

Get the far clipping distance.

Returns
farClipping

Definition at line 140 of file vpMbXmlParser.h.

Referenced by vpMbEdgeKltTracker::loadConfigFile(), vpMbKltTracker::loadConfigFile(), and vpMbEdgeTracker::loadConfigFile().

bool vpMbXmlParser::getFovClipping ( ) const
inline

Use FOV clipping

Returns
True if yes, False otherwise.

Definition at line 147 of file vpMbXmlParser.h.

Referenced by vpMbEdgeKltTracker::loadConfigFile(), vpMbKltTracker::loadConfigFile(), and vpMbEdgeTracker::loadConfigFile().

bool vpMbXmlParser::getLodState ( ) const
inline

Get the state of LOD setting.

Returns
True if LOD is enabled, false otherwise.

Definition at line 154 of file vpMbXmlParser.h.

Referenced by vpMbEdgeKltTracker::loadConfigFile(), vpMbKltTracker::loadConfigFile(), and vpMbEdgeTracker::loadConfigFile().

double vpMbXmlParser::getMinLineLengthThreshold ( ) const
inline

Get the minimum line length to track a segment when LOD is enabled.

Returns
The minimum line length.

Definition at line 163 of file vpMbXmlParser.h.

Referenced by vpMbEdgeKltTracker::loadConfigFile(), vpMbKltTracker::loadConfigFile(), and vpMbEdgeTracker::loadConfigFile().

double vpMbXmlParser::getMinPolygonAreaThreshold ( ) const
inline

Get the minimum polygon area to track a face when LOD is enabled.

Returns
The minimum polygon area.

Definition at line 172 of file vpMbXmlParser.h.

Referenced by vpMbEdgeKltTracker::loadConfigFile(), vpMbKltTracker::loadConfigFile(), and vpMbEdgeTracker::loadConfigFile().

double vpMbXmlParser::getNearClippingDistance ( ) const
inline

Get the near clipping distance.

Returns
nearClipping

Definition at line 181 of file vpMbXmlParser.h.

Referenced by vpMbEdgeKltTracker::loadConfigFile(), vpMbKltTracker::loadConfigFile(), and vpMbEdgeTracker::loadConfigFile().

bool vpMbXmlParser::hasFarClippingDistance ( ) const
inline

Has Far clipping been specified?

Returns
True if yes, False otherwise.

Definition at line 188 of file vpMbXmlParser.h.

Referenced by vpMbEdgeKltTracker::loadConfigFile(), vpMbKltTracker::loadConfigFile(), and vpMbEdgeTracker::loadConfigFile().

bool vpMbXmlParser::hasNearClippingDistance ( ) const
inline

Has Near clipping been specified?

Returns
True if yes, False otherwise.

Definition at line 195 of file vpMbXmlParser.h.

Referenced by vpMbEdgeKltTracker::loadConfigFile(), vpMbKltTracker::loadConfigFile(), and vpMbEdgeTracker::loadConfigFile().

void vpMbXmlParser::init ( void  )
protected
void vpMbXmlParser::parse ( const char *  filename)

Parse the file in parameters. This method is deprecated, use parse() instead.

Parameters
filename: File to parse.

Definition at line 106 of file vpMbXmlParser.cpp.

References vpXmlParser::parse().

void vpXmlParser::parse ( const std::string &  filename)
inherited

parse the document. The data in the file are stored in the attributes of the child class. This method calls the readMainClass method which has to be implemented for every child class depending on the content to parse.

Parameters
filename: name of the file to parse

Definition at line 436 of file vpXmlParser.cpp.

References vpException::ioError, vpXmlParser::readMainClass(), and vpERROR_TRACE.

Referenced by vpMbtEdgeKltXmlParser::parse(), vpMbtXmlParser::parse(), vpMbtKltXmlParser::parse(), parse(), and vpXmlConfigParserKeyPoint::parse().

void vpMbXmlParser::read_camera ( xmlDocPtr  doc,
xmlNodePtr  node 
)

Read camera information.

Exceptions
vpException::fatalErrorif there was an unexpected number of data.
Parameters
doc: Pointer to the document.
node: Pointer to the node of the camera information.

Definition at line 190 of file vpMbXmlParser.cpp.

References cam, vpCameraParameters::get_px(), vpCameraParameters::get_py(), vpCameraParameters::get_u0(), vpCameraParameters::get_v0(), vpCameraParameters::initPersProjWithoutDistortion(), vpXmlParser::nodeMap, px, py, u0, v0, and vpXmlParser::xmlReadDoubleChild().

Referenced by vpMbtEdgeKltXmlParser::readMainClass(), vpMbtXmlParser::readMainClass(), vpMbtKltXmlParser::readMainClass(), and readMainClass().

void vpMbXmlParser::read_face ( xmlDocPtr  doc,
xmlNodePtr  node 
)

Read face information.

Exceptions
vpException::fatalErrorif there was an unexpected number of data.
Parameters
doc: Pointer to the document.
node: Pointer to the node of the camera information.

Definition at line 264 of file vpMbXmlParser.cpp.

References angle_appear, angle_disappear, angleAppear, angleDisappear, far_clipping, farClipping, fov_clipping, fovClipping, hasFarClipping, hasNearClipping, near_clipping, nearClipping, vpXmlParser::nodeMap, vpXmlParser::xmlReadDoubleChild(), and vpXmlParser::xmlReadIntChild().

Referenced by vpMbtEdgeKltXmlParser::readMainClass(), vpMbtXmlParser::readMainClass(), vpMbtKltXmlParser::readMainClass(), and readMainClass().

void vpMbXmlParser::readMainClass ( xmlDocPtr  doc,
xmlNodePtr  node 
)
virtual

Read the parameters of the class from the file given by its document pointer and by its root node.

Parameters
doc: Document to parse.
node: Root node.

Implements vpXmlParser.

Reimplemented in vpMbtKltXmlParser, vpMbtXmlParser, and vpMbtEdgeKltXmlParser.

Definition at line 131 of file vpMbXmlParser.cpp.

References angleAppear, angleDisappear, cam, camera, face, vpCameraParameters::get_px(), vpCameraParameters::get_py(), vpCameraParameters::get_u0(), vpCameraParameters::get_v0(), lod, minLineLengthThreshold, minPolygonAreaThreshold, vpXmlParser::nodeMap, read_camera(), read_face(), read_lod(), and useLod.

void vpXmlParser::save ( const std::string &  filename,
const bool  append = false 
)
inherited

Save the content of the class in the file given in parameters. The data of the class are in the child class. This method calls the write_main_class method which has to be implemented for every class depending on the data to save.

Parameters
filename: the name of the file used to record the data
append: if true and if the file exists, the data will be added to the data already in the file

Definition at line 469 of file vpXmlParser.cpp.

References vpException::ioError, vpXmlParser::main_tag, vpERROR_TRACE, and vpXmlParser::writeMainClass().

void vpMbXmlParser::setAngleAppear ( const double &  aappear)
inline

Set the angle to determine if a face appeared.

Parameters
aappear: New angleAppear

Definition at line 209 of file vpMbXmlParser.h.

Referenced by vpMbEdgeKltTracker::loadConfigFile(), vpMbKltTracker::loadConfigFile(), and vpMbEdgeTracker::loadConfigFile().

void vpMbXmlParser::setAngleDisappear ( const double &  adisappear)
inline

Set the angle to determine if a face disappeared.

Parameters
adisappear: New angleDisappear

Definition at line 216 of file vpMbXmlParser.h.

Referenced by vpMbEdgeKltTracker::loadConfigFile(), vpMbKltTracker::loadConfigFile(), and vpMbEdgeTracker::loadConfigFile().

void vpMbXmlParser::setCameraParameters ( const vpCameraParameters _cam)
inline
void vpMbXmlParser::setFarClippingDistance ( const double &  fclip)
inline

Set the far clipping distance.

Parameters
fclip: New farClipping

Definition at line 225 of file vpMbXmlParser.h.

void vpXmlParser::setMainTag ( const std::string &  tag)
inlineinherited

set the name of the main tag

The main tag corresponds to the name of the root node

Parameters
tag: name of the root node of the document

Definition at line 293 of file vpXmlParser.h.

Referenced by init().

void vpXmlParser::setMap ( const std::map< std::string, int > &  _map)
inlineinherited

Set the map describing the data to parse. This map stores the name of each node and an associated key used to simplify the parsing of the file.

If the following file want to be parsed:

<config>
<range>5</range>
<step>7</step>
<size_filter>3</size_filter>
</config>

The following map has to be declared:

std::map dataToParse;
dataToParse["config"] = 0;
dataToParse["range"] = 1;
dataToParse["step"] = 2;
dataToParse["size_filter"] = 3;

Or, you can use keyzord instead of number as key but it implies to declare in the child class an enumeration type of the name. For example:

typedef enum{
config,
range,
step,
size_filter} data_enum;
std::map dataToParse;
dataToParse["config"] = config;
dataToParse["range"] = range;
dataToParse["step"] = step;
dataToParse["size_filter"] = size_filter;
Parameters
_map: the map describing the data to parse

Definition at line 284 of file vpXmlParser.h.

void vpMbXmlParser::setNearClippingDistance ( const double &  nclip)
inline

Set the near clipping distance.

Parameters
nclip: New nearClipping

Definition at line 232 of file vpMbXmlParser.h.

void vpMbXmlParser::writeMainClass ( xmlNodePtr  node)
virtual

Write info to file.

Warning
Useless, so not yet implemented => Throw exception.

Implements vpXmlParser.

Definition at line 118 of file vpMbXmlParser.cpp.

References vpException::notImplementedError.

bool vpXmlParser::xmlReadBoolChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

read a boolean

Warning
throw a vpException::ioError if the value cannot be parsed to a bool
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
the bool value in the node

Definition at line 289 of file vpXmlParser.cpp.

References vpException::fatalError.

char * vpXmlParser::xmlReadCharChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

Read an array of character.

Warning
The array of characters is allocated and must be explicitly freed to avoid memory leak.
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
pointer to an allocated array of character.

Definition at line 106 of file vpXmlParser.cpp.

References vpException::fatalError.

double vpXmlParser::xmlReadDoubleChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

read a double

Warning
throw a vpException::ioError if the value cannot be parsed to a double
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
the double value in the node

Definition at line 219 of file vpXmlParser.cpp.

References vpException::fatalError, and vpException::ioError.

Referenced by read_camera(), vpMbtXmlParser::read_contrast(), read_face(), vpMbtKltXmlParser::read_klt(), and read_lod().

float vpXmlParser::xmlReadFloatChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

read a float

Warning
throw a vpException::ioError if the value cannot be parsed to a float
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
the float value in the node

Definition at line 252 of file vpXmlParser.cpp.

References vpException::fatalError, and vpException::ioError.

int vpXmlParser::xmlReadIntChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

read an int

Warning
throw a vpException::ioError if the value cannot be parsed to an integer
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
the integer value in the node

Definition at line 151 of file vpXmlParser.cpp.

References vpException::fatalError, and vpException::ioError.

Referenced by read_face(), read_lod(), vpMbtXmlParser::read_sample(), and vpMbtXmlParser::read_sample_deprecated().

std::string vpXmlParser::xmlReadStringChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

Read an array of character.

Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
std::string representing the value.

Definition at line 127 of file vpXmlParser.cpp.

References vpException::fatalError.

unsigned int vpXmlParser::xmlReadUnsignedIntChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

read an int

Warning
throw a vpException::ioError if the value cannot be parsed to an unsigned integer
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
the unsigned integer value in the node

Definition at line 185 of file vpXmlParser.cpp.

References vpException::fatalError, and vpException::ioError.

Referenced by vpMbtKltXmlParser::read_klt(), vpMbtXmlParser::read_mask(), and vpMbtXmlParser::read_range().

void vpXmlParser::xmlWriteBoolChild ( xmlNodePtr  node,
const char *  label,
const bool  value 
)
protectedinherited

write a bool.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: boolean to write (true or false)

Definition at line 414 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteCharChild ( xmlNodePtr  node,
const char *  label,
const char *  value 
)
protectedinherited

write an array of character.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: pointer to the array of character to write

Definition at line 314 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteDoubleChild ( xmlNodePtr  node,
const char *  label,
const double  value 
)
protectedinherited

write a double.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: double to write

Definition at line 380 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteFloatChild ( xmlNodePtr  node,
const char *  label,
const float  value 
)
protectedinherited

write a float.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: float to write

Definition at line 397 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteIntChild ( xmlNodePtr  node,
const char *  label,
const int  value 
)
protectedinherited

write an integer.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: integer to write

Definition at line 345 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteStringChild ( xmlNodePtr  node,
const char *  label,
const std::string &  value 
)
protectedinherited

write an array of character.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: std::string to write;

Definition at line 329 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteUnsignedIntChild ( xmlNodePtr  node,
const char *  label,
const unsigned int  value 
)
protectedinherited

write an unsigned integer.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: unsigned integer to write

Definition at line 362 of file vpXmlParser.cpp.

Member Data Documentation

double vpMbXmlParser::angleAppear
protected

Angle to determine if a face appeared.

Definition at line 69 of file vpMbXmlParser.h.

Referenced by read_face(), vpMbtEdgeKltXmlParser::readMainClass(), vpMbtXmlParser::readMainClass(), vpMbtKltXmlParser::readMainClass(), and readMainClass().

double vpMbXmlParser::angleDisappear
protected

Angle to determine if a face disappeared.

Definition at line 71 of file vpMbXmlParser.h.

Referenced by read_face(), vpMbtEdgeKltXmlParser::readMainClass(), vpMbtXmlParser::readMainClass(), vpMbtKltXmlParser::readMainClass(), and readMainClass().

double vpMbXmlParser::farClipping
protected

Near clipping distance.

Definition at line 79 of file vpMbXmlParser.h.

Referenced by read_face().

bool vpMbXmlParser::fovClipping
protected

Fov Clipping.

Definition at line 81 of file vpMbXmlParser.h.

Referenced by read_face().

bool vpMbXmlParser::hasFarClipping
protected

Is far clipping distance specified?

Definition at line 77 of file vpMbXmlParser.h.

Referenced by read_face().

bool vpMbXmlParser::hasNearClipping
protected

Is near clipping distance specified?

Definition at line 73 of file vpMbXmlParser.h.

Referenced by read_face().

std::string vpXmlParser::main_tag
protectedinherited

The name of the main tag for the file to parse

Definition at line 229 of file vpXmlParser.h.

Referenced by vpXmlParser::save(), and vpXmlParser::vpXmlParser().

double vpMbXmlParser::minLineLengthThreshold
protected

Minimum line length to track a segment when LOD is enabled.

Definition at line 85 of file vpMbXmlParser.h.

Referenced by read_lod(), vpMbtEdgeKltXmlParser::readMainClass(), vpMbtXmlParser::readMainClass(), vpMbtKltXmlParser::readMainClass(), and readMainClass().

double vpMbXmlParser::minPolygonAreaThreshold
protected

Minimum polygon area to track a face when LOD is enabled.

Definition at line 87 of file vpMbXmlParser.h.

Referenced by read_lod(), vpMbtEdgeKltXmlParser::readMainClass(), vpMbtXmlParser::readMainClass(), vpMbtKltXmlParser::readMainClass(), and readMainClass().

double vpMbXmlParser::nearClipping
protected

Near clipping distance.

Definition at line 75 of file vpMbXmlParser.h.

Referenced by read_face().

bool vpMbXmlParser::useLod
protected

If true, the LOD is enabled, otherwise it is not.

Definition at line 83 of file vpMbXmlParser.h.

Referenced by read_lod(), vpMbtEdgeKltXmlParser::readMainClass(), vpMbtXmlParser::readMainClass(), vpMbtKltXmlParser::readMainClass(), and readMainClass().