Utilisation du GPS Royaltek RGM3800

Si vous disposez d'un GPS Royaltek RGM3800, voici comment l'utiliser sous GNU/Linux

Aller sur le site http://code.google.com/p/rgm3800py/ et télécharger l'utilitaire depuis la rubrique download http://code.google.com/p/rgm3800py/downloads/list. Choisir la version adaptée à votre système, pour GNU/Linux il s'agit du programme rgm3800-rev25.py .

url exacte : https://rgm3800py.googlecode.com/files/rgm3800-rev25.py

Préparatifs


Se placer dans le répertoire où se trouve le fichier python rgm3800-rev25.py :

nono@gulliver:~/Documents/JOSM$ cd
nono@gulliver:~$ cd Documents/JOSM/
nono@gulliver:~/Documents/JOSM$ ls rgm3800-rev25.py
rgm3800-rev25.py
nono@gulliver:~/Documents/JOSM$

Au besoin, rendre ce fichier exécutable :

nono@gulliver:~/Documents/JOSM$ chmod 744 rgm3800-rev25.py
nono@gulliver:~/Documents/JOSM$ ls -l rgm3800-rev25bis.py
-rwxr–r– 1 nono nono 0 2010-01-30 06:14 rgm3800-rev25.py
nono@gulliver:~/Documents/JOSM$

Pour ne pas être contraint de se déplacer systématiquement dans le répertoire où se trouve l'exécutable avant son utilisation, Gulliver vous conseille de placer le fichier rgm3800-rev25.py dans un répertoire bin de votre home utilisateur. Si le répertoire bin de votre espace utilisateur n'existe pas, créez le avec la commande mkdir ~/bin et copiez le fichier avec la commande cp «chemin_où_se_trouve_le_fichier/rgm3800-rev25.py ~/bin/ . Pour information le ~ correspond au répertoire personnel de l'utilisateur.

nono@gulliver:~$ mkdir ~/bin
nono@gulliver:~$
nono@gulliver:~$ cp ~/Documents/JOSM/rgm3800-rev25.py ~/bin/
nono@gulliver:~$

Voilà le résultat, une fois le fichier copié dans le répertoire :

nono@gulliver:~$ ls -l bin/
total 36
-rwxr–r– 1 nono nono 36310 2010-01-30 18:44 rgm3800-rev25.py
nono@gulliver:~$

Le répertoire ~/bin sera reconnu dans vos variables d'environnement à la prochaine ouverture de session de votre utilisateur. Donc quitter votre session et revenez-y pour en profiter.
Sous Ubuntu 9.10 cela ne suffit pas. Il faut faire la commande suivante :

$ source .bash_profile
$ echo $PATH

le résultat de cette dernière commande liste les répertoires dont il est inutile de taper le chemin pour exécuter les fichiers qu'il contient. Dans cette exemple, au lieu de taper :

nono@gulliver: ~/bin/rgm3800-rev25.py

vous n'aurez plus qu'à taper :

nono@gulliver: rgm3800-rev25.py

Créer un répertoire dans lequel les traces gpx seront transférées :

nono@gulliver:~/Documents/JOSM$ mkdir RGM3800
nono@gulliver:~/Documents/JOSM$ ls -l RGM3800/
total 0
nono@gulliver:~/Documents/JOSM$

Brancher le GPS


Brancher le GPS à l'ordinateur via le cordon USB. Si votre distribution GNU/Linux est assez récente, deux modules vont se charger automatiquement. Ce sont les modulse pl2303 et usbserial. Vous pouvez le vérifier avec la commande lsmod.

nono@gulliver:~/Documents/JOSM$ lsmod
Module Size Used by
pl2303 17792 1
usbserial 36264 4 pl2303
… couic ….
nono@gulliver:~/Documents/JOSM$

Si ces modules ne sont pas chargés à la détection, il faut les charger manuellement avec la commande modprobe pl2303 et modprobe usbserial, les droits root sont nécessaires.

Les log permettent également de vérifier la détection du GPS :

