diff --git a/owlps-positioning/cfg/owlps-positioning.cfg b/owlps-positioning/cfg/owlps-positioning.cfg index 5ad76b5..321fcfd 100644 --- a/owlps-positioning/cfg/owlps-positioning.cfg +++ b/owlps-positioning/cfg/owlps-positioning.cfg @@ -53,6 +53,12 @@ csv-file = /tmp/owlps-positioning.log #minmax-start = -2;-2;0 #minmax-stop = 20;30;6 +# With the RADAR algorithm, for a given positioning request, average +# all the calibration requests associated with a reference point before +# to compute the SS distance. The default is false, i.e the positioning +# request is compared directly to each calibration request. +#radar-average-reference-points = false + [output] # This is the default output if none is specified. diff --git a/owlps-positioning/src/radar.cc b/owlps-positioning/src/radar.cc index 2584204..9c33539 100644 --- a/owlps-positioning/src/radar.cc +++ b/owlps-positioning/src/radar.cc @@ -1,9 +1,16 @@ #include "radar.hh" #include "stock.hh" +#include "configuration.hh" const ReferencePoint& RADAR::select_point(const Request &request) { - return Stock::closest_reference_point(request) ; + if (Configuration::bool_value( + "positioning.radar-average-reference-points")) + return Stock::closest_reference_point(request) ; + + const CalibrationRequest &cr = + Stock::closest_calibration_request(request) ; + return *cr.get_reference_point() ; } diff --git a/owlps-positioning/src/userinterface.cc b/owlps-positioning/src/userinterface.cc index f6e5d7f..1d76b40 100644 --- a/owlps-positioning/src/userinterface.cc +++ b/owlps-positioning/src/userinterface.cc @@ -178,6 +178,13 @@ method (string format: \"X;Y;Z\").") ("positioning.minmax-stop", po::value(), "Coordinates of the stop point of the MinMax multilateration \ method (string format: \"X;Y;Z\").") + ("positioning.radar-average-reference-points", + po::value()->default_value(false), + "With the RADAR algorithm, for a given positioning request, average" + " all the calibration requests associated with a reference point" + " before to compute the SS distance." + " The default is false, i.e the positioning request is compared" + " directly to each calibration request.") ; file_options->add(options) ;