From 987773a4dfcc4703c9440c32bbf42fa72810adc2 Mon Sep 17 00:00:00 2001 From: Matteo Cypriani Date: Wed, 11 Apr 2012 16:31:48 +0200 Subject: [PATCH] [Positioner] s/multilateration/trilateration/ This fixes an old, forgotten, vocabulary mistake. --- owlps-positioner/Makefile | 12 ++-- owlps-positioner/cfg/owlps-positioner.conf | 6 +- owlps-positioner/cfg/topology.csv | 2 +- owlps-positioner/src/fbcm.cc | 2 +- owlps-positioner/src/fbcm.hh | 4 +- owlps-positioner/src/frbhmbasic.cc | 2 +- owlps-positioner/src/interlinknetworks.hh | 4 +- owlps-positioner/src/minmax.cc | 4 +- owlps-positioner/src/minmax.hh | 8 +-- .../src/multilaterationalgorithm.hh | 58 ------------------- ...algorithm.cc => trilaterationalgorithm.cc} | 20 +++---- .../src/trilaterationalgorithm.hh | 58 +++++++++++++++++++ ...rationmethod.hh => trilaterationmethod.hh} | 20 +++---- owlps-positioner/src/userinterface.cc | 2 +- owlps-positioner/tests/fbcm_test.hh | 2 +- .../tests/interlinknetworks_test.hh | 2 +- owlps-positioner/tests/minmax_test.hh | 6 +- 17 files changed, 106 insertions(+), 106 deletions(-) delete mode 100644 owlps-positioner/src/multilaterationalgorithm.hh rename owlps-positioner/src/{multilaterationalgorithm.cc => trilaterationalgorithm.cc} (76%) create mode 100644 owlps-positioner/src/trilaterationalgorithm.hh rename owlps-positioner/src/{multilaterationmethod.hh => trilaterationmethod.hh} (62%) diff --git a/owlps-positioner/Makefile b/owlps-positioner/Makefile index 2c510e2..36a0678 100644 --- a/owlps-positioner/Makefile +++ b/owlps-positioner/Makefile @@ -117,14 +117,14 @@ OBJ_LIST = \ inputlogcsv.o OBJ_NOTEST_LIST = \ posexcept.o \ - multilaterationalgorithm.o \ + trilaterationalgorithm.o \ cartographyalgorithm.o \ outputnetworksocket.o \ inputmedium.o INTERFACES_LIST = \ inputlogmedium.hh \ outputmedium.hh \ - multilaterationmethod.hh \ + trilaterationmethod.hh \ positioningalgorithm.hh OBJ = $(OBJ_LIST:%=$(OBJ_DIR)/%) @@ -306,7 +306,7 @@ $(OBJ_DIR)/output.o: \ $(OBJ_DIR)/outputtcpsocketevaal.o \ $(OBJ_DIR)/configuration.o \ $(OBJ_DIR)/posexcept.o -$(OBJ_DIR)/multilaterationalgorithm.o: \ +$(OBJ_DIR)/trilaterationalgorithm.o: \ $(SRC_DIR)/positioningalgorithm.hh \ $(OBJ_DIR)/minmax.o \ $(OBJ_DIR)/mobile.o \ @@ -316,13 +316,13 @@ $(OBJ_DIR)/cartographyalgorithm.o: \ $(SRC_DIR)/positioningalgorithm.hh \ $(OBJ_DIR)/referencepoint.o $(OBJ_DIR)/minmax.o: \ - $(SRC_DIR)/multilaterationmethod.hh \ + $(SRC_DIR)/trilaterationmethod.hh \ $(OBJ_DIR)/point3d.o \ $(OBJ_DIR)/accesspoint.o $(OBJ_DIR)/interlinknetworks.o: \ - $(OBJ_DIR)/multilaterationalgorithm.o + $(OBJ_DIR)/trilaterationalgorithm.o $(OBJ_DIR)/fbcm.o: \ - $(OBJ_DIR)/multilaterationalgorithm.o \ + $(OBJ_DIR)/trilaterationalgorithm.o \ $(OBJ_DIR)/configuration.o \ $(OBJ_DIR)/stock.o $(OBJ_DIR)/frbhmbasic.o: \ diff --git a/owlps-positioner/cfg/owlps-positioner.conf b/owlps-positioner/cfg/owlps-positioner.conf index c82bf6f..f1d665c 100644 --- a/owlps-positioner/cfg/owlps-positioner.conf +++ b/owlps-positioner/cfg/owlps-positioner.conf @@ -83,10 +83,10 @@ csv-file = /tmp/owlps-positioner.log # Coordinates of the deployment area. # This is used to delimit the area in which reference points are # generated (when generate-reference-points is activated), and also -# by the MinMax multilateration method. -# Since MinMax is currently the only multilateration method implemented +# by the MinMax trilateration method. +# Since MinMax is currently the only trilateration method implemented # in OwlPS, you should define these parameters if you use any of the -# multilateration-based algorithms (InterlinkNetworks, FBCM, FRBHM). +# trilateration-based algorithms (InterlinkNetworks, FBCM, FRBHM). # With the autocalibration, the Z coordinate is the level's number, not # a true coordinate in meters. # They are declared as strings (X;Y;Z). Do not quote! diff --git a/owlps-positioner/cfg/topology.csv b/owlps-positioner/cfg/topology.csv index 2a30fe0..d0ce230 100644 --- a/owlps-positioner/cfg/topology.csv +++ b/owlps-positioner/cfg/topology.csv @@ -12,7 +12,7 @@ # be present in each area). # # ALSO IMPORTANT (EVEN IF YOU DON'T DESCRIBE THE TOPOLOGY): -# If you use the MinMax multilateration method, or the autocalibration, +# If you use the MinMax trilateration method, or the autocalibration, # you must provide area-start and area-stop options that match the # deployment area. That is, the cuboid formed by these two points # should include the whole deployment area. diff --git a/owlps-positioner/src/fbcm.cc b/owlps-positioner/src/fbcm.cc index b914d7b..01b7eac 100644 --- a/owlps-positioner/src/fbcm.cc +++ b/owlps-positioner/src/fbcm.cc @@ -17,7 +17,7 @@ Result FBCM::compute(const Request &_request) // Friis indexes each time we calculate a position if (Configuration::bool_value("positioning.generate-reference-points")) Stock::update_all_friis_indexes() ; - return MultilaterationAlgorithm::compute(_request) ; + return TrilaterationAlgorithm::compute(_request) ; } diff --git a/owlps-positioner/src/fbcm.hh b/owlps-positioner/src/fbcm.hh index 3a184e2..3a13b21 100644 --- a/owlps-positioner/src/fbcm.hh +++ b/owlps-positioner/src/fbcm.hh @@ -8,10 +8,10 @@ #ifndef _OWLPS_POSITIONING_FBCM_HH_ #define _OWLPS_POSITIONING_FBCM_HH_ -#include "multilaterationalgorithm.hh" +#include "trilaterationalgorithm.hh" /// Computes a position using the Interlink Networks formula -class FBCM: public MultilaterationAlgorithm +class FBCM: public TrilaterationAlgorithm { protected: float friis_index(const AccessPoint *const ap) const ; diff --git a/owlps-positioner/src/frbhmbasic.cc b/owlps-positioner/src/frbhmbasic.cc index 0d3bb9f..8825d41 100644 --- a/owlps-positioner/src/frbhmbasic.cc +++ b/owlps-positioner/src/frbhmbasic.cc @@ -17,7 +17,7 @@ Result FRBHMBasic::compute(const Request &_request) closest_in_ss = &select_point(_request) ; compute_ap_distance_circles() ; - Point3D position(multilaterate_2d(closest_in_ss->get_z())) ; + Point3D position(trilaterate_2d(closest_in_ss->get_z())) ; return Result(request, name, position) ; } diff --git a/owlps-positioner/src/interlinknetworks.hh b/owlps-positioner/src/interlinknetworks.hh index b835394..8fe747d 100644 --- a/owlps-positioner/src/interlinknetworks.hh +++ b/owlps-positioner/src/interlinknetworks.hh @@ -8,10 +8,10 @@ #ifndef _OWLPS_POSITIONING_INTERLINKNETWORKS_HH_ #define _OWLPS_POSITIONING_INTERLINKNETWORKS_HH_ -#include "multilaterationalgorithm.hh" +#include "trilaterationalgorithm.hh" /// Computes a position using the Interlink Networks formula -class InterlinkNetworks: public MultilaterationAlgorithm +class InterlinkNetworks: public TrilaterationAlgorithm { public: InterlinkNetworks(void): PositioningAlgorithm("InterlinkNetworks") {} diff --git a/owlps-positioner/src/minmax.cc b/owlps-positioner/src/minmax.cc index 67be584..afb01b3 100644 --- a/owlps-positioner/src/minmax.cc +++ b/owlps-positioner/src/minmax.cc @@ -12,7 +12,7 @@ using std::tr1::unordered_map ; -Point3D MinMax::multilaterate( +Point3D MinMax::trilaterate( const unordered_map &_ap_distances) { min = INFINITE ; @@ -28,7 +28,7 @@ Point3D MinMax::multilaterate( } -Point3D MinMax::multilaterate_2d( +Point3D MinMax::trilaterate_2d( const unordered_map &_ap_distances, float z) { min = INFINITE ; diff --git a/owlps-positioner/src/minmax.hh b/owlps-positioner/src/minmax.hh index f74261d..9c1c123 100644 --- a/owlps-positioner/src/minmax.hh +++ b/owlps-positioner/src/minmax.hh @@ -8,10 +8,10 @@ #ifndef _OWLPS_POSITIONING_MINMAX_HH_ #define _OWLPS_POSITIONING_MINMAX_HH_ -#include "multilaterationmethod.hh" +#include "trilaterationmethod.hh" /// Multilaterates using the Lassabe's MinMax algorithm -class MinMax: public MultilaterationMethod +class MinMax: public TrilaterationMethod { private: float min ; @@ -37,9 +37,9 @@ public: ~MinMax(void) {} - Point3D multilaterate( + Point3D trilaterate( const std::tr1::unordered_map &_ap_distances) ; - Point3D multilaterate_2d( + Point3D trilaterate_2d( const std::tr1::unordered_map &_ap_distances, float z) ; } ; diff --git a/owlps-positioner/src/multilaterationalgorithm.hh b/owlps-positioner/src/multilaterationalgorithm.hh deleted file mode 100644 index 6818d5c..0000000 --- a/owlps-positioner/src/multilaterationalgorithm.hh +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the Owl Positioning System (OwlPS). - * OwlPS is a project of the University of Franche-Comté - * (Université de Franche-Comté), France. - */ - - -#ifndef _OWLPS_POSITIONING_MULTILATERATIONALGORITHM_HH_ -#define _OWLPS_POSITIONING_MULTILATERATIONALGORITHM_HH_ - -#include "positioningalgorithm.hh" -#include "multilaterationmethod.hh" - -/// Super-class of multilateration-based positioning algorithms -class MultilaterationAlgorithm: public virtual PositioningAlgorithm -{ -protected: - const Request *request ; - - std::tr1::unordered_map ap_distances ; - MultilaterationMethod *multilateration_method ; - - /** @name Operations */ - //@{ - double make_constant_term(const Measurement &measurement) ; - void compute_ap_distance_circles() ; - Point3D multilaterate() ; - Point3D multilaterate_2d(float z) ; - //@} - -public: - MultilaterationAlgorithm(void) ; - - virtual ~MultilaterationAlgorithm(void) ; - - /** @name Operations */ - //@{ - Result compute(const Request &_request) ; - virtual float estimate_distance(const Measurement &measurement) = 0 ; - //@} -} ; - - - -inline Point3D MultilaterationAlgorithm::multilaterate() -{ - return multilateration_method->multilaterate(ap_distances) ; -} - - -inline Point3D MultilaterationAlgorithm::multilaterate_2d(float z) -{ - return multilateration_method->multilaterate_2d(ap_distances, z) ; -} - - - -#endif // _OWLPS_POSITIONING_MULTILATERATIONALGORITHM_HH_ diff --git a/owlps-positioner/src/multilaterationalgorithm.cc b/owlps-positioner/src/trilaterationalgorithm.cc similarity index 76% rename from owlps-positioner/src/multilaterationalgorithm.cc rename to owlps-positioner/src/trilaterationalgorithm.cc index 33c594e..e389ec6 100644 --- a/owlps-positioner/src/multilaterationalgorithm.cc +++ b/owlps-positioner/src/trilaterationalgorithm.cc @@ -5,7 +5,7 @@ */ -#include "multilaterationalgorithm.hh" +#include "trilaterationalgorithm.hh" #include "minmax.hh" #include "mobile.hh" #include "configuration.hh" @@ -19,10 +19,10 @@ using std::tr1::unordered_map ; /* *** Constructors *** */ -MultilaterationAlgorithm::MultilaterationAlgorithm(): +TrilaterationAlgorithm::TrilaterationAlgorithm(): request(NULL) { - // Will be changed when other multilateration methods will be + // Will be changed when other trilateration methods will be // implemented. if (! Configuration::is_configured("positioning.area-start") || @@ -36,13 +36,13 @@ MultilaterationAlgorithm::MultilaterationAlgorithm(): Point3D minmax_stop( Configuration::string_value("positioning.area-stop")) ; - multilateration_method = new MinMax(minmax_start, minmax_stop) ; + trilateration_method = new MinMax(minmax_start, minmax_stop) ; } -MultilaterationAlgorithm::~MultilaterationAlgorithm() +TrilaterationAlgorithm::~TrilaterationAlgorithm() { - delete multilateration_method ; + delete trilateration_method ; } @@ -50,7 +50,7 @@ MultilaterationAlgorithm::~MultilaterationAlgorithm() /* *** Operations *** */ -double MultilaterationAlgorithm:: +double TrilaterationAlgorithm:: make_constant_term(const Measurement &measurement) { assert(request) ; @@ -66,18 +66,18 @@ make_constant_term(const Measurement &measurement) } -Result MultilaterationAlgorithm::compute(const Request &_request) +Result TrilaterationAlgorithm::compute(const Request &_request) { request = &_request ; compute_ap_distance_circles() ; - Point3D position(multilaterate()) ; + Point3D position(trilaterate()) ; return Result(request, name, position) ; } -void MultilaterationAlgorithm::compute_ap_distance_circles() +void TrilaterationAlgorithm::compute_ap_distance_circles() { ap_distances.clear() ; diff --git a/owlps-positioner/src/trilaterationalgorithm.hh b/owlps-positioner/src/trilaterationalgorithm.hh new file mode 100644 index 0000000..0ba07c2 --- /dev/null +++ b/owlps-positioner/src/trilaterationalgorithm.hh @@ -0,0 +1,58 @@ +/* + * This file is part of the Owl Positioning System (OwlPS). + * OwlPS is a project of the University of Franche-Comté + * (Université de Franche-Comté), France. + */ + + +#ifndef _OWLPS_POSITIONING_TRILATERATIONALGORITHM_HH_ +#define _OWLPS_POSITIONING_TRILATERATIONALGORITHM_HH_ + +#include "positioningalgorithm.hh" +#include "trilaterationmethod.hh" + +/// Super-class of trilateration-based positioning algorithms +class TrilaterationAlgorithm: public virtual PositioningAlgorithm +{ +protected: + const Request *request ; + + std::tr1::unordered_map ap_distances ; + TrilaterationMethod *trilateration_method ; + + /** @name Operations */ + //@{ + double make_constant_term(const Measurement &measurement) ; + void compute_ap_distance_circles() ; + Point3D trilaterate() ; + Point3D trilaterate_2d(float z) ; + //@} + +public: + TrilaterationAlgorithm(void) ; + + virtual ~TrilaterationAlgorithm(void) ; + + /** @name Operations */ + //@{ + Result compute(const Request &_request) ; + virtual float estimate_distance(const Measurement &measurement) = 0 ; + //@} +} ; + + + +inline Point3D TrilaterationAlgorithm::trilaterate() +{ + return trilateration_method->trilaterate(ap_distances) ; +} + + +inline Point3D TrilaterationAlgorithm::trilaterate_2d(float z) +{ + return trilateration_method->trilaterate_2d(ap_distances, z) ; +} + + + +#endif // _OWLPS_POSITIONING_TRILATERATIONALGORITHM_HH_ diff --git a/owlps-positioner/src/multilaterationmethod.hh b/owlps-positioner/src/trilaterationmethod.hh similarity index 62% rename from owlps-positioner/src/multilaterationmethod.hh rename to owlps-positioner/src/trilaterationmethod.hh index d79eb23..fcc60e8 100644 --- a/owlps-positioner/src/multilaterationmethod.hh +++ b/owlps-positioner/src/trilaterationmethod.hh @@ -5,8 +5,8 @@ */ -#ifndef _OWLPS_POSITIONING_MULTILATERATIONMETHOD_HH_ -#define _OWLPS_POSITIONING_MULTILATERATIONMETHOD_HH_ +#ifndef _OWLPS_POSITIONING_TRILATERATIONMETHOD_HH_ +#define _OWLPS_POSITIONING_TRILATERATIONMETHOD_HH_ class AccessPoint ; @@ -14,26 +14,26 @@ class AccessPoint ; #include -/// Super-class of all multilateration methods +/// Super-class of all trilateration methods /** * The source data is a list of access points associated with the * distances to the mobile. These distances are estimated using a - * MultilaterationAlgorithm. + * TrilaterationAlgorithm. */ -class MultilaterationMethod +class TrilaterationMethod { public: - MultilaterationMethod(void) {} - virtual ~MultilaterationMethod(void) {} + TrilaterationMethod(void) {} + virtual ~TrilaterationMethod(void) {} /// Selects a point in 3D space - virtual Point3D multilaterate( + virtual Point3D trilaterate( const std::tr1::unordered_map &ap_distances) = 0 ; /// Selects a point in 2D space, given its vertical coordinate (z) - virtual Point3D multilaterate_2d( + virtual Point3D trilaterate_2d( const std::tr1::unordered_map &ap_distances, float z) = 0 ; } ; -#endif // _OWLPS_POSITIONING_MULTILATERATIONMETHOD_HH_ +#endif // _OWLPS_POSITIONING_TRILATERATIONMETHOD_HH_ diff --git a/owlps-positioner/src/userinterface.cc b/owlps-positioner/src/userinterface.cc index 32b78bb..0ee67d7 100644 --- a/owlps-positioner/src/userinterface.cc +++ b/owlps-positioner/src/userinterface.cc @@ -228,7 +228,7 @@ void UserInterface::fill_positioning_options() ("positioning.area-start", po::value(), "Coordinates of the first point of the deployment area; this is" - " used to delimit the area in which the MinMax multilateration" + " used to delimit the area in which the MinMax trilateration" " method tests points and in which the reference points are" " generated, if the corresponding options are activated" " (string format: \"X;Y;Z\").") diff --git a/owlps-positioner/tests/fbcm_test.hh b/owlps-positioner/tests/fbcm_test.hh index be55daf..258c59a 100644 --- a/owlps-positioner/tests/fbcm_test.hh +++ b/owlps-positioner/tests/fbcm_test.hh @@ -8,7 +8,7 @@ public: void test_select_point(void) { - MultilaterationAlgorithm *algo = new FBCM() ; + TrilaterationAlgorithm *algo = new FBCM() ; /* * TODO: implement the test. diff --git a/owlps-positioner/tests/interlinknetworks_test.hh b/owlps-positioner/tests/interlinknetworks_test.hh index beda92f..75ae930 100644 --- a/owlps-positioner/tests/interlinknetworks_test.hh +++ b/owlps-positioner/tests/interlinknetworks_test.hh @@ -8,7 +8,7 @@ public: void test_distance(void) { - MultilaterationAlgorithm *algo = new InterlinkNetworks() ; + TrilaterationAlgorithm *algo = new InterlinkNetworks() ; // Initialise algo->request char mobile_gain = 3, mobile_power = 15 ; diff --git a/owlps-positioner/tests/minmax_test.hh b/owlps-positioner/tests/minmax_test.hh index 88f6df0..a623b97 100644 --- a/owlps-positioner/tests/minmax_test.hh +++ b/owlps-positioner/tests/minmax_test.hh @@ -6,11 +6,11 @@ class MinMax_test: public CxxTest::TestSuite { public: - void test_multilaterate(void) + void test_trilaterate(void) { Point3D start(0,0,0), stop(10,10,4) ; float step = 0.5 ; - MultilaterationMethod *minmax = new MinMax(start, stop, step) ; + TrilaterationMethod *minmax = new MinMax(start, stop, step) ; AccessPoint ap1(Point3D(0,0,0)), @@ -24,7 +24,7 @@ public: ap_distances[&ap4] = 4 ; Point3D wanted_result(5,5,0) ; - Point3D result = minmax->multilaterate(ap_distances) ; + Point3D result = minmax->trilaterate(ap_distances) ; // Wrong with a step of 0.1 (for this test case): TS_ASSERT_EQUALS(result, wanted_result) ; // We can then use something like that: