[Positioning] Include algorithm name in results
This commit is contained in:
parent
670dfdc867
commit
4752198ce7
|
@ -26,8 +26,6 @@
|
||||||
normaux.
|
normaux.
|
||||||
|
|
||||||
- Positioning
|
- Positioning
|
||||||
° Afficher le nom de chaque algorithme lors de la sortie d'un
|
|
||||||
résultat.
|
|
||||||
° Pour une requête, la sortie des résultats de tous les algos
|
° Pour une requête, la sortie des résultats de tous les algos
|
||||||
devrait se faire simultanément sur le medium de sortie, ce qui
|
devrait se faire simultanément sur le medium de sortie, ce qui
|
||||||
permettrait par exemple de créer un tableau pour l'affichage CSV
|
permettrait par exemple de créer un tableau pour l'affichage CSV
|
||||||
|
|
|
@ -5,5 +5,5 @@
|
||||||
Result CartographyAlgorithm::compute(const Request &request)
|
Result CartographyAlgorithm::compute(const Request &request)
|
||||||
{
|
{
|
||||||
Point3D position(select_point(request)) ;
|
Point3D position(select_point(request)) ;
|
||||||
return Result(&request, position) ;
|
return Result(&request, position, name) ;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ protected:
|
||||||
float friis_index(const AccessPoint *const ap) const ;
|
float friis_index(const AccessPoint *const ap) const ;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
FBCM(void) {}
|
FBCM(void): PositioningAlgorithm("FBCM") {}
|
||||||
~FBCM(void) {}
|
~FBCM(void) {}
|
||||||
|
|
||||||
float estimate_distance(const Measurement &measurement) ;
|
float estimate_distance(const Measurement &measurement) ;
|
||||||
|
|
|
@ -12,7 +12,7 @@ Result FRBHMBasic::compute(const Request &_request)
|
||||||
compute_ap_distance_circles() ;
|
compute_ap_distance_circles() ;
|
||||||
Point3D position(multilaterate_2d(closest_in_ss->get_z())) ;
|
Point3D position(multilaterate_2d(closest_in_ss->get_z())) ;
|
||||||
|
|
||||||
return Result(request, position) ;
|
return Result(request, position, name) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,8 @@ protected:
|
||||||
float friis_index(const AccessPoint *const ap) const ;
|
float friis_index(const AccessPoint *const ap) const ;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
FRBHMBasic(void): closest_in_ss(NULL) {}
|
FRBHMBasic(void):
|
||||||
|
PositioningAlgorithm("FRBHMBasic"), closest_in_ss(NULL) {}
|
||||||
~FRBHMBasic(void) {}
|
~FRBHMBasic(void) {}
|
||||||
|
|
||||||
/** @name Operations */
|
/** @name Operations */
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
class InterlinkNetworks: public MultilaterationAlgorithm
|
class InterlinkNetworks: public MultilaterationAlgorithm
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
InterlinkNetworks(void) {}
|
InterlinkNetworks(void): PositioningAlgorithm("InterlinkNetworks") {}
|
||||||
~InterlinkNetworks(void) {}
|
~InterlinkNetworks(void) {}
|
||||||
|
|
||||||
float estimate_distance(const Measurement &measurement) ;
|
float estimate_distance(const Measurement &measurement) ;
|
||||||
|
|
|
@ -58,7 +58,7 @@ Result MultilaterationAlgorithm::compute(const Request &_request)
|
||||||
compute_ap_distance_circles() ;
|
compute_ap_distance_circles() ;
|
||||||
Point3D position(multilaterate()) ;
|
Point3D position(multilaterate()) ;
|
||||||
|
|
||||||
return Result(request, position) ;
|
return Result(request, position, name) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,8 @@ const string OutputCSV::result_to_csv(const Result &result)
|
||||||
else
|
else
|
||||||
csv_line << ";;;" ;
|
csv_line << ";;;" ;
|
||||||
|
|
||||||
|
csv_line << ';' << result.get_algorithm() ;
|
||||||
|
|
||||||
Point3D position = result.get_position() ;
|
Point3D position = result.get_position() ;
|
||||||
csv_line
|
csv_line
|
||||||
<< ';' << position.get_x()
|
<< ';' << position.get_x()
|
||||||
|
|
|
@ -7,8 +7,13 @@
|
||||||
/// Super-class of all positioning algorithms
|
/// Super-class of all positioning algorithms
|
||||||
class PositioningAlgorithm
|
class PositioningAlgorithm
|
||||||
{
|
{
|
||||||
|
protected:
|
||||||
|
/// Name of the algorithm
|
||||||
|
const std::string name ;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
PositioningAlgorithm(void) {}
|
PositioningAlgorithm(const std::string _name = "UnknownAlgorithm"):
|
||||||
|
name(_name) {}
|
||||||
virtual ~PositioningAlgorithm(void) {}
|
virtual ~PositioningAlgorithm(void) {}
|
||||||
|
|
||||||
virtual Result compute(const Request &request) = 0 ;
|
virtual Result compute(const Request &request) = 0 ;
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
class RADAR: public CartographyAlgorithm
|
class RADAR: public CartographyAlgorithm
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RADAR(void) {}
|
RADAR(void): PositioningAlgorithm("RADAR") {}
|
||||||
~RADAR(void) {}
|
~RADAR(void) {}
|
||||||
|
|
||||||
const ReferencePoint& select_point(const Request &request) ;
|
const ReferencePoint& select_point(const Request &request) ;
|
||||||
|
|
|
@ -14,8 +14,8 @@ Result RealPosition::compute(const Request &request)
|
||||||
Point3D *coordinates =
|
Point3D *coordinates =
|
||||||
static_cast<Point3D*>(
|
static_cast<Point3D*>(
|
||||||
calibration_request->get_reference_point()) ;
|
calibration_request->get_reference_point()) ;
|
||||||
return Result(&request, *coordinates) ;
|
return Result(&request, *coordinates, name) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Result(&request) ;
|
return Result(&request, name) ;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,8 @@
|
||||||
class RealPosition: public PositioningAlgorithm
|
class RealPosition: public PositioningAlgorithm
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
RealPosition(void): PositioningAlgorithm("RealPosition") {}
|
||||||
|
|
||||||
Result compute(const Request &request) ;
|
Result compute(const Request &request) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ const Result& Result::operator=(const Result &source)
|
||||||
if (this == &source)
|
if (this == &source)
|
||||||
return *this ;
|
return *this ;
|
||||||
|
|
||||||
|
algorithm = source.algorithm ;
|
||||||
position = source.position ;
|
position = source.position ;
|
||||||
request = source.request ;
|
request = source.request ;
|
||||||
|
|
||||||
|
@ -21,6 +22,7 @@ const Result& Result::operator=(const Result &source)
|
||||||
bool Result::operator==(const Result &source) const
|
bool Result::operator==(const Result &source) const
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
|
algorithm == source.algorithm &&
|
||||||
position == source.position &&
|
position == source.position &&
|
||||||
request == source.request ;
|
request == source.request ;
|
||||||
}
|
}
|
||||||
|
@ -30,12 +32,11 @@ bool Result::operator==(const Result &source) const
|
||||||
std::ostream& operator<<(std::ostream &os, const Result &r)
|
std::ostream& operator<<(std::ostream &os, const Result &r)
|
||||||
{
|
{
|
||||||
if (r.request == NULL)
|
if (r.request == NULL)
|
||||||
os << "For an unknown request, the result is: " ;
|
os << "For an unknown request, the " ;
|
||||||
else
|
else
|
||||||
os
|
os << "For the following request: " << *(r.request) << "\nThe " ;
|
||||||
<< "For the following request: "
|
os
|
||||||
<< *(r.request)
|
<< "result of the algorithm " << r.algorithm
|
||||||
<< "\nThe result is: " ;
|
<< " is: " << r.position ;
|
||||||
os << r.position ;
|
|
||||||
return os ;
|
return os ;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,22 +5,29 @@ class Request ;
|
||||||
|
|
||||||
#include "point3d.hh"
|
#include "point3d.hh"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
/// Represents a result computed by a positioning algorithm
|
/// Represents a result computed by a positioning algorithm
|
||||||
class Result
|
class Result
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
Point3D position ;
|
Point3D position ;
|
||||||
Request *request ;
|
Request *request ;
|
||||||
|
std::string algorithm ;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Result(const Request *_request = NULL):
|
Result(const Request *_request = NULL,
|
||||||
request(const_cast<Request*>(_request)) {}
|
const std::string &_algorithm = "UnknownAlgorithm"):
|
||||||
Result(const Request *_request, const Point3D &_position):
|
request(const_cast<Request*>(_request)), algorithm(_algorithm) {}
|
||||||
position(_position), request(const_cast<Request*>(_request)) {}
|
Result(const Request *_request, const Point3D &_position,
|
||||||
|
const std::string &_algorithm):
|
||||||
|
position(_position), request(const_cast<Request*>(_request)),
|
||||||
|
algorithm(_algorithm) {}
|
||||||
~Result(void) {}
|
~Result(void) {}
|
||||||
|
|
||||||
/** @name Read accessors */
|
/** @name Read accessors */
|
||||||
//@{
|
//@{
|
||||||
|
const std::string& get_algorithm(void) const ;
|
||||||
const Point3D& get_position(void) const ;
|
const Point3D& get_position(void) const ;
|
||||||
const Request* get_request(void) const ;
|
const Request* get_request(void) const ;
|
||||||
//@}
|
//@}
|
||||||
|
@ -41,6 +48,12 @@ public:
|
||||||
/* *** Read accessors *** */
|
/* *** Read accessors *** */
|
||||||
|
|
||||||
|
|
||||||
|
inline const std::string& Result::get_algorithm() const
|
||||||
|
{
|
||||||
|
return algorithm ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
inline const Point3D& Result::get_position() const
|
inline const Point3D& Result::get_position() const
|
||||||
{
|
{
|
||||||
return position ;
|
return position ;
|
||||||
|
|
Loading…
Reference in New Issue