Navigation GPS pour vélomobile

Comme je l’expliquais par ailleurs, un smartphone permet de disposer d’un outil de navigation GPS dans le vélomobile.

Mais si les différentes applications GPS rivalisent entre elles pour apporter les fonctions de navigation aux automobilistes, les besoins des cyclistes restent relativement peu couverts, sans doute parce que ces applications sont difficilement utilisables en vélo, à moins de disposer d’un support de fixation spécifique installer le smartphone sur le vélo.

Comme on pourrait s’y attendre, aucune application ne permet de calculer les itinéraires adaptés au vélomobile. Les besoins sont spécifiques : le vélomobile n’emprunte pas les mêmes routes que la voiture, notamment en n’allant pas sur les autoroutes mais en étant autorisé sur les équipements cyclables. Les applications permettant le calcul d’itinéraire pour les vélos sont déjà mieux adaptées, mais ont trop tendance à faire faire des détours vers des routes à l’écart de la circulation, et sont beaucoup trop pessimistes sur l’estimation de l’heure d’arrivée.

Sur plateforme Android, il existe pléthore d’applications de navigation GPS, certaines libres, d’autres propriétaires, certaines fonctionnant sans connexion Internet et d’autres en ayant besoin, certaines basées sur la cartographie libre OpenStreetMap et d’autres sur des cartographies propriétaires. J’ai essayé plusieurs applications, et pour le vélomobile, j’ai finalement adopté l’application Navit. C’est une application libre, fonctionnant sans connexion Internet, et basée sur OpenStreetMap. Elle est installable depuis Google Play. Elle a une interface différente des applications Android standard, mais est facile d’utilisation.

Elle a surtout un énorme avantage, c’est qu’elle est entièrement configurable. Il est tout à fait possible de l’adapter au vélomobile, sans pour autant avoir à modifier le code source du logiciel. Plus bas j’explique en détail comment faire.

Cette application est aussi compatible avec l’utilisation d’un lecteur de musique. En particulier, les boutons de réglages du volume sonore continue à fonctionner pour régler le volume de la musique. On peut passer au lecteur de musique et revenir au logiciel de navigation GPS sans avoir perdu sa position GPS et son trajet (ce qui arrive avec d’autres logiciels).

Le résultat est vraiment sympathique, permettant d’avoir une interface de navigation simple et adaptée au vélomobile. Les itinéraires proposés sont pertinents pour le vélomobile, faisant passer par les pistes cyclables dès qu’elles sont disponibles, évitant les axes les plus dangereux, mais choisissant tout de même le trajet le plus rapide évitant de faire de gros détours par les routes les plus à l’écart de la circulation. Le calcul de l’heure d’arrivée est fiable en ce qui me concerne, puisque je l’ai réglé pour mon cas. Mais évidemment, il sera trop optimiste pour certains, et trop pessimiste pour d’autres.

Quelques copies d’écran sur mon Hero (affichage HVGA 320×480) :

 

Télécharger une carte

L’application permet également de sélectionner une zone de carte à télécharger, et ne charger que cette carte sur le terminal. C’est pratique si on veut dédier Navit à l’utilisation en vélomobile, et pour lequel on n’aura pas besoin de la carte du pays entier. Cela permet alors d’économiser de la place sur la carte mémoire du téléphone.

Il faut se rendre sur le site Planet Extractor, sélectionner la zone à télécharger, la récupérer et la stocker sur le mobile dans /sdcard/navit/navitmap.bin.

Configurer Navit

Le plus simple est de récupérer mon fichier de configuration, et de l’installer sur /sdcard/navit/navit.xml. Ce fichier fonctionne avec la version 0.5.0 de Navit.

L’affichage utilise les images déjà disponibles dans Navit, sauf les images 2D / 3D qu’il faut rajouter dans /sdcard/navit/.

Configuration manuelle

Sinon, il faut modifier la configuration d’origine de Navit. D’abord, il faut récupérer le fichier configuration  (/data/data/org.navitproject.navit/share/navit.xml), et le coller dans /sdcard/navit/navit.xml.

Dans ce fichier, pour activer le mode 3D par défaut, il faut modifier la balise « navit » pour spécifier les options « autozoom_active » et « pitch », comme ci-dessous :

    <navit center="4808 N 1134 E" zoom="32" autozoom_active="1" tracking="1" orientation="-1" recent_dest="10" pitch="25">