nono@gulliver:~/Documents/JOSM$ tail -10 /var/log/kern.log
Jan 30 06:18:30 gulliver kernel: [ 1426.779348] usb 4-1: configuration #1 chosen from 1 choice
Jan 30 06:18:31 gulliver kernel: [ 1426.833867] usbcore: registered new interface driver usbserial
Jan 30 06:18:31 gulliver kernel: [ 1426.833913] USB Serial support registered for generic
Jan 30 06:18:31 gulliver kernel: [ 1426.833994] usbcore: registered new interface driver usbserial_generic
Jan 30 06:18:31 gulliver kernel: [ 1426.834000] usbserial: USB Serial Driver core
Jan 30 06:18:31 gulliver kernel: [ 1426.843775] USB Serial support registered for pl2303
Jan 30 06:18:31 gulliver kernel: [ 1426.843848] pl2303 4-1:1.0: pl2303 converter detected
Jan 30 06:18:31 gulliver kernel: [ 1426.864309] usb 4-1: pl2303 converter now attached to ttyUSB0
Jan 30 06:18:31 gulliver kernel: [ 1426.864356] usbcore: registered new interface driver pl2303
Jan 30 06:18:31 gulliver kernel: [ 1426.864363] pl2303: Prolific PL2303 USB to serial adaptor driver
nono@gulliver:~/Documents/JOSM$

Découvrir le programme


Prendre connaissance des différentes options avec la commande ./rgm3800-rev25.py

nono@gulliver:~/Documents/JOSM$ ./rgm3800-rev25.py
Usage: ./rgm3800-rev25.py <GLOBAL OPTIONS> <COMMAND> <COMMAND OPTIONS>
GLOBAL OPTIONS:
*d <dev>, –device=<dev> Serial device to use
*v, –verbose Show serial communication details
COMMANDS:
help This help
info Show some info about the device
date date -u `./rgm3800-rev25.py date`
list [<range>] List tracks [in range]
track <range> Print waypoints as NMEA records
trackx <range> Print waypoints in GPX form
interval <secs> Set interval between waypoints (1 ⇐ i ⇐ 60)
memoryfull <overwrite|stop> Set memory full behaviour
format <x> Set what data is logged
gmouse <on|off> Turn GPS mouse on/off
dump Continuously read+dump data from device
erase all Delete all tracks, clear memory
Known formats:
0: 12 bytes/waypoint; Lat,Lon
1: 16 bytes/waypoint; Lat,Lon,Alt
2: 20 bytes/waypoint; Lat,Lon,Alt,Vel
3: 24 bytes/waypoint; Lat,Lon,Alt,Vel,Dist
4: 60 bytes/waypoint; Lat,Lon,Alt,Vel,Dist,Stat
<range> for list/track:
8 8th track only
5- 5th to last track
7-9 7th to 9th track
*2 last two tracks
rgm3800py Revision: 25 (2009-06-20)
nono@gulliver:~/Documents/JOSM$

Obtenir des informations avec la commande :

nono@gulliver:~/Documents/JOSM$ ./rgm3800-rev25.py info
None or multiple PL2303 serial device found. Use –device=…
nono@gulliver:~/Documents/JOSM$

Comme le précise le message ci-dessus, il faut indiquer la sortie USB :

nono@gulliver:~/Documents/JOSM$ ./rgm3800-rev25.py -d /dev/ttyUSB0 info
[Timeout talking to device. Retrying.]
[Timeout talking to device. Retrying.]
[Timeout talking to device. Retrying.]
[Timeout talking to device. Retrying.]
[Timeout talking to device. Retrying.]
ERROR: Can not talk to device.
nono@gulliver:~/Documents/JOSM$

hé oui, il faut allumer le GPS ;D …. sinon vous obtenez le message ci-dessus.

Recommencez après avoir allumé le GPS :

nono@gulliver:~/Documents/JOSM$ ./rgm3800-rev25.py -d /dev/ttyUSB0 info
### Device ### Firmware version: RoyalTekVer 1.5.0.245 GSW3LP
Total memory : 8192 KB
Current UTC time: 2010-01-30 05:43:04
### Configuration ### Logging format : Lat,Lon,Alt,Vel,Dist,Stat
Logging interval: 1 seconds
If memory full : stop logging
⇒ 3600 waypoints per hour
216000 bytes per hour
1 days 6 hours until memory full
### Usage ### Total waypoints : 31714
Number of tracks: 14
Oldest waypoint : 2010-01-27 17:05:04
Newest waypoint : 2010-01-29 19:31:18
Memory in use : 22.68%
nono@gulliver:~/Documents/JOSM$

