[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 "mobile.hh"
|
||||
|
||||
using std::tr1::unordered_map ;
|
||||
|
||||
|
||||
|
||||
float InterlinkNetworks::estimate_distance(const Measurement &measurement)
|
||||
float InterlinkNetworks::
|
||||
estimate_distance(const Measurement &measurement)
|
||||
{
|
||||
assert(request) ;
|
||||
|
||||
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() ;
|
||||
double constant_term = make_constant_term(measurement) ;
|
||||
const float &average_ss = measurement.get_average_ss() ;
|
||||
return pow(10, (constant_term - average_ss) / 35) ;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "multilaterationalgorithm.hh"
|
||||
#include "minmax.hh"
|
||||
#include "mobile.hh"
|
||||
|
||||
using namespace std ;
|
||||
using std::tr1::unordered_map ;
|
||||
|
@ -30,6 +31,26 @@ MultilaterationAlgorithm::~MultilaterationAlgorithm()
|
|||
/* *** 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)
|
||||
{
|
||||
request = &_request ;
|
||||
|
|
|
@ -15,6 +15,7 @@ protected:
|
|||
|
||||
/** @name Operations */
|
||||
//@{
|
||||
double make_constant_term(const Measurement &measurement) ;
|
||||
void compute_ap_distance_circles() ;
|
||||
Point3D multilaterate() ;
|
||||
//@}
|
||||
|
|
Loading…
Reference in New Issue