Owl Positioning System: a Wi-Fi-based, infrastructure-centred indoor positioning system. http://owlps.pu-pm.univ-fcomte.fr/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

535 lines
24 KiB

  1. This file is automatically generated from the Git tag messages.
  2. v1.3.5 OwlPS, version 1.3.5 (development point release)
  3. This release features the usual refactoring and code cleaning, fixes and
  4. improves the build system (the manual pages are now installed), and also
  5. brings some more important changes listed below.
  6. The scripts/ directory was added with two Perl scripts and two Perl
  7. modules that were formerly developed in another repository:
  8. - OwlPS AggCheck (owlps-aggcheck.pl), that allows one to analyse an
  9. aggregation file in various ways: print human-readable information,
  10. extract signal strength distribution, or extract the number of packets
  11. per request and per capture point.
  12. - OwlPS AggSetCoord (owlps-aggsetcoord.pl), that can be used to fill an
  13. aggregation CSV file with coordinates, either statically or by
  14. interpolation of existing coordinates. It uses the following two
  15. modules.
  16. - The OwlPS::CSV module, that provides functions to deal with the CSV
  17. format used in OwlPS.
  18. - The OwlPS::TimeInterpolation module, that provides function to
  19. interpolate timestamped coordinates.
  20. Documentation:
  21. - New manual page owlps-aggregatord(1).
  22. - New manual page owlps-positionerd(1).
  23. - New manual page owlps-udp-to-http(1).
  24. - A bunch of figures where added.
  25. - Perl files from the scripts/ directory are documented with POD and man
  26. pages are generated directly from the source files.
  27. API changes:
  28. - libowlps: the synopsis of owl_create_udp_trx_socket() has changed
  29. (deletion of the client_description argument).
  30. - libowlps-client: the synopsis of owl_create_trx_socket(),
  31. owl_send_request() and owl_send_packet() has changed (struct sockaddr
  32. instead of struct sockaddr_in).
  33. - libowlps-resultreader: struct _owl_result.mobile_mac_addr is now a
  34. static buffer instead of a dynamically allocated string.
  35. OwlPS Client:
  36. - -F now supports either an inter-transmission delay (old behaviour) or
  37. a delay between the start of two transmissions.
  38. OwlPS UDP-to-HTTP:
  39. - The error code when no results are stored has been changed
  40. ("NoResults" instead of "NoResult").
  41. - Command-line options are now handled:
  42. - -h and -V for help and version messages
  43. - -v and -q for verbose and quiet modes
  44. - -l and -t to set the port numbers
  45. All the modules are now able to deal with host names and not only IP
  46. addresses.
  47. v1.3.4 OwlPS, version 1.3.4 (development point release)
  48. This is again a big release in terms of number of commits. Many of these
  49. commits are code cleaning, refactoring, and other invisible
  50. improvements, but there are also a number of noticeable changes, and
  51. especially two major ones.
  52. First of all, this release could be called "mine-ready OwlPS". Indeed,
  53. the most important change is the new autocalibration method in OwlPS
  54. Positioner that allows to generate reference points along a path defined
  55. in the configuration, which enables self-calibrated positioning in a
  56. network of tunnels.
  57. The other important change is that the aggregation CSV format is now
  58. versionned. The first field OwlPS Aggregator's CSV output files is now
  59. an unsigned integer that defines the version of the CSV format used. The
  60. format was otherwise untouched, and this version has number 1. An
  61. aggregation file generated with a previous version can therefore still
  62. be used by adding "1;" at the beginning of each line.
  63. A summary of all the noticeable changes since 1.3.3 follows.
  64. Documentation:
  65. - CMake rules were added to handle the documentation; manual pages are
  66. now generated in the man/ directory under the build tree.
  67. - Doxygen is now used to generate manual pages from the libraries' code.
  68. - The manual page owlps-client(1) is now complete.
  69. - New manual page owlps-listenerd(1).
  70. - New manual page owlps-deployment(7).
  71. - Some improvements in other existing manual pages.
  72. libowlps API change:
  73. - To be consistent, every reference to an "Access Point" has been
  74. changed to "Capture Point"; the only visible change is that all the
  75. structures that contained a field named "ap_mac_addr_bytes" now
  76. contain a field "cp_mac_addr_bytes" instead.
  77. OwlPS Client:
  78. - New options verbose (-v) and quiet (-q).
  79. OwlPS Listener:
  80. - New option -G to dump the current configuration on the standard output
  81. and exit.
  82. - Now builds on *BSD (compilation tested on NetBSD, OpenBSD and
  83. DragonFly).
  84. OwlPS Aggregator:
  85. - New option -G (same as for Listener).
  86. - New option -F to not flush the output.
  87. - Option -o is now optional, and the default output file is the standard
  88. output.
  89. - When exiting, the requests in memory are output instead of being
  90. deleted.
  91. OwlPS Positioner:
  92. - Should now build with clang++.
  93. - Now requires to be linked against libclaw_tween.
  94. - The unit tests were brought back to live, although they are very
  95. incomplete.
  96. - A new autocalibration method was implemented, that allows to generate
  97. reference points along a path instead of a meshing of reference
  98. points. The behaviour of the positioning.generate-reference-points
  99. option was changed, and two new options were added:
  100. positioning.generated-line-path and positioning.generated-line-step.
  101. v1.3.3 OwlPS, version 1.3.3 (development point release)
  102. We've got a real build system, and that's worth a point release!
  103. OwlPS has abandoned without any regret its old set of custom Makefiles,
  104. and is now using CMake. Dependency checks, improved maintainability,
  105. portability and (hopefully) readability: long story short, it's a great
  106. improvement.
  107. This is a big release in terms of number of commits, though not that
  108. much in terms of features. The important changes since v1.3.2 follow.
  109. Some initial work has been done on the documentation:
  110. - README.t2t is an entry point that directs the reader to other
  111. documentation files.
  112. - INSTALL.t2t is a guide on how to build and install OwlPS.
  113. - The doc/ directory contains other txt2tags files that can be built as
  114. man pages. Beside the owlps(7) and owlps-architecture(7) pages, only
  115. OwlPS Client has a man page (owlps-client(1)), so there is still some
  116. work to do in this area.
  117. libowlps API changes:
  118. - Doesn't define the owl_bool type any more, we are now using stdbool.h.
  119. OwlPS Listener:
  120. - Can now read packets from a pcap file instead of a capture interface,
  121. which is useful for testing (option -R).
  122. - The radiotap parser code has been cleaned and two non-trivial bugs
  123. were fixed: the alignment of the radiotap fields is now handled
  124. correctly, and the signal strength (Antenna Signal) is now stored as a
  125. signed 8-bit value instead of an unsigned one (which was problematic
  126. only with positive signal strengths).
  127. OwlPS Positioner:
  128. - Now requires GCC 4.7 with C++11 enabled.
  129. - New option positioning.generated-points-list, which allows to generate
  130. a pre-determined list of reference points instead of a regular
  131. meshing. The positioning.generate-reference-points option is now a
  132. string with values "false" (autocalibration deactivated), "mesh" (to
  133. generate a meshing, old default for "true"), "list" (to generate only
  134. a list of reference point") or "both" (combination of "mesh" and
  135. "list").
  136. v1.3.2 OwlPS, version 1.3.2 (development point release)
  137. This is the last release "made in Université de Franche-Comté" by Matteo
  138. Cypriani (or to be more precise, as an employee of the University). It
  139. is also the first public release.
  140. Due to the fact that it is a "time-based" release, it does not
  141. correspond to a particular important change, but here are the major
  142. modifications since v1.3.1:
  143. - OwlPS Positioner can now compute the error in two dimension by setting
  144. the option output.2d-error.
  145. - One can now specify the number of requests OwlPS Client will send (-N
  146. option).
  147. - libowlps: owl_timestamp_to_string() now always displays nanoseconds on
  148. 9 digits.
  149. - A bunch of bug and cosmetic fixes, mainly in OwlPS Positioner.
  150. v1.3.1 OwlPS, version 1.3.1 (development point release)
  151. This release features various important changes.
  152. First of all, we finally got rid of the OpenWrt-specific makefiles,
  153. and unified all the makefiles thanks to the new common files
  154. (common.mk and common-rules.mk). To compile for OpenWrt, one has to
  155. set the variable OPENWRT_VERSION (for example make
  156. OPENWRT_VERSION=10.03), or to use the main Makefile_atheros_openwrt.
  157. The format of the positioning requests has changed, and now includes
  158. padding bytes. OwlPS Client features a new option (-s) to set the size
  159. of the transmitted data.
  160. Major autocalibration bugs fixed in OwlPS Positioner:
  161. - Segfault with positioning.generate-reference-points.
  162. - Failed assertion with positioning.calibration-requests-timeout > 0.
  163. - Several problems preventing the generation of multi-packet reference
  164. points (positioning.generate-single-packet-reference-points=false).
  165. The Positioner option generate-single-packet-reference-points has been
  166. renamed generate-multi-packet-reference-points and the default is now
  167. to generate multi-packet reference points.
  168. Positioner now features the option replay (--replay on), which change
  169. the time-related behaviour, and is useful for the option
  170. positioning.calibration-requests-timeout: instead of computing the
  171. elapsed time with the current time on the machine running Positioner,
  172. we keep track of the most recent received request's timestamp, and use
  173. it as the current time. Unfortunately, this option is quite useless if
  174. the clock of the mobile terminals and listeners are not synchronised
  175. (actually if this is the case, one should run the server without
  176. enabling the replay mode, because this option could cause the deletion
  177. of non-obsolete calibration requests).
  178. Positioner now features the option
  179. positioning.unique-calibration-request. Thanks to this behaviour
  180. (which was already the default), it is not too annoying (at least when
  181. using autocalibration) that the replay option does not work without
  182. synchronised clocks.
  183. And last but not least, the OwlPS logo enters the repository.
  184. v1.3.0 OwlPS, version 1.3.0 (development point release)
  185. This is the first release of the development branch 1.3.
  186. The positioning requests now contain the total number of packets of
  187. the request, along with the current packet number (libowlps API
  188. change).
  189. This allows for the introduction of new similarity methods for
  190. cartography-based algorithms, based on the distribution of the SSs:
  191. - “interval” uses the number of values within the interval
  192. [mean-std.dev.;mean+std.dev.].
  193. - “interval2” computes the percent of packets in both the intervals
  194. [Im-0.674×Is, Im+0.674×Is] and [Im-Is, Im+Is], and selects the
  195. measurement which have the closest percentage of packets to the
  196. theoretical percentages of the two intervals (see
  197. owlps-positioner.conf for details).
  198. Autocalibration improvements:
  199. - Due to the availability of packet numbers, we are now able to
  200. generate multi-packet requests (which is required for the new
  201. similarity methods to work properly).
  202. - The APs are now selected not only by their angle, but also in
  203. function of the coverage with the receiver AP.
  204. - The APs are now selected with signed angles, which improves the
  205. selection in some cases. The minimum number of reference AP is
  206. lowered to one.
  207. - The building's floors are now handled (2.5-D positioning).
  208. New Positioner options:
  209. - positioning.calibration-requests-timeout: allows to delete old
  210. calibration requests.
  211. - positioning.generate-single-packet-reference-points: allows to
  212. choose between single and multi-packet reference points in the
  213. autocalibration.
  214. - positioning.generated-meshing-grain-z: vertical grain of the
  215. autocalibration meshing (should be 1 in most cases, as it is
  216. currently a floor number).
  217. - positioning.smallest-ss: allows to specify the smallest possible SS
  218. value received by the listeners.
  219. - positioning.ss-similarity: allows to choose the similarity method
  220. used.
  221. v1.2 OwlPS, version 1.2
  222. Changes since v1.1.8:
  223. - The Positioning module has been renamed Positioner, to be consistent
  224. with the other modules, and the executable file is owlps-positionerd.
  225. - Positioner: the RADAR algorithm is renamed NSS.
  226. - CLI option are standardised amongst all the modules (e.g. -i as
  227. destination IP).
  228. - A daemon mode has been implemented in Client, Listener and
  229. Aggregator (option -D).
  230. - All the requests (positioning, calibration, autocalibration) are now
  231. sent to the same port by default.
  232. - Two different ports are now used for autocalibration hello messages
  233. and autocalibration orders. This allows to run a listener and an
  234. aggregator on the same machine with the autocalibration enabled.
  235. - The default time-related values has been updated. By default the
  236. aggregator will not be able to fully aggregate calibration requests
  237. any more, only the positioning and autocalibration requests. In
  238. order to aggregate calibration requests, the aggregation timeout
  239. needs to be increased, or the number of packets of the request and
  240. the delay between each of them lowered.
  241. - Some bug fixes, minor improvements and cosmetic changes.
  242. Release notes:
  243. - Those programs are developped and tested on GNU/Linux. All the modules
  244. but the Listener (which is Linux-specific for the moment) also build
  245. on NetBSD, FreeBSD, OpenBSD and DragonFly BSD. The Positioner does not
  246. build with versions of GCC older than 4.4; for some reason, it also
  247. does not compile on DragonFly BSD with GCC 4.4.
  248. - The implicit mode is still an experimental feature. It is pretty much
  249. untested and needs to be redesigned properly.
  250. - The full changelog is long, please refer to the development point
  251. releases' changelogs to have an overview of the changes since v1.0.
  252. Long story short: autocalibration!
  253. v1.1.8 OwlPS, version 1.1.8 (development point release)
  254. Along with the usual bug fixes, minor improvements, and more or less
  255. important changes (listed below), two modules were added:
  256. - owlps-udp-to-http: a program that serves the results of OwlPS
  257. Positioning through HTTP.
  258. - libowlps-resultreader: a library that handles results sent by OwlPS
  259. Positioning (with its sample program owlps-resultreader-udp). It
  260. supports the previous new module OwlPS UDP-to-HTTP, as well as OwlPS
  261. Client (for the -l option).
  262. API changes:
  263. - libowlps:
  264. + Listener-specific code was moved into owlps-listener.
  266. + All the elements declared in owlps.h are now prefixed with "owl_".
  267. - libowlps-client: the functions are now prefixed with "owl_" instead of
  268. "owlclient_".
  269. OwlPS Positioning:
  270. - The options minmax-start and minmax stop are renamed area-start and
  271. area-stop.
  272. - FBCM did not work with autocalibration, this is fixed.
  273. - Fixed a segfault that occurred in certain circumstances with the
  274. option positioning.radar-ignore-ap-reference-points activated.
  275. - CSV format changes (CSV & UDP outputs):
  276. + Removed the useless "Error" string before the error field.
  277. + Added the area in which is the result for each algorithm.
  278. v1.1.7 OwlPS, version 1.1.7 (development point release)
  279. Finally the autocalibration is here! All the commits of this release are
  280. more or less related to the autocalibration development, in OwlPS
  281. Positioning. There is some work remaining, but this release features the
  282. main basis of the autocalibration.
  283. Most user visible changes: a lot of new options, including reading the
  284. mobiles' characteristics from a CSV file; see the sample configuration
  285. file for details.
  286. Note: this is the version used to participate at the EvAAL 2011
  287. competition, with the required post-competition cleaning.
  288. v1.1.6 OwlPS, version 1.1.6 (development point release)
  289. This release was developed in parallel with the autocalibration
  290. development branch, so it contains a relatively large amount of things
  291. (as usual, fixes, cleaning and a few new features).
  292. Here are the most noticeable changes introduced, module by module.
  293. Positioning:
  294. - The long-term, unnoticed, and hard to debug ReferencePoint creation
  295. bug was fixed, and
  296. - the option --radar-average-reference-points was added; the default is
  297. to keep the old bug's consequent behaviour, i.e to search for the
  298. nearest calibration request in SS instead of the nearest reference
  299. point, since it gives better results (for a calibration with several
  300. mobile's orientation).
  301. - The option --verbose was added.
  302. Aggregator:
  303. - Semaphores are now used to lock the lists of APs and requests.
  304. - The verbose mode was changed into a verbose level.
  305. - The -q (quiet) option was added.
  306. Listener:
  307. - The verbose mode was changed into a verbose level.
  308. Client:
  309. - The option -f (flood mode) was added, to allow the client to
  310. continuously send requests.
  311. Other changes:
  312. - libowlps, libowlps-client, owlps-client and owlps-aggregator now build
  313. on OpenBSD and DragonFlyBSD, thanks to some cleaning and fixes (mainly
  314. in the libraries and makefiles). Untested on FreeBSD and NetBSD, but
  315. it should work painlessly.
  316. - All the configurable delays are now in milliseconds or seconds (no
  317. more microseconds).
  318. - We finally deleted writeInDb, since it is useless for the moment.
  319. v1.1.5 OwlPS, version 1.1.5 (development point release)
  320. This small release includes the following changes:
  321. - Positioning computes the error for each algorithm when the
  322. pseudo-algorithm "Real" is used.
  323. That changes the results' CSV format (OutputCSV & OutputUDPSocket).
  324. - Positioning: add --minmax-start & --minmax-stop to limit the search
  325. space of MinMax.
  326. - Positioning's configuration files updated (they are now really example
  327. files).
  328. - Add -V to print the version, in each module.
  329. - A fair amount of bug fixes and small improvements.
  330. v1.1.4 OwlPS, version 1.1.4 (development point release)
  331. Here are the most noticeable changes for this release:
  332. - The request type and calibration data (position & direction) are now
  333. handled in all modules.
  334. - The listener can send its own position in autocalibration requests.
  335. - The OwlPS Positioning module:
  336. + handles SIGINT and SIGTERM to exit correctly;
  337. + adds the option flush-output-files;
  338. + includes the algorithm name in the result output;
  339. + writes all the results for a given request in a bunch;
  340. + accepts '-' as file names to read the standard input or write to the
  341. standard output;
  342. + sends the computed results by UDP (CSV string format); note that
  343. currently, the mobile cannot receive this format.
  344. - The last endianness issues have (hopefully) been fixed.
  345. - libowlps API change: constants for localisation request types
  346. (PACKET_TYPE_*) are now OWL_REQUEST_*; the global variable run is
  347. renamed owl_run; owl_request includes the position; float endianness
  348. conversion functions were added.
  349. v1.1.3 OwlPS, version 1.1.3 (development point release)
  350. We finally got rid of mobile-centred. The code is still in the memory
  351. of the VCS, of course, but we do not have time to bother maintaining
  352. it.
  353. owlps-positioning is now linked to libowlps, and is able to read
  354. aggregated requests sent by the aggregator via UDP, thanks to the new
  355. class InputUDPSocket. This exchange does not concern calibration nor
  356. autocalibration requests yet, since the aggregator do not send
  357. calibration data.
  358. As usual, this release includes some refactoring, code improvement,
  359. bug fixes and various minor new features. The most important code
  360. improvement concerns thread handling in the listener and the
  361. aggregator, that is now far cleaner.
  362. libowlps API changes: types are now all lowercase and prefixed,
  363. several new functions were added, and the behaviour of
  364. owl_mac_bytes_to_string() is changed.
  365. v1.1.2 OwlPS, version 1.1.2 (development point release)
  366. Note the new case of "OwlPS": Owl Positioning System should make
  367. easier to memorise "Open Wireless Positioning System".
  368. We are still on the way to autocalibration, and a lot of things were
  369. done since v1.1.1, mostly on libowlps and infrastructure-centred code.
  370. The emission of autocalibration requests by the listeners now works as
  371. intended. The code has been adapted to be able to work in a complex
  372. network configuration: multiple Wi-Fi modes (e.g. monitor, master and
  373. ad-hoc), multiple IP addresses, etc. Endianness issues have been
  374. addressed, and everything works well now.
  375. This release includes major library API changes: functions are now
  376. prefixed, several functions were renamed, and stdint types are used in
  377. custom types.
  378. The data format also changes: we now use nanosecond precision in all
  379. modules, via the new type TIMESTAMP which is inspired from the C++
  380. class Timestamp created for the Positioning module. Therefore, the
  381. timestamp field of the CSV outputs has a nanosecond precision, and its
  382. format is "seconds.nanoseconds".
  383. Finally, a lot of other less visible things were accomplished: bug
  384. fixes and improvements, code refactoring, new options, etc.
  385. v1.1.1 OWLPS, version 1.1.1 (development point release)
  386. We are on the way to autocalibration. The listeners can send Hello
  387. messages to the aggregator, which now handles a list of listeners and
  388. schedules autocalibration requests. Emission of autocalibration requests
  389. by the listeners has been worked on, but is very buggy at this time, and
  390. therefore not operational yet.
  391. v1.1.0 OWLPS, version 1.1.0 (development point release)
  392. Cleaning, refactoring, translation of comments from French to English,
  393. bug fixes and minor features. The only very noticeable thing is the
  394. creation of the libowlps-client library; it is to prepare the future
  395. ability of the listener to send autocalibration requests.
  396. v1.0 OWLPS, version 1.0
  397. Few changes are actually visible since version 0.8. This release is a
  398. new start for owlps-positioning, which was rewritten almost completely.
  399. Support for Viterbi-enabled algorithms has been dropped; this could be
  400. reintegrated someday, but it is not needed for our current researches,
  401. so it is not in the top-priority list.
  402. Extensive non-regression tests have not been conducted yet (we need to
  403. ensure that the results obtained with v1.0 are consistent with those
  404. obtained with v0.8).
  405. v0.9.0 OWLPS, version 0.9.0 (development point release)
  406. This release includes the internship work of Julien Graeffly (mostly on
  407. the positioning server), and some improvements (configuration file
  408. support, better handling of command-line options, Fonera compilation,
  409. passive mode, etc.).
  410. v0.8 OWLPS, version 0.8
  411. Version 0.8, as documented in the technical report "Open Wireless
  412. Positioning System, Version 0.8".
  413. v0.6 "OWLPS", version 0.6
  414. The system allows to perform infrastructure-based measurements.
  415. Computation has to be done manually.
  416. Note: at this time, the system was not called "OWLPS" yet.
  417. v0.4 "OWLPS", version 0.4
  418. First, early release of the student works TX (mobile-centred
  419. measurements) and TO (infrastructure-centred).