Voilà qui est mieux !

Configurer le GPS


Vous pouvez régler votre GPS pour collecter des points chaque seconde. Par défaut la valeur est de 15 secondes.
Utilisez la commande :

nono@gulliver:~/Documents/JOSM$ ./rgm3800-rev25.py -d /dev/ttyUSB0 interval 1
OK
nono@gulliver:~/Documents/JOSM$

Vous pouvez régler la date et l'heure de votre GPS :
……… reste à faire…….


Lister les traces


Si vous avez déjà des traces, vous pouvez les lister :

nono@gulliver:~/Documents/JOSM$ ./rgm3800-rev25.py -d /dev/ttyUSB0 list
Track 0: 2010-01-27 (17:05:04 - 17:08:32), 15 waypoints (Lat,Lon,Alt,Vel,Dist,Stat), 66 meter
Track 1: 2010-01-27 (17:17:50 - 17:25:19), 31 waypoints (Lat,Lon,Alt,Vel,Dist,Stat), 2238 meter
Track 2: 2010-01-27 (17:35:04 - 17:40:46), 23 waypoints (Lat,Lon,Alt,Vel,Dist,Stat), 2517 meter
Track 3: 2010-01-27 (18:12:51 - 18:18:52), 25 waypoints (Lat,Lon,Alt,Vel,Dist,Stat), 1940 meter
Track 4: 2010-01-27 (18:27:29 - 18:29:28), 9 waypoints (Lat,Lon,Alt,Vel,Dist,Stat), 341 meter
Track 5: 2010-01-27 (18:31:08 - 18:36:38), 23 waypoints (Lat,Lon,Alt,Vel,Dist,Stat), 2497 meter
Track 6: 2010-01-28 (06:10:33 - 06:36:17), 104 waypoints (Lat,Lon,Alt,Vel,Dist,Stat), 20918 meter
Track 7: 2010-01-28 (16:19:03 - 16:54:01), 2099 waypoints (Lat,Lon,Alt,Vel,Dist,Stat), 22689 meter
Track 8: 2010-01-28 (18:45:12 - 19:11:24), 1572 waypoints (Lat,Lon,Alt,Vel,Dist,Stat), 14848 meter
Track 9: 2010-01-28 (21:53:22 - 04:26:59), 23613 waypoints (Lat,Lon,Alt,Vel,Dist,Stat), 11282 meter
Track 10: 2010-01-29 (06:09:34 - 06:33:02), 1410 waypoints (Lat,Lon,Alt,Vel,Dist,Stat), 20985 meter
Track 11: 2010-01-29 (10:22:21 - 10:43:53), 1293 waypoints (Lat,Lon,Alt,Vel,Dist,Stat), 20211 meter
Track 12: 2010-01-29 (10:48:45 - 10:55:21), 397 waypoints (Lat,Lon,Alt,Vel,Dist,Stat), 2561 meter
Track 13: 2010-01-29 (19:12:57 - 19:31:18), 1100 waypoints (Lat,Lon,Alt,Vel,Dist,Stat), 10717 meter
nono@gulliver:~/Documents/JOSM$

Transférer les traces au format GPX


Pour récupérer les traces au format GPX depuis le GPS vers l'ordinateur, il faut utiliser l'option trackx.

Pour récupérer toutes les traces en plusieurs fichiers

Pierre a créé un script recuptraces.py (sources ci-dessous) qui avec l'aide du fichier rgm3800-rev25.py, permet de récupérer l'ensemble des traces en plusieurs fichiers. Les traces sont ainsi nommées : traceYYYY-MM-DD-nchiffre (ex : trace2010-02-12-n1), où la date correspond au jour où la trace a été réalisée.
Cela permet de ne pas écraser les fichiers précédents.
Les traces sont enregistrées dans le dossier où l'on se trouve au moment où on lance le script recuptraces.py
:!: Le fichier s'appelle rgm3800-rev25.py et la ligne 8 : from rgm3800-rev25 import * ne fonctionne pas ! il aime pas le ”-” mais accepte le “_”

