Commit Graph

739 Commits

Author SHA1 Message Date
Matteo Cypriani 00613d8524 Update TODO 2012-05-02 17:32:01 +02:00
Matteo Cypriani 38f34a693a [Positioner] s/level/floor/ 2012-05-02 17:32:01 +02:00
Matteo Cypriani d2f40bb49e [Positioner] Autocalibration: compute origin angle
The angle P-RX-O (formerly named angle_p) was left uninitialised. This
is fixed, and the variable was renamed origin_angle.
2012-05-02 17:32:01 +02:00
Matteo Cypriani efba4fa09b [Positioner] Fix Autocalibration::sort_reference_aps()
Fix the angle calculation in sort_reference_aps() and better comment the
code.
2012-05-02 17:32:00 +02:00
Matteo Cypriani c51d9c1c12 [Positioner] Autocalibration: fix reference angle 2012-05-02 17:32:00 +02:00
Matteo Cypriani 300c338023 [Positioner] Autocalibration: signed angles
This commit changes the way the APs are selected. Until now, the two
most acute angles were selected. Now, the angles are signed, i.e. we
differentiate the APs that are before the point to generate on the
trigonometric circle, and those that are after.

Some more refactoring was achieved, and some bugs fixed.
2012-05-02 17:32:00 +02:00
Matteo Cypriani 291ef457f5 [Positioner] Add Point3D::rotate_2d() 2012-05-02 17:32:00 +02:00
Matteo Cypriani 88a90a7abd [Positioner] Add PosUtil::deg2rad() 2012-05-02 17:32:00 +02:00
Matteo Cypriani 90fc329f82 [Positioner] Autocalibration: refactor generate_ss() 2012-05-02 17:32:00 +02:00
Matteo Cypriani 7a631e3962 [Positioner] Add class Autocalibration
The new class Autocalibration contains the code from the former huge
function Stock::generate_reference_point(). It is refactored a bit, but
still needs work. The function Stock::generate_reference_points() stays
in the Stock class for now.
2012-05-02 17:32:00 +02:00
Matteo Cypriani d479f9d080 [Positioner] posexcept: add autocalibration_error 2012-05-02 17:32:00 +02:00
Matteo Cypriani 579adbee1c [Positioner] Point3D: angle() becomes angle_2d() 2012-05-02 17:32:00 +02:00
Matteo Cypriani 8d4fa6883d [Positioner] Point3D: add square_distance_2d() 2012-05-02 17:32:00 +02:00
Matteo Cypriani 007594683c [Positioner] Point3D: delete unused distance()
Delete unused functions distance(x,y,z) and square_distance(x,y,z).
2012-05-02 17:32:00 +02:00
Matteo Cypriani 987773a4df [Positioner] s/multilateration/trilateration/
This fixes an old, forgotten, vocabulary mistake.
2012-05-02 17:32:00 +02:00
Matteo Cypriani 153d4c0ea6 [Positioner] Add similarity method "interval2" 2012-05-02 17:32:00 +02:00
Matteo Cypriani 54a387190f [Positioner] Add Measurement::nb_in_interval()
Refactor Measurement::similarity() thanks to this new function.
2012-05-02 17:32:00 +02:00
Matteo Cypriani 6a8d8ec3be [Positioner] Add PosUtil::is_in_interval() 2012-05-02 17:32:00 +02:00
Matteo Cypriani 1704ebc6b1 [Positioner] "similarity" instead of "distance"
Standardise the use of the term "similarity" instead of
"(ss_square_)distance" in the functions' and variables' names.
2012-05-02 17:32:00 +02:00
Matteo Cypriani 596c72b7a8 [Positioner] Option ss-similarity
The option positioning.ss-similarity introduced in this commit allows to
chose the desired algorithm to compare two measurements. One can chose
between the historical mean euclidean distance algorithm and the new
algorithm using the number of values within the interval
[mean-std.dev.;mean+std.dev.].
2012-05-02 17:32:00 +02:00
Matteo Cypriani ecedf307ef [Positioner] Request: fix nb_packets's type 2012-05-02 17:32:00 +02:00
Matteo Cypriani 60626196d5 [Positioner] Option generate-single-packet-RPs
The new option positioning.generate-single-packet-reference-points
allows either to generate one single packet in each generated reference
point, or try to match the real requests by generating packets
independently.
2012-05-02 17:32:00 +02:00
Matteo Cypriani 4c5ad300c3 [Positioner] Stock::generate_RP(): fix update mobile
In generate_reference_point(), update the mobile's attributes *before*
to test if the current AP should be skipped.
2012-05-02 17:32:00 +02:00
Matteo Cypriani fb9d2d0cef [Positioner] Stock::generate_RP(): cosmetic changes 2012-05-02 17:32:00 +02:00
Matteo Cypriani 833c647220 [Positioner] Add ReferencePoint::friis_idx(AP, pkt)
This function allows to get the Friis index for a single packet in a
measurement instead of for the whole measurement.
2012-05-02 17:32:00 +02:00
Matteo Cypriani f14c1de473 [Positioner] Add Measurement::get_ss(pkt_id) 2012-05-02 17:32:00 +02:00
Matteo Cypriani 2cc7f373dd [Positioner] Add Measurement::get_std_deviation() 2012-05-02 17:32:00 +02:00
Matteo Cypriani dad6e0aa11 [Positioner] Measurement::variance_square_distance() 2012-05-02 17:32:00 +02:00
Matteo Cypriani dcd902c9f0 [Positioner] Measurement: use floats, not doubles
Use floats variables for the average and variance.
2012-05-02 17:32:00 +02:00
Matteo Cypriani e687aac741 [Positioner] Fix PosUtil::ss_square_distance()
The returned distance is now "averaged" to take into account the number
of measurements in the lists. The former behaviour would lead two
couples of measurement lists with a different number of measurement to
have non-comparable distances.
2012-05-02 17:32:00 +02:00
Matteo Cypriani dc0e56c0ec [lib] Bump so version to 3.0 2012-05-02 17:32:00 +02:00
Matteo Cypriani 7de5499816 [Positioner] Measurement::get_ss_list_size() -> get_nb_ss() 2012-05-02 17:31:59 +02:00
Matteo Cypriani 24622e4c3a [Positioner] Measurement: compute the variance
The variance is now computed along with the average. Measurement has
three new attributes:
  - average_mw (average in mW),
  - variance,
  - variance_m2 (variable used for the variance calculation).