Pour modifier l’interface affichée, il faut remplacer les instructions « osd » par les suivantes:

        <!-- TOP -->
        <!-- Current speed -->
        <osd x="0" y="0" w="100" h="32" enabled="yes" type="text" label="${vehicle.position_speed[value]}" font_size="450" align="4" text_color="#FFFFFF" background_color="#00000000"/>
        <!-- Remaining distance, estimated time of arrival -->
        <osd x="-27"  y="5" w="22" h="22" enabled="yes" type="image" src="flag_bk_wh.png" osd_configuration="1" />
        <osd x="-232" y="0" w="200" h="32" font_size="320" type="text" label="${navigation.item.destination_length[named]} ${navigation.item.destination_time[arrival]}" osd_configuration="1" align="8" text_color="#FFFFFF" background_color="#00000000"/>
        <!-- Top bar background -->
        <osd x="0" y="0" w="800" h="32" font_size="400" type="text" label=" " background_color="#40404080" osd_configuration="1"/>

        <!--- ZOOM -->
        <osd x="-64" y="32" w="64" h="64" type="button" src="zoom_in_64_64.png"  command="zoom_in()"  osd_configuration="1"/>
        <osd x="-64" y="96" w="64" h="64" type="button" src="zoom_out_64_64.png" command="zoom_out()" osd_configuration="1"/>

        <!--- 2D/3D -->
        <osd x="0" y="32" w="64" h="64" name="button_3d" enabled="yes" type="button" src="/sdcard/navit/gui_2d_64_64.png" font_size="600" align="0" text_color="#606060" background_color="#00000000" command='
pitch=pitch==0?25:0;
osd[@name=="button_3d"].src = pitch==0?"/sdcard/navit/gui_3d_64_64.png":"/sdcard/navit/gui_2d_64_64.png";
' />

        <!-- BOTTOM -->
        <!-- Navigation + distance -->
        <osd x="0" y="-123" w="80" h="64" type="navigation_next_turn" icon_src="%s_wh_64_64.png" command="gui.setting_vehicle()" background_color="#40404060" osd_configuration="1"/>
        <osd x="0" y="-59" w="80" h="27" type="text" label="${navigation.item[1].length[named]}" font_size="350" align="0" command="gui.setting_vehicle()" background_color="#40404060" osd_configuration="1"/>
        <!-- Street name -->
        <osd x="0" y="-32" w="800" h="32" type="text" label="${tracking.item.street_name_systematic} ${tracking.item.street_name}" font_size="300" command="gui.town()" osd_configuration="1" align="4" background_color="#40404080"/>

