Tutoriel sur le système collaboratif FoxyTag pour signaler les radars

Michel Deriaz

Présentation de FoxyTag ♪

- Titre : Tutoriel sur le système collaboratif FoxyTag pour signaler les radars

- Auteur : Michel Deriaz

- Parution : 7 mars 2008

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2008 Michel Deriaz. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- 1. Présentation

- 2. Fonctionnement

- 3. Réseaux de confiance

- 4. Les tags postés sur les radars communiquent entre eux

- 5. Collaboratif pour tous : Développeurs bienvenus!

- 6. Tout est Java dans FoxyTag

- 7. Téléchargement

- 8. Remerciements

1 - Présentation

FoxyTag est un système collaboratif, gratuit et légal pour signaler les radars sur téléphones mobiles. Le principe consiste à poser des tags virtuels à proximité des radars afin de signaler leur présence aux autres utilisateurs. Ceux-ci recevront alors une alarme lorsqu'ils seront à moins de 15 secondes de l'endroit critique, et un point rouge localisant le radar apparaîtra sur leur écran. Un utilisateur signale un radar fixe en pressant sur la touche "1" de son téléphone, un radar mobile avec la touche "2" et il signale qu'un radar a disparu (il reçoit une alarme mais ne voit pas de radar sur la route) en pressant sur la touche "0". Les utilisateurs sont également invités à signaler des radars déjà signalés; en confirmant leur présence, ils créent des liens de confiance avec les autres utilisateurs et reçoivent en contrepartie des informations plus fiables. Le système exclut par ailleurs automatiquement les utilisateurs qui ne "votent pas comme les autres". Plus un utilisateur participe, plus il bénéficie d'informations de qualité. C'est pour ça que FoxyTag est dit "collaboratif". Les tags postés par FoxyTag sont directionnels. Ainsi les tags posés à l'attention des usagers roulant dans la direction opposée ne seront pas signalés.

FoxyTag n'encourage en aucun cas les excès de vitesse ni tout autre comportement à risque. FoxyTag permet aux conducteurs de se concentrer sur la route plutôt que d'avoir les yeux rivés sur le compteur de vitesse, par peur d'être flashé. On observe que les gens ont tendance à freiner brusquement lorsqu'ils voient un radar (même s'ils ne font pas d'excès de vitesse) ce qui peut créer par effet domino de forts ralentissements, voir même des accidents. FoxyTag permet d'avertir à temps le conducteur lorsqu'il approche un radar, lui permettant ainsi de tranquillement vérifier sa vitesse et l'adapter si nécessaire.

FoxyTag est et restera gratuit; il sert de laboratoire de test pour des recherches scientifiques menées par Michel Deriaz à l'Université de Genève.

L'ensemble des radars fixes postés en Europe par des foxytagueurs peut être visualisé sur une carte disponible à http://www.foxytag.com/fr/map.html.

Les radars fixes dans Paris, capture faite le 4 mars 2008

2 - Fonctionnement

FoxyTag est une application Java qui fonctionne sur téléphone mobile. Soit elle se connecte au GPS interne si le téléphone en est équipé, soit elle ouvre une connexion Bluetooth afin de se connecter à un GPS externe. Une fois sa position connue, l'application se connecte alors toutes les 5 minutes au serveur FoxyTag afin de télécharger la liste des radars que l'utilisateur est susceptible de croiser, en fonction de sa position actuelle et de ses derniers déplacements. L'algorithme qui calcule la liste des tags à télécharger permet ainsi de minimiser les coûts de téléchargement (les coûts sont de lors de quelques centimes par heure), d'avoir toujours des données à jour, et même de protéger la sphère privée des utilisateurs (c'est l'application mobile qui calcule la zone dans laquelle elle souhaite obtenir des tags, le serveur connaît donc la position de l'utilisateur avec une précision de seulement 7.5 km, soit le rayon utilisé lors d'une demande de tags).

La liste des téléphones et des GPS Bluetooth compatibles est disponible à http://www.foxytag.com/fr/mobilesgps.html.

3 - Réseaux de confiance

