products:kronos:rtkronos:rtkronos_communication_protocol

Protocole de communication pour le RTKronos


tags: RTK, Kronos, RTKronos, communication

La carte renvoie toutes les secondes la position et l'orientation de déplacement données par le GPS.

Ces informations sont disponibles sur le port série et le port SPI du module XLBee 2 (SOCKET 2 sur la carte).

  • [0:1] : (uint16) packet_id
  • [2:3] : (uint16) packet_length
  • [4:packet_length] : payload

1.1.1 Payload format for every packet ID/type

1.1.1.1 Id 0x0001: Complete position information

Field Format Description Offset
sol status Enum (4 octets)
Value Status Description
0 SOL_COMPUTED Solution computed
1 INSUFFICIENT_OBS Insufficient observation
2 NO_CONVERGENCE No convergence
4 COV_TRACE Trace of covariance matrix exceeds maximum (trace>1000m)
0
pos type Enum (4 octets)
Value Type Description
0 NONE No solution
1 FIXEDPOS Position has been fixed manually
8 DOPPLER_VELOCITY Velocity is derived from real-time Doppler message
16 SINGLE Single point position
17 PSRDIFF Pseudo-range difference decomposing
32 L1_FLOAT L1 floating solution
33 IONOFREE_FLOAT Ionospheric-free floating solution
34 NARROW_FLOAT Narrow-lane floating solution
48 L1_INT L1 integer solution
49 WIDE_INT Wide-lane integer solution
50 NARROW_INT Narrow-lane integer solution
4
lat Double (8 octets) Latitude 8
lon Double (8 octets) Longitude 16
hgt Double (8 octets) Height (altitude) 24
undulation Float (4 octets) Geoid undulation (distance between the geoid and the WGS84 ellipsoid in meter) 32
datum id# Enum  ID code of coordinate system, onlysupporting WGS84 at present, ID: WE 36
lat σ Float (4 octets) Latitude standard deviation 40
lon σ  Float (4 octets) Longitude standard deviation 44
hgt σ  Float (4 octets) Height standard deviation 48
stn id Char[4] Base station ID 52
diff_age Float (4 octets) Differential age in seconds 56
sol_age  Float (4 octets) Solution age in seconds 60
#SVs  uint8 Number of satellite tracked 64 
#solnSVs  uint8  Number of satellite used in solution 65
sig mask Enum (1 octet)
Bit Mask Description
0 0x01 GPS L1 used in calculation
1 0x02 GPS L2 used in calculation
2 0x04 GPS L5 used in calculation
3 0x08 BDS B3 used in calculation
4 0x10 GLONASS L1 used in calculation
5 0x20 GLONASS L2 used in calculation
6 0x40 BD2 B1 used in calculation
7 0x80 BD2 B2 used in calculation
66

1.1.1.2 Id 0x0002: Heading data

Field Format Description Offset
heading Float (4 octets) Heading angle in degrees from True North 0

1.1.1.3 Id 0x0003: Satellite count

Field Format Description Offset
GPS L1 uint8 Number of active satellites on GPS L1 band 0
GPS L2 uint8 Number of active satellites on GPS L2 band 1
GPS L5 uint8 Number of active satellites on GPS L5 band 2
GLONASS L1 uint8 Number of active satellites on GLONASS L1 band 3
GLONASS L2 uint8 Number of active satellites on GLONASS L2 band 4
BD2 B1 uint8 Number of active satellites on BD2 B1 band 5
BD2 B2 uint8 Number of active satellites on BD2 B2 band 6
BD2 B3 uint8 Number of active satellites on BD2 B3 band 7
Galileo E1 uint8 Number of active satellites on Galileo E1 band 8
Galileo E5 uint8 Number of active satellites on Galileo E5 band 9