In addition, average_ss has been renamed average_dbm (ditto for its
getter).

The computation method of the average has been changed to allow the
computation of the variance simultaneously.
2012-05-02 17:31:59 +02:00
Matteo Cypriani 9f8c85d9c7 [lib] timestamp_now(): gettimeofday() if needed
Use gettimeofday() when clock_gettime() is not available.
2012-05-02 17:31:59 +02:00
Matteo Cypriani e98474e678 [Aggregator] Send the capture time to Positioner
The Aggregator now transmits the capture timestamp of each packet to the
positioning server. For now this timestamp is not stored, only displayed
(in verbose mode) when a request is received.
2012-05-02 17:31:49 +02:00
Matteo Cypriani b60d0d380f [Aggregator] Send the mobile's IP to Positioner
For now the positioning server only displays the mobile's IP address (in
verbose mode) and updates it in the stored Mobile.
2012-05-02 17:31:42 +02:00
Matteo Cypriani 94b9cf281f [Positioner] Autocalibration: handle levels
To generate the reference points, use only the APs at the same level as
the virtual mobile. This is very basic for now, please refer to the TODO
update for more details on what should be done.
2012-02-08 10:52:40 +01:00
Matteo Cypriani 055dca7711 [Positioner] Measurement: declare type pkt_id_t
Like ss_t, pkt_id_t is now declared in measurement.hh to help use the
same type everywhere for packet IDs.
2012-02-08 10:52:39 +01:00
Matteo Cypriani a3b8b90760 [Positioner] Add option positioning.smallest-ss
The smallest possible received SS is not hard coded into PosUtil any
more. The default value is now -99 dBm instead of -98.
2012-02-08 10:52:39 +01:00
Matteo Cypriani 427c88fd99 [Positioner] Autocalib.: weight angle/coverage
In Stock::generate_reference_point(), the coverage percentage is now
used along the angle to select the better APs.
2012-02-08 10:52:39 +01:00
Matteo Cypriani 5f26d7a28e [Positioner] AP::received_calibration…(): percents
AccessPoint::received_calibration_from_ap() now returns a percentage of
the received packets (instead of a boolean).
2012-02-08 10:52:39 +01:00
Matteo Cypriani a2629dd5a9 [Positioner] Fix Request::get_measurement(s)(mac)
Request::get_measurements(mac) is renamed Request::get_measurement(mac).
A Request can't store more than one measurement per AP, so it was a
mistake to return a vector. The new function returns a single pointer.
2012-02-08 10:52:39 +01:00
Matteo Cypriani 3cbe9c2df5 [Positioner] Option calibration-requests-timeout
Introduce the option positioning.calibration-requests-timeout, to avoid
keeping the old calibration requests.
2012-02-08 10:52:39 +01:00
Matteo Cypriani 7a6a85ad19 [Positioner] Add Configuration::uint_value() 2012-02-08 10:52:39 +01:00
Matteo Cypriani 35265e75c2 [Positioner] Timestamp: elapsed() & owl_timestamp()
New functions added in Timestamp:
  - elapsed()
  - elapsed(Timestamp)
  - operator owl_imestamp()
2012-02-08 10:52:39 +01:00
Matteo Cypriani 9c1fc429c9 [Positioner] Autocalibration: APs in coverage
In Stock::generate_reference_point(), we now select an AP only if it is
in coverage of the reference AP.
2012-02-08 10:52:39 +01:00
Matteo Cypriani d683c32ce5 [Positioner] Add Request::get_measurements(mac) 2012-02-08 10:52:39 +01:00
Matteo Cypriani 3b1bbb8b5c [Positioner] ReferencePoint::get_requests(mac) public
ReferencePoint::get_requests(mac_transmitter) is now public.
2012-02-08 10:52:39 +01:00
Matteo Cypriani 1533852a1f [Positioner] Handle the packet numbering
In Measurement, the SSs are now stored in a map (instead of a vector),
along with their packet IDs.
2012-02-08 10:52:39 +01:00
Matteo Cypriani 5ab5b4f22f [Aggregator] Handle the packet numbering 2012-02-08 10:52:39 +01:00