Il faut ensuite rajouter la section suivante, qui définit les règles de calcul d’itinéraire pour le vélomobile. Il faut le mettre avant les autres sections « vehicleprofile », pour que le véhicule « velomobile » soit sélectionné par défaut.

        <!-- Vehicle : velomobile -->
        <vehicleprofile name="velomobile" flags="0x40000000" flags_forward_mask="0x40000000" flags_reverse_mask="0x40000001" maxspeed_handling="1" route_mode="0" static_speed="5" static_distance="25">
            <!-- pedestrian areas, OK at small speed -->
            <roadprofile item_types="street_pedestrian,footway" speed="5" route_weight="10">
                    <announcement level="0" distance_metric="25"/>
                    <announcement level="1" distance_metric="100"/>
                    <announcement level="2" distance_metric="200"/>
            </roadprofile>
            <!-- bad surfaces (ground, gravel) should be avoided -->
            <roadprofile item_types="path,track_ground,track_unpaved" speed="10" route_weight="10">
                    <announcement level="0" distance_metric="25"/>
                    <announcement level="1" distance_metric="100"/>
                    <announcement level="2" distance_metric="200"/>
            </roadprofile>
            <roadprofile item_types="track_gravelled" speed="20" route_weight="15">
                    <announcement level="0" distance_metric="25"/>
                    <announcement level="1" distance_metric="100"/>
                    <announcement level="2" distance_metric="200"/>
            </roadprofile>
            <!-- cycleways, paved tracks, serviceways etc. are welcome -->
            <roadprofile item_types="track_paved,cycleway,street_service,street_parking_lane" speed="25" route_weight="34">
                    <announcement level="0" distance_metric="25"/>
                    <announcement level="1" distance_metric="100"/>
                    <announcement level="2" distance_metric="200"/>
            </roadprofile>
            <!-- residential, unclassified, living street etc. -->
            <roadprofile item_types="street_0,street_1_city,living_street" speed="30" route_weight="30">
                    <announcement level="0" distance_metric="25"/>
                    <announcement level="1" distance_metric="100"/>
                    <announcement level="2" distance_metric="200"/>
            </roadprofile>
            <!-- tertiary and minor roads are allright for velomobiles -->
            <roadprofile item_types="street_2_city,street_1_land,street_2_land" speed="30" route_weight="30">
                    <announcement level="0" distance_metric="25"/>
                    <announcement level="1" distance_metric="100"/>
                    <announcement level="2" distance_metric="200"/>
            </roadprofile>
            <!-- secondary etc. are OK but less comfortable than tertiary for velomobiles -->
            <roadprofile item_types="street_3_city" speed="30" route_weight="26">
                    <announcement level="0" distance_metric="25"/>
                    <announcement level="1" distance_metric="100"/>
                    <announcement level="2" distance_metric="200"/>
            </roadprofile>
            <!-- primary, trunk etc. should be avoided -->
            <roadprofile item_types="street_4_city,ramp" speed="30" route_weight="22">
                    <announcement level="0" distance_metric="25"/>
                    <announcement level="1" distance_metric="100"/>
                    <announcement level="2" distance_metric="200"/>
            </roadprofile>
            <!-- Those types do not appear in maptool.c and therefore are not used ATM -->
            <roadprofile item_types="street_3_land,street_4_land" speed="30" route_weight="22">
                    <announcement level="0" distance_metric="25"/>
                    <announcement level="1" distance_metric="100"/>
                    <announcement level="2" distance_metric="200"/>
            </roadprofile>
            <roadprofile item_types="roundabout" speed="15" route_weight="15"/>
            <roadprofile item_types="ferry" speed="40" route_weight="40"/>
        </vehicleprofile>

Un peu plus loin, il faut modifier la section « navigation » pour spécifier les seuils d’annonces des changements de direction à 25m / 100m / 200m, qui conviennent bien au vélomobile :

        <navigation>
            <announce type="street_0,street_1_city" level0="25" level1="100" level2="200" unit="m"/>
            <announce type="street_2_city,street_3_city,street_4_city,ramp" level0="25" level1="100" level2="200" unit="m"/>
            <announce type="highway_city,street_1_land,street_2_land,street_3_land,street_4_land" level0="25" level1="100" level2="200" unit="m"/>
            <announce type="street_n_lanes,highway_land" level0="25" level1="100" level2="200" unit="m"/>
        </navigation>
Publicités

4 commentaires to “Navigation GPS pour vélomobile”

  1. Excellente ta config quant aux annonces rapproché à 25/ 100 /200 m .

    J’ai à peu près la même navigation que toi, sauf que l’heure ne correspond pas a mon vélomobile mais plutôt à mon vélo couché.
    de plus le calcul d’horaire, j’ai du mal à l’adapter au feu à répétition et aux pentes.

    J’ai aussi une navigation touriste qui permet de faire très peu de de route et passer uniquement par des chemins agréable.

    Coté affichage, ton OSD est pas mal du tout, je pense que je vais m’en inspirer pour le mien.
    Je fusionne tes bonnes idées avec ce que j’ai déjà et je rendrais le résultat public (probablement sur le forum ).

    • Pas mal l’idée d’une configuration « touristique ». Tant qu’à adapter Navit au vélomobile, c’est vrai qu’on peut prévoir plusieurs mode:
      – normal
      – touristique (éviter les grosses routes)
      – au plus court (y compris via les pires raccourcis cyclables)
      – au plus rapide (y compris via les pires routes fréquentées)
      J’attends ton retour d’idée sur le forum 😉

  2. Merci !! Cet article laisse présager que du bon !!
    Par contre j’ai quelques soucis, je n’arrive pas à télécharger ton fichier de configuration et je ne trouve pas le fichier par défaut ( il faut peut-être un téléphone rooté pour accéder au répertoire /data ??)

    • Oui, il faut probablement un téléphone rooté pour accéder au fichier par défaut. L’autre option est de télécharger le fichier apk, de l’ouvrir et de trouver le fichier de config, ce qui n’est pas si simple non plus.
      Pour le téléchargement du fichier de config, j’ai modifié le lien, ça devrait être mieux maintenant (même si j’ai dû vendre mon âme et utiliser W*rd).

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :