Commit Graph

228 Commits

Author SHA1 Message Date
Matteo Cypriani 2b1248fbec [Positioning] Add Stock::ap_exists() 2011-07-25 14:18:16 +02:00
Matteo Cypriani 68b97451aa [Positioning] Print new created APs when verbose 2011-07-25 14:18:16 +02:00
Matteo Cypriani 37997242c5 [Positioning] Uppercase all MAC addresses on input 2011-07-25 14:18:16 +02:00
Matteo Cypriani e9e8308a9c [Positioning] PosUtil: add string functions
Add PosUtil::to_upper(string) and PosUtil::assert_uppercase(string).
2011-07-25 14:18:16 +02:00
Matteo Cypriani 05859da49b [Positioning] Reorder 2 headers in stock.hh 2011-07-25 14:18:16 +02:00
Matteo Cypriani 0491fe0a62 [Positioning] Input: del RP's requests on new CR
When a new calibration request is received, all the calibration requests
of the corresponding reference point are now cleared prior to add the
new request.
We should probably use a timeout to delete only the old calibration
requests and keep the recent ones.
2011-07-25 14:18:16 +02:00
Matteo Cypriani b8bd2acf44 [Positioning] Add option accept-new-calibration-requests
The option positioning.accept-new-calibration-requests allows the
calibration requests sent during the positioning phase to be added to
the Stock. They are added to the calibration requests read by
InputDataReader during the start-up phase.
2011-07-25 14:18:16 +02:00
Matteo Cypriani 586cfdb77e [Positioning] Stock::store_calibration_request()
InputDataReader::stock_calibration_request() becomes
Stock::store_calibration_request(), so other classes can use it.
2011-07-25 14:18:16 +02:00
Matteo Cypriani de9513e4b4 [Positioning] Add option update-ap-coordinates-online
In InputUDPSocket, update the AP's coordinates when receiving a
calibration or autocalibration request that contains the coordinates.
This is done if the option positioning.update-ap-coordinates-online is
activated.
2011-07-25 14:18:16 +02:00
Matteo Cypriani 0dd57b8ea7 [Positioning] InputUDPSocket: use AP's coordinates
Use the transmitting AP's coordinates when receiving an autocalibration
request that does not contain the coordinates.
2011-07-25 14:18:16 +02:00
Matteo Cypriani 71784342e7 [Positioning] Add Stock::ap_matrix_get_ss()
Add double Stock::ap_matrix_get_ss(transmitter, receiver).
This is the first step to handle self-calibration in owlps-positioning.

The idea is to simulates a square matrix of the listeners, with the
transmitters in one dimension and the receivers in the other dimension.
matrix[transmitter][receiver] is the signal strength received by
'receiver' from 'transmitter'.
The purpose of Stock::ap_matrix_get_ss() is precisely to access the
entry matrix[transmitter][receiver].

Note that the access is read-only, as the pseudo-matrix is (or will be)
filled by the standard mechanism of (auto)calibration requests and
measurements stored in Stock.
2011-07-25 14:18:16 +02:00
Matteo Cypriani f84276d8d7 [Positioning] ReferencePoint::average_measurements()
Add double ReferencePoint::average_measurements(string mac_transmitter),
that allows to get the average of all the Measurements sent by a given
transmitter.

Add, as protected functions, get_all_measurements(string
mac_transmitter) and get_requests(string mac_transmitter), that do the
same as get_all_measurements(void) and get_requests(void), but filtering
on the transmitter of the packets.
2011-07-25 14:18:16 +02:00
Matteo Cypriani 88aaded78c [Positioning] Add Stock::get_reference_point() 2011-07-25 14:18:16 +02:00
Matteo Cypriani 032f4b8fa0 [Positioning] Doxyfile: change project's name
Change from "OWLPS Positioning" to "OwlPS Positioning".
2011-07-25 12:46:19 +02:00
Matteo Cypriani 8377b00905 [Positioning] Makefile: add -O2 2011-07-23 17:27:51 +02:00
Matteo Cypriani fc13bc296c [Positioning] Fix ReferencePoint::operator<<() 2011-07-22 11:36:05 +02:00
Matteo Cypriani cf7bcecd10 [Positioning] Input: delete unused header
The function add_request_to_stock() was declared in input.hh, but not
defined anywhere.
2011-07-22 11:11:26 +02:00
Matteo Cypriani 25c3f53983 [Point3D] Fix Doxygen warning with operator string 2011-07-18 13:38:29 +02:00
Matteo Cypriani c63da8bdfc [Positioning] InputDataReader: print nb requests
In verbose mode, display the number of calibration requests stored.
2011-06-29 10:56:08 +02:00
Matteo Cypriani 65487af736 [lib] Makefile: remove unneeded -lrt & -lm
-lrt is now added as needed in each module Makefile, but not directly in
the library. Furthermore, the Makefiles add -lrt only if the platform is
Linux.
2011-06-27 10:09:14 +02:00
Matteo Cypriani 7dade1c36b Makefiles: get rid of echo -e
Use one call to echo for each line, because the echo's -e option is not
standard.
2011-06-27 10:09:14 +02:00
Matteo Cypriani f54b0d11e1 Makefiles: remove -v incompatible with BSD commands
The -v 'verbose' switch of the standard commands (rm, cp, mkdir, etc.)
is not implemented in BSD versions of the commands, so we avoid using
it.
2011-06-27 10:09:14 +02:00
Matteo Cypriani 84ea723528 [Positioning] Direction: 0 is valid to construct
Accept 0 as a "valid" value for the constructor and operator=()
(constructing a Direction with 0 value was possible any way, using the
default constructor).
This fixes the reception of requests on UDP.
2011-06-24 16:48:55 +02:00
Matteo Cypriani 2ebb8c49bc [Positioning] *.hh: fix typos in comments 2011-06-20 12:11:20 +02:00
Matteo Cypriani 3b8121643b [Positioning] InputCSV: --verbose instead of #ifdef
Test if the verbose mode is activated instead of using #ifdef DEBUG.
2011-06-16 14:21:12 +02:00
Matteo Cypriani 67ccf674a5 [Positioning] InputDataReader: print --verbose info
Display the number of elements read when the verbose mode is activated.
2011-06-16 14:10:43 +02:00
Matteo Cypriani abd4b0803e [Positioning] UserInterface: add --verbose option
Currently, --verbose / -v is only a switch. It would probably be better
to have a verbose level instead.
2011-06-16 13:46:21 +02:00
Matteo Cypriani 332881b305 [Positioning] Standardise InputCSV & InputUDPSocket 2011-06-16 13:13:13 +02:00
Matteo Cypriani cce949f32a [Positioning] Fix some Doxygen comments 2011-06-14 16:44:17 +02:00
Matteo Cypriani 48fa965c54 [Positioning] UserInterface: reformat strings 2011-06-08 19:05:48 +02:00
Matteo Cypriani 3ac6b440e4 Update TODOs 2011-06-08 10:56:14 +02:00
Matteo Cypriani 507072bd24 [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 :-)
2011-06-08 10:25:38 +02:00
Matteo Cypriani d322221d21 [Positioning] Stock: fix ReferencePoint creation
For each calibration request read, a new ReferencePoint was created in
Stock. This is because of the behaviour of unordered_set: as pertaining
to unordered_set, two elements are not considered equal if the hashes
alone are identical, they must also be actually equal (operator==).