Le modèle est relativement simple : chaque utilisateur garde une liste de liens de confiance et chaque tag garde un historique de ses dernières transactions. Ainsi, lorsqu'un utilisateur poste un nouveau tag ou demande la suppression d'un tag existant, cette information est enregistrée dans l'historique du tag. De plus, l'utilisateur met à jour ses liens de confiance en augmentant la valeur de ceux qui ont voté comme lui et en diminuant la valeur de confiance de ceux qui ont voté différemment. Ces liens de confiance sont alors utilisés lorsque l'utilisateur demande une série de tags : le moteur de confiance va analyser l'historique de chaque tag et retourner uniquement ceux qui sont pertinents pour le demandeur, c'est-à-dire ceux qui ont été postés ou confirmés par des gens fiables aux yeux du demandeur. Pour savoir si un utilisateur est fiable, le demandeur va combiner sa propre opinion (basé sur sa liste de liens de confiance) avec celle de ses amis (les gens en qui il a confiance), qui vont eux aussi demander à leurs propres amis et ainsi de suite jusqu'à avoir une bonne idée sur la pertinence du tag. Ce mécanisme permet ainsi de faire confiance à des gens même si l'on n'a pas eu d'interaction directe avec eux auparavant. D'autres informations sur les réseaux de confiances peuvent être obtenues dans la FAQ de FoxyTag, disponible à http://www.foxytag.com/fr/faq.html.

4 - Les tags postés sur les radars communiquent entre eux

De même que les utilisateurs, les tags postés sur les radars sont également des éléments actifs. Leur rôle consiste bien sûr à signaler les radars, mais également à s'assurer de la bonne marche du système. Car contrairement à des systèmes concurrents, FoxyTag est autogéré; il se charge lui-même d'exclure d'éventuels spammeurs ou autres tricheurs essayant d'effacer de véritables tags. Ainsi, les tags s'échangent par exemple des informations sur les positions des utilisateurs; un utilisateur qui poste un premier tag à Paris et un deuxième à Londres une demi-heure plus tard est suspect... De même, lorsqu'un tag aperçoit une opération douteuse, comme quelqu'un qui essaierait de l'effacer alors que des dizaines de personnes l'ont confirmé durant des mois, il va se renseigner auprès d'autres tags pour savoir si cet utilisateur est également intervenu auprès d'eux.

5 - Collaboratif pour tous : Développeurs bienvenus!

FoxyTag n'est pas seulement un système collaboratif pour ses utilisateurs, il l'est également pour d'autres personnes souhaitant y contribuer. Parmi elles, il y a les traducteurs, mais également les développeurs : L'API du serveur de FoxyTag est mise à disposition de toute application qui apporte une contribution au système. Ainsi, on trouve actuellement (mars 2008) le leader suédois speedcams.se ainsi qu'un autre projet pour téléphone mobile appelé TrackerTag qui utilisent et contribuent à la base de données de FoxyTag.

6 - Tout est Java dans FoxyTag

Tout est en Java dans FoxyTag! Le serveur est une Servlet (J2EE) qui appelle des moteurs de confiance écrits en Java standard (J2SE). L'application mobile est en Java Micro Edition (J2ME), elle utilise MIDP 2.0 et CLDC 1.1 ainsi que la librairie JSR82 (Bluetooth) afin de se connecter à un GPS externe (lorsque le mobile n'en possède pas déjà un en interne). La communication entre le client et le serveur se fait par des requêtes HTTP.

La question de développeur qui revient le plus souvent lorsqu'on parle d'applications mobiles connectées à un GPS externe, est justement comment faire cette connexion? Il existe un certain nombre de solutions payantes qui vous livrent directement les données sous forme "exploitables" (latitude, longitude, vitesse...), mais dans la plupart des cas, quelques lignes de codes suffisent pour récupérer les données essentielles. Ainsi, pour se connecter à un GPS Bluetooth depuis un mobile, on peut simplement ouvrir une connexion avec :

StreamConnection sc = (StreamConnection)Connector.open(url);

Puis dire au GPS quel type de trames NMEA nous souhaitons recevoir, par exemple des trames RMC et GGA :

OutputStreamWriter osw = new OutputStreamWriter(sc.openOutputStream());
osw.write("$PSRF103,04,00,01,01*21\r\n"); // 1 RMC sentence per second
osw.write("$PSRF103,00,00,01,01*25\r\n"); // 1 GGA sentence per second
osw.flush();

Et finalement on peut lire les données avec un InputStream "classique" :

InputStream is = sc.openInputStream();
char c = (char)is.read();

On récupère alors des trames selon le format NMEA et il reste plus qu'à "piocher" dans ces trames les informations souhaitées.

7 - Téléchargement

Merci à eric190 pour sa relecture orthographique.

FoxyTag peut être téléchargé directement sur le site de l'éditeur : http://www.foxytag.com.

8 - Remerciements

Merci à eric190 pour sa relecture orthographique.