[Positioning] MultilaterationAlgorithm::make_constant_term()
Move the constant term computation from InterlinkNetworks::estimate_distance() into the new function MultilaterationAlgorithm::make_constant_term(). This will avoid duplicate this code into the future FBCM::estimate_distance().
This commit is contained in:
parent
e9eab6876d
commit
3dcf8bc88a
|
@ -1,26 +1,11 @@
|
||||||
#include "interlinknetworks.hh"
|
#include "interlinknetworks.hh"
|
||||||
#include "mobile.hh"
|
|
||||||
|
|
||||||
using std::tr1::unordered_map ;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
float InterlinkNetworks::estimate_distance(const Measurement &measurement)
|
float InterlinkNetworks::
|
||||||
|
estimate_distance(const Measurement &measurement)
|
||||||
{
|
{
|
||||||
assert(request) ;
|
double constant_term = make_constant_term(measurement) ;
|
||||||
|
|
||||||
const AccessPoint &ap = *measurement.get_ap() ;
|
|
||||||
assert(&ap) ;
|
|
||||||
|
|
||||||
double constant_term =
|
|
||||||
ap.get_trx_power() +
|
|
||||||
ap.get_antenna_gain() +
|
|
||||||
20 * log10(
|
|
||||||
300000000.0 /
|
|
||||||
ap.get_frequency() /
|
|
||||||
(4 * M_PI)
|
|
||||||
) +
|
|
||||||
request->get_mobile()->get_antenna_gain() ;
|
|
||||||
const float &average_ss = measurement.get_average_ss() ;
|
const float &average_ss = measurement.get_average_ss() ;
|
||||||
return pow(10, (constant_term - average_ss) / 35) ;
|
return pow(10, (constant_term - average_ss) / 35) ;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include "multilaterationalgorithm.hh"
|
#include "multilaterationalgorithm.hh"
|
||||||
#include "minmax.hh"
|
#include "minmax.hh"
|
||||||
|
#include "mobile.hh"
|
||||||
|
|
||||||
using namespace std ;
|
using namespace std ;
|
||||||
using std::tr1::unordered_map ;
|
using std::tr1::unordered_map ;
|
||||||
|
@ -30,6 +31,26 @@ MultilaterationAlgorithm::~MultilaterationAlgorithm()
|
||||||
/* *** Operations *** */
|
/* *** Operations *** */
|
||||||
|
|
||||||
|
|
||||||
|
double MultilaterationAlgorithm::
|
||||||
|
make_constant_term(const Measurement &measurement)
|
||||||
|
{
|
||||||
|
assert(request) ;
|
||||||
|
assert(request->get_mobile()) ;
|
||||||
|
const AccessPoint *ap = measurement.get_ap() ;
|
||||||
|
assert(ap) ;
|
||||||
|
|
||||||
|
return
|
||||||
|
ap->get_trx_power() +
|
||||||
|
ap->get_antenna_gain() +
|
||||||
|
20 * log10(
|
||||||
|
300000000.0 /
|
||||||
|
ap->get_frequency() /
|
||||||
|
(4 * M_PI)
|
||||||
|
) +
|
||||||
|
request->get_mobile()->get_antenna_gain() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Result MultilaterationAlgorithm::compute(const Request &_request)
|
Result MultilaterationAlgorithm::compute(const Request &_request)
|
||||||
{
|
{
|
||||||
request = &_request ;
|
request = &_request ;
|
||||||
|
|
|
@ -15,6 +15,7 @@ protected:
|
||||||
|
|
||||||
/** @name Operations */
|
/** @name Operations */
|
||||||
//@{
|
//@{
|
||||||
|
double make_constant_term(const Measurement &measurement) ;
|
||||||
void compute_ap_distance_circles() ;
|
void compute_ap_distance_circles() ;
|
||||||
Point3D multilaterate() ;
|
Point3D multilaterate() ;
|
||||||
//@}
|
//@}
|
||||||
|
|
Loading…
Reference in New Issue