The problem was fixed by using a custom equality check function that
checks the equality only on the coordinates of the ReferencePoint (as if
it was a Point3D).
2011-06-07 18:48:33 +02:00
Matteo Cypriani a39e06cf19 [Positioning] Stock::closest_calibration_request()
Add CalibrationRequest Stock::closest_calibration_request(Request).
2011-05-13 10:51:52 +02:00
Matteo Cypriani 920e4491ef [Positioning] Stock: s/look for/search for/ 2011-05-13 10:51:52 +02:00
Matteo Cypriani 3aae38c409 [Positioning] Add Request::ss_square_distance() 2011-05-13 10:51:52 +02:00
Matteo Cypriani c525372ed3 [Positioning] Some ReferencePoint code -> PosUtil
ReferencePoint::complete_with_dummy_measurements(
  map<string, Measurement>,
  map<string, Measurement>)
becomes PosUtil::complete_with_dummy_measurements(
  unordered_map<string, Measurement>,
  unordered_map<string, Measurement>)

ReferencePoint::compute_ss_square_distance(
  map<string, Measurement>,
  map<string, Measurement>)
becomes PosUtil::ss_square_distance(
  unordered_map<string, Measurement>,
  unordered_map<string, Measurement>)

map<string, Measurement> ReferencePoint::get_all_measurements_sorted()
is now private, returns an unordered_map instead of a map, and is
renamed ReferencePoint::get_all_measurements().

Note that we now use unordered_maps for these functions. The use of
sorted lists (maps) was useless, as stated in the commit message of
e9eab687 (Wed Jun 2 12:37:43 2010 +0200).
2011-05-13 10:51:52 +02:00
Matteo Cypriani d71bbcf2b8 [Positioning] PosUtil: use channels from owlps.h
Use channel frequencies declared in owlps.h.
Handle frequencies in MHz as well as channel numbers and frequencies in
Hz.
2011-05-13 10:51:52 +02:00
Matteo Cypriani d285d2b4b7 [Positioning] UserInterface: catch by reference 2011-05-13 10:51:52 +02:00
Matteo Cypriani fac5af8655 [Positioning] Fix Measurement::operator bool()
Use !ss.list.empty() instead of ss_list.size() > 0.
2011-05-13 10:51:52 +02:00
Matteo Cypriani 799af46e57 [Positioning] Result: fix operator=() & ==() 2011-05-13 10:51:52 +02:00
Matteo Cypriani 506917b5ec [Positioning] Compute the error if Real is used
If the pseudo-algorithm Real is used, the distance error is computed for
the others algorithms.
2011-05-05 13:22:33 +02:00
Matteo Cypriani 0eef6e8577 [Positioning] RealPosition: handle non-calib. requests
RealPosition is now able to return a relevant result when called with
non-calibration requests.
2011-05-05 13:22:33 +02:00
Matteo Cypriani 17e12a9735 [Positioning] Input*: initialise real_position
When provided for non-calibration requests, the real position is
initialised.
2011-05-05 13:22:33 +02:00
Matteo Cypriani 00bbc9c49d [Positioning] Add Request::real_position 2011-05-05 13:22:33 +02:00
Matteo Cypriani 1bb589b460 [Positioning] Add Point3D::operator bool() 2011-05-05 13:22:33 +02:00
Matteo Cypriani 6c3647410d [Positioning] Result: compute error if possible
If the real coordinates are passed to the constructor, the distance
error is computed. One can also use Result::compute_error() on a
constructed object.
2011-05-05 13:22:33 +02:00
Matteo Cypriani 2d2b49947a [Positioning] Add PositioningAlgorithm::get_name() 2011-05-05 13:22:32 +02:00
Matteo Cypriani bd992f28ed [Positioning] "Null" is a false friend 2011-05-05 13:22:32 +02:00
Matteo Cypriani e067efb42a [Positioning] Doxyfile: use $OWLPS_VERSION 2011-05-05 13:22:32 +02:00