Utilisation du script :

  1. copier le fichier rgm3800-rev25.py dans le dossier de travail puis le renommer rgm3800_rev25.py
  2. mettre le fichier recuptraces.py dans ce même dossier
  3. brancher en usb le GPS
  4. lancer python recuptraces dans un terminal (depuis le dossier de travail)
  5. on peut aussi mettre le fichier recuptraces.py exécutable en ligne de commande chmod a+x recuptraces.py et lancer ./recuptraces.py


Le script recuptraces :

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# recuptraces.py
#récupère les traces une à une et les met dans un fichier de la forme
# trace<date de la trace>n<numero de trace>.gpx

# ouvrir le gps RGM3800
from rgm3800_rev25 import *
conn = TermiosSerial("//dev/ttyUSB0")
rgm = RGM3800CLI(conn)

#pour avoir le nombre de traces
_, _, _, _, _, _, _, tracks, _ =rgm.GetInfo()
print tracks

for i in range(tracks):
    jour=rgm.GetTrackInfo(i)[0] #date de la trace
    fichier="trace"+str(jour)+"-n"+str(i)+".gpx"
    ecr = open(fichier, 'w')

    gpxdoc = minidom.getDOMImplementation().createDocument(
      'http://www.topografix.com/GPX/1/1', 'gpx', None)
    e_gpx = gpxdoc.documentElement
    e_gpx.setAttribute('version', '1.1')
    e_gpx.setAttribute('creator', 'rgm3800py')
    e_trk = gpxdoc.createElement('trk')
    e_gpx.appendChild(e_trk)
    e_trkseg = gpxdoc.createElement('trkseg')
    e_trk.appendChild(e_trkseg)

    waypoints = rgm.GetWaypoints(i)
    for wp in waypoints:
        e_trkseg.appendChild(wp.GetGPXTrackPT(gpxdoc))
    ecr.write(gpxdoc.toxml())
    ecr.close()
conn.close()

Ce script n'est qu'un ajout au script rgm3800-rev25.py, il a la même licence, GNU GPL Version 3 ou supérieure.

Récupérer une trace, rassembler les traces...


Pour récupérer une trace particulière, par exemple la 7ème :

nono@gulliver:~/Documents/JOSM$ ./rgm3800-rev25.py -d /dev/ttyUSB0 trackx 7 > RGM3800/trace7.gpx
[\ 60% PROY102…] ←- ceci ne dure que pendant la phase de transfert
nono@gulliver:~/Documents/JOSM$

La 7ème trace a été transférée et nommée trace7.gpx dans le répertoire RGM3800 préalablement créé :

nono@gulliver:~/Documents/JOSM$ ls RGM3800
trace7.gpx
nono@gulliver:~/Documents/JOSM$

Pour récupérer plusieurs traces regroupées en un seul tracé, par exemple de la 7ème à la 10ème :

nono@gulliver:~/Documents/JOSM$ ./rgm3800-rev25.py -d /dev/ttyUSB0 trackx 7-10 > RGM3800/trace7a10.gpx
nono@gulliver:~/Documents/JOSM$

Ou, pour récupérer la totalité en un seul fichier, vous l'aviez deviné :

nono@gulliver:~/Documents/JOSM$ ./rgm3800-rev25.py -d /dev/ttyUSB0 trackx 0-13 > RGM3800/trace-latotale.gpx
nono@gulliver:~/Documents/JOSM$
nono@gulliver:~/Documents/JOSM$ ls RGM3800
trace7.gpx trace7a10.gpx trace-latotale.gpx
nono@gulliver:~/Documents/JOSM$

Les options possibles sont :

la 8ème trace seulement:
./rgm3800-rev25.py -d /dev/ttyUSB0 trackx 8 > RGM3800/trace8.gpx

à partir de la 5ème trace jusqu'à la fin :
./rgm3800-rev25.py -d /dev/ttyUSB0 trackx 5- > RGM3800/trace-depuis5.gpx

