Contribuer à Mapillary en voyage

Il y a quelque temps, je préparais une petite semaine de vacances en Irlande. Au programme, un road trip sur une partie de la "Wild Atlantic Way" . Cela signifiait un peu plus de 1000km en voiture à un rythme de touriste, c'est à dire...lent. La situation était idéale pour prendre le maximum de photos pour Mapillary, et ainsi aider les mappeurs OpenStreetMap d'Irlande. Voici un retour de tout le processus.

Préparatifs :

  1. Le matériel nécessaire :
    • Un chiffon et du produit à vitre. Oui, prendre des photos en voiture avec un pare-brise sale, ça ne donne rien de bon.
    • Un Smartphone, en l'occurrence mon Motorola Moto X 16Gb (génération 2013). J'ai pensé à utiliser aussi mon vieux Xperia Ray pour prendre des photos latérales, mais la logistique devenait un peu trop lourde, et ma chérie n'aurait certainement pas accepté que la voiture se transforme en cockpit d'avion.
    • Un support pour le smartphone. Pendant plusieurs mois, j'avais utilisé celui offert par Mapillary, mais il avait tendance à laisser le téléphone vibrer, et je souhaitais un support qui puisse aussi venir se fixer sur un vélo. Dans ce but, j'ai investi dans un système RamMount, le X-Grip avec un bras de petite longueur, ainsi qu'un support pour guidon, et une ventouse pour la voiture. support_voiture.jpg support_velo.jpg
  2. Les logiciels :

    L'application nécessaire, et qui vient naturellement en tête est celle proposée par Mapillary pour Androïd, iOs, et Windows Phone. Mais elle a quelques inconvénients :

    • Les photos ne sont prises que toutes les 2 secondes, ce qui suffit pour rater des informations intéressantes lorsqu'on roule à plus de 50km/h
    • Avec mon téléphone, les photos sont prises au format 4/3 au lieu de 16/9, ce qui supprime une partie des informations latérales. Opencamera.jpg

      Ce qu'on pense photographier

      Mapillary.jpg

      Ce qu'on photographie réellement

    • Le réglage automatique de l'exposition se fait sur la prise de vue complète. Lorsqu'il n'y a pas énormément de contraste, ça ne pose pas de problème, mais dans le cas d'une route un peu ombragée, avec un ciel très lumineux, la partie de la photo qui nous intéresse se retrouve sous-exposée.

    L'appli que j'utilise le plus est OpenCamera. Elle résout tous les problèmes cités ci-dessus puisqu'on peut descendre l'intervalle entre les photos à 1 seconde, les photos sont au format maximum du capteur (16/9), et on peut spécifier que l'exposition se fera sur une zone en particuliers. En revanche, OpenCamera plante de manière aléatoire, tout peu se passer correctement pendant des heures, puis enchainer plusieurs blocages en l'espace de quelques minutes. A priori, le problème est lié à la localisation via le GPS. J'espère que ce bug sera corrigé.

  3. Le stockage

    J'avais estimé que je prendrais pour plus de 100Gb de photos. Le Moto X ne me proposant qu'environ 8Gb d'espace libre, il fallait que je trouve une solution pour tout stocker pendant le voyage. Puisqu'il était hors de question d'emporter un ordinateur portable, je me suis donc dirigé vers les câbles OTG.
    Ces câbles un peu particulier permettent de connecter un système de stockage externe (formaté en FAT32) à certains smartphones/tablettes Androïd.espace_stockage_otg.jpg J'avais quelques SSD à trainer, c'était l'idéal puisqu'ils sont insensibles aux chocs. En revanche, l'alimentation fournie par le smartphone vers le périphérique de stockage, est d'une intensité assez faible. Si elle était suffisante pour un ancien SSD Intel de 80Go, pour le second, de 120Go, j'ai du utiliser un boitier avec un câble Usb en 'Y' : Un connecteur vers le câble OTG, et l'autre vers une batterie externe. Finalement, les quelques jours de mauvais temps ont diminué le nombre de photos que j'ai pu prendre, et tout est rentré dans le SSD de 80Go. Depuis, j'ai perdu ce câble OTG, et l'ai remplacé par un autre modèle proposant directement un connecteur secondaire pour alimenter le support de stockage.Montage_cable_otg.jpg

