Il y a longtemps que j'avais envie d'un GPS pour palier à mon terrible sens de l'orientation et enfin cesser de me perdre. Il y a longtemps aussi que j'avais envie de coller ce type de dispositif sur le Zaurus sans jamais sauter le pas. Avec l'arrivée de l'U810 et les précieux conseils Orgoz, c'est maintenant chose faite. Reste maintenant à mettre tout cela en musique...
Je cherchais un récepteur bluetooth 100% fonctionnel sous Linux et Orgoz m'avait conseillé le Globalsat BT-338. Il est donc arrivé, 60€ et 2 jours plus tard. Et rien qu'au déballage il y avait de quoi être satisfait. Il est fournit avec une batterie Lithium-ions, un chargeur mural ET un chargeur allume-cigares. Le look est un peu moche mais l'interface est ultra simple : trois diodes (charge, localisation et bluetooth) et un unique bouton pour l'allumer et l'éteindre.
Mais l'aspect le plus intéressant est qu'il localise ses satellites très rapidement. Guère plus de 5 secondes dans mon cas, et en intérieur... En bref une bonne impression. Ne restait plus qu'à tester sous GNU/Linux.
La première chose à vérifier est bien évidement que le bluetooth fonctionne. Un simple /etc/init.d/bluetooth restart devrait faire l'affaire. Ensuite, allumez le BT-338 et lancez une détection :
Nous avons maintenant l'adresse de notre récepteur GPS. L'étape suivante consiste à lier ce receveur à un port de communication (rfcomm) qui est très semblable à un port série. Nous verrons plus tard comment automatiser tout cela mais pour l'instant il s'agit de test. Nous allons donc créer le lien à la main :
Voilà, le récepteur est lié au device /dev/rfcomm0 (de par le paramètre 0), sur le canal 1 qui est le canal standard du rfcomm. Maintenant ouvrons une autre console en root, et commençons par installer le démon chargé de lire les données en provenance du gps, gpsd.
L'avantage de ce démon est qui va permettre à plusieurs applications d'accéder en même temps aux données GPS en passant par le réseau. Il convient d'abord de l'installer, puis de le lancer en mode "non-démon" (pour les tests une fois encore) :
le -N empêche le passage en mode démon, et le -D 2 nous permet de voir ce qui se passe.
Maintenant il s'agit de lire les coordonnées émises par le boîtier. Dans un premier temps, nous allons utilisez le très simple gpsdrive. Dans la mesure où il utilise en standard gpsd, il n'y rien à faire d'autre que de le lancer dans une console, mais en tant qu'utilisateur sans privilèges cette fois :
Et là, si tout va bien, la console où vous avez lancé gpsd devrait se mettre à jacasser et sur l'écran de gpsdrive, vous devriez voir une croix à l'endroit où vous vous trouvez dans le monde ainsi que les coordonnées numériques dans la ligne de statut, en bas de l'écran.
Bon, étape suivante, automatiser tout cela. Pour commencer, nous allons paramétrer la pile bluetooth de sorte à ce que le device /dev/rfcomm0 soit systématiquement associé au récepteur GPS et qu'il soit ainsi créé automatiquement. Pour cela, il faut éditer le fichier /etc/bluetooth/rfcomm.conf :
Ceci fait, un redémarrage du service bluetooth s'impose (/etc/init.d/bluetooth restart).
Maintenant vous devriez avoir un device /dev/rfcomm0 même quant le récepteur est éteint. La tentative de connexion sera automatique lorsqu'un logiciel tenter d'y accéder.
Pour gpsd, étrangement il n'y a pas, du moins pour Mandriva, de script de démarrage. L'option prise par cette distribution semble être d'utiliser udev. Je n'ai rien contre cela sauf que cela se base sur le postulat que le kernel est au courrant de tout ce qui est connecté dynamiquement au système. C'est nickel pour un récepteur USB, mais pour un bluetooth, ça marche beaucoup moins bien vu qu'il n'y a pas de découverte dynamique. Ce n'est pas non plus très malin pour ceux qui utilisent un récepteur via le port RS232C.
Bref, nous en sommes donc quite à créer un petit script de lancement à la mano : /etc/init.d/gpsd
Pour que le tout soit lancé au démarrage, rendez le script exécutable (chmod +x /etc/init.d/gpsd) et lancez ensuite un chkconfig --add gpsd.
vous pouvez déjà tester en lançant à la main /etc/init.d/gpsd start et vérifier par un ps -edaf | grep gpsd que le process est bien là. Il suffit ensuite de démarrer gpsdrive pour vérifier que tout fonctionne. Normalement gpsd ne s'offusque pas que le récepteur soit arrêté puis rallumé.
Maintenant que tout fonctionne, il faudrait quelque chose de plus "velu" que gpsdrive. J'ai testé un certain nombre d'application mais deux projets m'ont semblés plus aboutis que les autres : Viking et NavIt.
Le premier est d'un concept assez intéressant, permettant d'ajouter des couches de calques les unes sur les autres. En commençant par la couche GPSLayer qui se connecte à gpsd et en finissant par MapLayer que l'on peut paramétrer pour aller directement chercher sur GoogleMap en vue carte ou satellite. C'est bien fait, rapide, facile à utiliser mais n'a qu'un seul problème chez moi, il ne lit pas correctement les coordonnées. J'ai peut être loupé une étape dans le paramétrage mais ce gentil logiciel a décidé de me coller au milieu de la luzerne, en plein champs. C'est très gentil de sa part mais pas très concordant avec ce que je vois de ma fenêtre. En pourtant GPSDrive, lui, me donne les bonnes coordonnées.
Mais mis à part ce "léger" problème qui devrait être réglé lorsque j'arriverais à attraper l'auteur sur iRC, l'outil me parait bien prometteur pour un type d'utilisateur tout particulier qui est la contribution au projet OpenStreeMap.
en effet, vicking permet de mémoriser les chemins parcourus et de les remonter sur le serveur OSM et ainsi améliorer cet génial système libre de cartographie. A tester donc, dés que je pourrais sortir de mon champ
Sinon, l'autre projet extrêmement prometteur est NavIt qui vise à fournir sous GNU/Linux un outil libre comparable aux logiciels du marché type "TomTom". Il dispose d'une vue 2D du plan de route, mais aussi d'une vue 3D exploitant OpenGL. Il calcule les itinéraires et est même capable de parler pour vous indiquer les directions.
Pour l'instant NavIt est au stade "béta" mais le concept marche déjà bien. Mais comme c'est encore expérimental, il vous faudra compiler vous-même votre version (en tout cas pour Mandriva). Cela se fait sans aucun problème mis à part pour la 3D. En effet, NavIt utilise QuesoGLC qui chez moi refuse catégoriquement de compiler pour motif de GLU absent alors que cette librairie et les includes qui vont avec sont bien là. Ce n'est pas bien grave, tout est indépendant et l'on peut compiler en n'utilisant pas la vue 3D.
Une fois compilé et installé, il vous faut un fichier de configuration. Pour cela créez le dossier ~/.navit et recopiez y le fichier le fichier navit.xml qui se trouve dans les sources.
Ensuite il suffit de taper navit pour que ce dernier se lance sans problèmes et récupère bien la bonne position via gpsd. Le problème est qu'il n'a en standard qu'une carte de l'Allemagne. Pour avoir quelque chose d'exploitable en france, la solution est d'utiliser OpenStreetMap. Pour cela :
Au bout d'un temps, vous devriez recevoir un fichier map.osm. Une fois ce fichier téléchargé, il faut le convertir au format NavIt :
La conversion terminée, éditez comme suit le fichier ~/.navit/navit.xml :
Faite attention à ne pas ajouter cela dans un mapset qui ne soit pas enabled. Vous pouvez si vous le désirez supprimer les autres map. Ensuite il suffit de relancer navit et si vos coordonnées GPS sont sur la carte que vous avez importer, votre localisation devrait se faire.
Il existe aussi une extraction automatique de la carte de l'hexagone disponible ici. Attention, le fichier compressé fait plus de 50mo.
NavIt est clairement en phase de développement mais dispose déjà des fonctions de base qui permettent de suivre un itinéraire sans encombres sous réserve que la carte soit complète. En région parisienne, OpenStreetMap est plutôt précis, maintenant je ne saurais dire ce qu'il en est ailleurs. Mais avec Viking, si chez vous il donne les bonne coordonnées, vous allez pouvoir aider ce projet à s'affiner. Une manière simple pour qui n'est pas développeur de participer à l'édifice libre.
Pour ce qui est du BT-338, il marche vraiment très bien. La capture des satellites est très rapide, il est détecté sans aucun problème et à chaud par le système, bref, un achat conseillé pour GNU/Linux.
- répondre
Orgoz , le 21 July, 2008 - 13:06Heureux d'avoir pu aider, surtout si tu es satisfait
Je t'invite à jeter un oeil à Mapper (http://wiki.openstreetmap.org/index.php/User:Onion/Mapper#Mapper). C'est un fork de Maemo-Mapper (pour système Maemo) mais qui doit tourner il me semble sous n'importe quelle machine avec GTK+.
- répondre
Dab, le 21 July, 2008 - 13:33Pour info: il semble que les cartes reiseplaner soit compatibles avec navit ( http://wiki.navit-project.org/index.php/European_maps )
- répondre
Ulhume, le 21 July, 2008 - 13:54@Dab yep j'avais vu cela, ça peux servir en cas d'urgence où OMS ne sait plus rien
@Orgoz Oui mais mapper n'affiche que des cartes si j'ai bien tout compris, il ne permet pas la navigation, non ?
- répondre
Orgoz , le 21 July, 2008 - 14:34Pour Mapper, vu qu'il s'agit d'un fork de Maemo-Mapper, il doit permettre le peu de navigation qu'offre Maemo-Mapper. C'est à dire :
- télécharger depuis Internet (via Google Maps) un itinéraire, et l'afficher sur la carte
- guider par écrit/oral pour suivre l'itinéraire, du genre "tourner a gauche au prochain carrefour" mais pas en proposant une vue en pseudo-3D comme les GPS du commerce
En fait, c'est plus de la navigation sur plan que de la navigation GPS telle qu'on la connait dans les commerces.
Mais à part maemo-mapper je n'ai pas testé trop Mapper donc je ne peux te dire. Je testerais sur Nokia N800 pour voir si ca n'a pas été supprimé lors du fork.
- répondre
Kagou , le 21 July, 2008 - 14:31Tu peux récupérer la carte OSM de la France ici :
http://hexagone.openstreetmap.fr/
- répondre
Ulhume, le 21 July, 2008 - 14:35@Kagou très sympa ça, je l'ajoute, merci !
- répondre
Guyou , le 23 July, 2008 - 09:19Salut,
Je suis un lecteur de ton blog et... un des développeurs principaux de Viking.
Je suis super heureux de voir que Viking apparait en short-list pour le choix d'un éditeur/visualiseur GPS.
Concernant IRC, c'est un canal de communication très très peu utilisé sur Viking. Je te conseille de passer par la mailing-list. Tu peux aussi m'envoyer un mail direct, mais c'est moins efficace : y' des gars très réactif sur la liste.
Pour info, on vient juste de sortir la 0.9.5 et la 0.9.6 va suivre dans la semaine (bug interface Google).
N'hésitez pas à rapporter vos bugs et vos suggestions (voire patches). Le développement est très ouvert.
Bonnes ballades.
- répondre
Guyou , le 23 July, 2008 - 09:20PS : il est pas Open-Id ready ton blog ? Il me semblait avoir découvert une présentation de OpenId ici même. Dommage, j'ai un avatar impersonnel.
- répondre
Ulhume, le 23 July, 2008 - 09:55@Guyou Ben je vais tester cette nouvelle version alors
Il régle le soucis de coordonnées que j'ai noté dans l'article (aka le bug de la luzerne ?
)
Pour ce qui est d'OpenID, le site est OpenID ready, mais il faut que tu te logges avec dessus. Il n'y a rien pour les commentaires anonymes à ce sujet pour Drupal. D'un point de vue général, le mode "anonyme" est un peu le point noir de Drupal.
Maintenant je doute que cela remonte un avatar, tu utilises quel serveur OpenID qui te permette de rentrer ce genre de données ?
- répondre
Guyou, le 23 July, 2008 - 10:47> Maintenant je doute que cela remonte un avatar, tu utilises quel serveur OpenID qui te permette de rentrer ce genre de données ?
En fait, je débute en openid. Longtemps après avoir lu ton article, j'ai activé la fonctionnalité OpenId sur un compte Yahoo. Et chez Yahoo, ils permettent de régler des avatars. Du coup, j'ai imaginé que cette info pouvait passer d'un site à l'autre.
- répondre
Ulhume, le 23 July, 2008 - 11:00Le problème est qu'OpenID est aussi jeune que la spec est bordélique. Y'a pas une implémentation qui couvre le même périmètre qu'une autre, quant elles ne sont pas carrément incompatibles. Prends Google par exemple qui sur son système de blog prend en charge l'OpenId, mais ne récupère rien, du coup ton psoeudo, c'est ton adresse openId. Et des exemples comme cela y'en a un paquet. En bref, j'ai des fois un peu peur que cette norme finisse à la trappe pour cause de spécifications difficile à décoder et d'implémentation peu sérieuses.
- répondre
Guyou, le 23 July, 2008 - 12:43@Ulhume Merci pour cet éclairage.
- répondre
Ulhume, le 24 July, 2008 - 13:20@Guyou de rien
Sinon, si tu veux, j'ai activé les gravatars.
Poster un nouveau commentaire