From 507072bd249ac103905e1a7c6ed13b7df54950af Mon Sep 17 00:00:00 2001 From: Matteo Cypriani Date: Tue, 7 Jun 2011 21:35:24 +0200 Subject: [PATCH] [Positioning] Option radar-average-reference-points For RADAR, the default is now to compare the current positioning request to each stored CalibrationRequest instead of each ReferencePoint (averaging the calibration requests associated with the reference point). The new option --positioning.radar-average-reference-points allows to activate the old behaviour (compare to reference points). Note: the bug fixed in the previous commit caused the creation of a ReferencePoint for each CalibrationRequest, implying the 'new' default behaviour (one ReferencePoint was associated to only one CalibrationRequest, so comparing each ReferencePoint or each CalibrationRequest was giving the same result). Anyway, there was (hopefully) no such bug in OwlPS v0.8, so it is actually the old behaviour :-) --- owlps-positioning/cfg/owlps-positioning.cfg | 6 ++++++ owlps-positioning/src/radar.cc | 9 ++++++++- owlps-positioning/src/userinterface.cc | 7 +++++++ 3 files changed, 21 insertions(+), 1 deletion(-) 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) ;