avant de la 2ème trace :
./rgm3800-rev25.py -d /dev/ttyUSB0 trackx -2 > RGM3800/trace-avant2.gpx

un ensemble contigu de trace :
./rgm3800-rev25.py -d /dev/ttyUSB0 trackx 7-10 > RGM3800/trace7a10.gpx


Effacer les traces


Pour effacer les traces contenues dans le GPS, utilisez l'option erase.

nono@gulliver:~/Documents/JOSM$ ./rgm3800-rev25.py -d /dev/ttyUSB0 erase all
Do you really want to delete ALL tracks? (y/n) [n]: y
[/ Erase now] ←- ceci ne dure que pendant la suppression des traces
[OK Erase now]
nono@gulliver:~/Documents/JOSM$

Vérifiez :

nono@gulliver:~/Documents/JOSM$ ./rgm3800-rev25.py -d /dev/ttyUSB0 info
### Device ### Firmware version: RoyalTekVer 1.5.0.245 GSW3LP
Total memory : 8192 KB
Current UTC time: 2010-01-30 06:26:32
### Configuration ### Logging format : Lat,Lon,Alt,Vel,Dist,Stat
Logging interval: 1 seconds
If memory full : stop logging
⇒ 3600 waypoints per hour
216000 bytes per hour
1 days 14 hours until memory full
### Usage ### Total waypoints : 0
Number of tracks: 0
Oldest waypoint : None
Newest waypoint : None
Memory in use : 0.00%
nono@gulliver:~/Documents/JOSM$


Transférer les traces au format NMEA


Il est également possible de récupérer les tracés au format NMEA avec l'option track (pour le GPX, c'est trackx).
Exemple : rgm3800-rev25.py -d /dev/ttyUSB0 track 0
L'écran affiche des trames NMEA
en voici quelques-unes :
$GPGGA,223230.000,4805.4014,N,00140.5830,W,1,4,50.0,0065.2,M,0.0,M,,0000*4F
$GPGSV,3,1,12,15,45,000,0,27,45,030,0,09,45,060,0,28,45,090,17*40
$GPGSV,3,2,12,29,45,120,0,17,45,150,15,18,45,180,0,12,45,210,23*74
$GPGSV,3,3,12,22,45,240,0,05,45,270,23,26,45,300,0,00,45,330,0*4A
$GPRMC,223230.000,A,4805.4014,N,00140.5830,W,005.42,15.15,290110,,,E*41
$RTDIST,A,3,50.0,50.0,50.0,30*66
$GPGGA,223231.000,4805.4000,N,00140.5821,W,1,4,50.0,0065.2,M,0.0,M,,0000*4B
$GPGSV,3,1,12,15,45,000,0,27,45,030,0,09,45,060,0,28,45,090,17*40
$GPGSV,3,2,12,29,45,120,0,17,45,150,15,18,45,180,0,12,45,210,23*74
$GPGSV,3,3,12,22,45,240,0,05,45,270,22,26,45,300,0,00,45,330,0*4B
$GPRMC,223231.000,A,4805.4000,N,00140.5821,W,005.42,15.15,290110,,,E*45
$RTDIST,A,3,50.0,50.0,50.0,32*64

Plus d'info sur les trames NMEA :
http://aprs.gids.nl/nmea/
http://www.gpsinformation.org/dale/nmea.htm

Tout comme avec l'exemple de l 'option trackx, on peut mémoriser ces trames dans un fichier avec la commande :
rgm3800-rev25.py -d /dev/ttyUSB0 track 0 >piste0.txt

Et encore.....


Pour finir, il y a une commande GPS mouse. Bien que non testée (pour le moment) on suppose que les trames sont envoyées sur le PC
au fur et à mesure, à vérifier avec le logiciel daemon gpsd.

http://code.google.com/p/rgm3800py/wiki/GPSd


Auteurs

- NoNo et Per

Infos complémentaires :


Le matériel selon la documentation constructeur… mais pour citer les inconnus « cela ne nous regarde pas » ;)
http://www.royaltek.com/download/RGM-3800_User%20Manua.pdf

 
royaltek_rgm3800.txt · Dernière modification: Le 02/08/2014 à 06:36 par nono     Haut de page
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Design by Chirripó