Pendant le voyage :

Il faut penser à :

  • Nettoyer très régulièrement le pare-brise.
  • Transférer très régulièrement les photos vers le disque externe. Au bout d'environ 2h avec OpenCamera, mon smartphone était saturé.
  • Ne pas mettre d'objets sur la planche de bord, car ils se reflètent sur le pare-brise.reflet_pare-brise.jpg
  • Arrêter les prises de vue lorsque le soleil commence à descendre et qu'il est de face, les photos seraient inutilisables.

Retour :

  1. Tri :

    J'ai usé plusieurs soirées à passer toutes les photos en revu, presque 30000, pour supprimer celles qui étaient de mauvaise qualité - pluie sur le pare-brise, trop floues, ainsi que les doublons, car OpenCamera, contrairement à l'application Mapillary, ne se met pas en pause lorsqu'on stoppe la voiture.

  2. Upload :

    Après le tri des photos, c'est la partie la plus fatigante. J'adorerais une application qui permettrait de préparer l'envoi de toutes les séquences, puis de les envoyer en tâche de fond sans craindre les interruptions (coupure de connexion, déplacement de l'ordinateur d'un lieu à un autre), et de limiter le débit d'upload pour ne pas saturer la connexion adsl. En gros, tout ce que proposent les applications de peer to peer, mais non, pour le moment il faut se débrouiller avec 2 possibilités : Via le site web, ou bien à l'aide de scripts en python disponibles sur leur espace Github. J'ai commencé avec le site Web, mais les limites de cette solution m'ont vite arrêté :

    • L'envoi est limité à des groupes de quelques centaines de photos, sinon le navigateur web sature son espace mémoire, et plante. J'ai contourné ce problème en utilisant la version développeur en 64 bits de Firefox.
    • On ne peut pas envoyer les photos prises avec l'application Mapillary depuis le site Web. Je ne comprends vraiment pas cette restriction.
    • L'envoi se faisant depuis mon ordinateur portable qui me sert pour mon travail ainsi qu'à domicile, je devais relancer le transfert à chaque trajet travail<->maison.
    • Puisque c'est l'ordinateur que j'utilise en permanence, cela voulait dire que je saturais la connexion adsl de mon domicile lorsque j'étais chez moi, et celle de mon travail lorsque j'étais à mon bureau. L'inverse aurait été bien plus logique pour ne pas éviter de rendre très lente la navigation sur le Web.
    C'était tellement casse-pied que j'ai pensé à utiliser mon NAS Synology. Il est toujours en fonctionnement, il peut faire tourner des scripts python, et je peux limiter le débit d'upload. Les étapes en bref avec le DSM 5 :
    • Créer un utilisateur pour les envois (Mapillary_upload)
    • Installer Python depuis le DSM
    • Autoriser cet utilisateur à utiliser SSH (se connecter en root et éditer le fichier passwd pour remplacer /sbin/nologin par /bin/sh)
    • Toujours en root, installer exifread en ligne de commande (python easy_install exifread)
    • Copier dans le dossier home de Mapillary_upload les scripts upload.py et upload_with_authentification.py
    • Éditer le fichier upload_with_authentification.py pour entrer les bonnes valeurs pour les variables MAPILLARY_USERNAME, MAPILLARY_PERMISSION_HASH et MAPILLARY_SIGNATURE_HASH
    • Transférer les photos dans le dossier "home" de l'utilisateur Mapillary_upload.
    • Se connecter en SSH avec Putty et comme utilisateur Mapillary_upload puis lancer "nohup python upload_with_authentification.py nom_du_dossier_à_envoyer". La commande "Nohup" permet de fermer la session SSH sans que le script ne s'arrête.
    • Lorsque l'envoi est terminé, aller sur la page d'upload manuel du site web pour valider la séquence.

     

Pour finir, durant ce voyage, nous avons utilisé presque exclusivement les données OpenStreetMap via l'application OsmAnd sur une tablette Androïd, et tout s'est très bien passé. Bravo et merci aux contributeurs irlandais !

 

Ajouter un rétrolien

URL de rétrolien : http://www.stemani.fr/index.php?trackback/8

Haut de page