En Mars 2022, nous avons ajouté la sortie en direct sur le port dédié du GPS (port COM3 de l'UB4B0).
Cela permet d'avoir une fréquence des messages garantie par le module GPS RTK (sans délai de traitement).
Pour le moment seuls les messages de type GNGGA sont disponibles sous format ASCII.

ID Champs Description Nombre et type des symboles Example
1

$GNGGA

Préambule permettant d'identifiant le type du message 6 caractères fixes

$GNGGA

2 utc Temps UTC de la position calculée
(heures/minutes/secondes/dixièmes de
secondes).
Précision 10ms
hhmmss.ss (8 digits et un point de virgule) 132530.60
3 lat Latitude(DDmm.mmmmmmmm)
en degrés, minutes et décimales de minutes
LLLL.LL 4834.65851118
4 lat dir Latitude direction(N = North, S = South) a N
5 lon Longitude(DDDmm.mmmmmmmm)
en degrés, minutes et décimales de minutes
LLLLL.LL 00744.99485270
6 lon dir Longitude direction(E = East, W = West) a E
7 Qualité de la solution

Position Solution Quality indicator
0 = fix not available or invalid
1 = point fix
2 = pseudo-range difference
4 = RTK fixed solution
5 = RTK floating solution
7 = Position set by user(Fixed Position)

x 1
8 Nombre de satellites utilisés pour calculer la solution Nombre de satellites utilisés,
pas équivalent au nombre de satellites vus.
xx 11
9 hdop Horizontal dilution of precision x.x 1.5
10 alt Altitude par rapport au niveau de la mer
peut être négatif.
x.xxxx 151.4783
11 Unité pour l'altitude M=mètres M M
12 ondulation Ondulation du géoïde: la distance entre le géoïde
et le modèle terrestre éllipsoïde WGS84
peut être négatif
x.xxxx 48.4225
13 Unité pour l'ondulation M=mètres M M
14 Âge des données différentielles Âge des données de correction différentielles en secondes (<99s)
utilisées pour corriger la solution et provenant d'une base RTK.
Vide lorsqu'aucune correction différentielle de moins de 99 secondes
n'est disponible.
xx 13
15 ID de la base RTK de correction Id de la station de base d'où proviennent les corrections
différentielles utilisées.
Vide lorsqu'aucune correction différentielle de moins de 99 secondes
n'est disponible.
xxxx-xxxx 0000-0002
16 *CS Checksum *hh *71
17 [CR][LF] Sentence terminator (carriage return, new line) \r\n \r\n

2.1.1 Passage de degrés, minutes, décimales de minutes à degrés décimaux

  1. séparer les degrés des minutes (minutes décimales) vous avez donc:
    1. un entier pour les degrés
    2. un flottant pour les minutes
  2. diviser les minutes décimales par 60 (mm.mmmmmmmmm / 60)
  3. ajouter le résultat aux degrés précédent
  4. Pour la latitude, si la lettre est S, multiplier par -1.
  5. Pour la longitude, si la lettre est W, multiplier par -1.

2.1.2 Example de trame complète

$GNGGA,132530.60,4834.65851118,N,00744.99485270,E,1,11,1.5,151.4783,M,48.4225,M,,*71

Cela correspond en degrés décimaux à :

  • latitude: (48+34.65851118/60) soit: 48.577641853 degrés
  • longitude: (007+44.99485270/60) soit 7.749914211666667 degrés

À chaque fois, on est du côté positif, si on était en latitude S, ou en longitude W, il faudrait multiplier le résultat par -1.

2.1.3 Comparaison avec les trames sur XLBEE2

Notez bien que les valeurs données pour la précision de la solution sont très différentes entre les 2 types de trames.
On peut néanmoins faire une équivalence:

Trame XLBEE2 Trame COM3
0: pas de solution 0: pas de solution
16: Single point position 1: point fix
17: Pseudo-range difference decomposing 2: pseudo-range difference
48 ou 49 ou 50: XXXX_INT 4: RTK fixed solution
32 ou 33 ou 34: XXXX_FLOAT 5: RTK floating solution
1: Position has been fixed manually 7: Position set by user(Fixed Position)

Donc la meilleure solution a pour valeur 4 dans la trame GNGGA et pour valeur 50 dans la trame sur le XLBEE.
Elles ne sont pas exactement équivalentes car on ne sait pas s'il s'agit de la valeur 48, 49 ou 50 sachant qu'en terme de précision: 50 > 49 > 48.

  • products/kronos/rtkronos/rtkronos_communication_protocol.txt
  • Last modified: 2022/05/02 14:04
  • by manu