Output formats and Standard deviations

Hello !

I use Emlid Reach M+ and RS+ for research, and I have questions about output formats and standard deviations.

  1. According to the documentation, standard deviations are represented by sdn, sde, sdu in meters. How are the standard deviations calculated?

  2. In the Reach Panel on PC, the status section indicates the position in LLH and with the standard deviations. You can also display the XYZ format. We can see that the standard deviation is the same in both formats LLH and XYZ.
    However, when you configure the position outputs with one in LLH and the other in XYZ, and you read results, standard deviations are completely different. For example:

    LLH output:
    b’2022/07/29 14:42:12.800 48.753584498 2.311224599 103.7842 1 8 0.0070 0.0293 0.0300 0.0000 0.0000 0.0000 0.80 999.9\n’
    XYZ output:
    b’2022/07/29 14:42:12.800 4209718.7730 169905.8189 4772614.2370 1 8 0.0146 0.0071 0.0392 0.0000 0.0000 0.0000 0.80 999.9\n’

    So is the standard deviation the same for both outputs or is it different from one output to another?

  3. Concerning the ENU format comparing with LLH format, the standard deviation values ​​are equal, however for the ENU format the second and third values ​​are reversed. Here is the output I get with LLH and ENU formats:

    LLH output:
    b’2022/07/29 15:53:45.999 48.753578151 2.311232541 103.2614 1 8 0.0080 0.0256 0.0260 0.0000 0.0000 0.0000 1.00 397.0\n’
    ENU output:
    b’2022/07/29 15:53:45.999 24386.8604 5234.4383 -152.3143 1 8 0.0080 0.0260 0.0256 0.0000 0.0000 0.0000 1.00 397.0\n’

    Shouldn’t we instead invert the first and second component of the standard deviation? So that North corresponds to latitude and East to longitude?
    And why are the values ​​of the standard deviation the same between LLH and ENU, and different from XYZ?

  4. Another difference that I noticed between the different output formats: the NMEA format has its time which corresponds exactly to UTC time and my computer time (UTC+2). However, for the other 3 formats (LLH, XYZ and ENU), they are exactly 18 seconds ahead of UTC time. Why ?

Thank you in advance for your answers,

1 Like

Hello Amaury, and welcome aboard !

I will try to give you a few hints :slight_smile:

  1. The way std dev are calculated is algorithm-dependent, and every brand implemented its own way of calculating them. Mathematically speaking though, these are the diagonal terms of the variance-covariance matrix of the coordinates vector resolved by the positioning algorithm. They depend on the weight that is associated to the GNSS raw data used to solve the system. One raw data can be considered as less important than another if the satellite SNR is lower, for example. For the RTK engines based on RTKlib / RTKnavi, you can check the RTKlib documentation to learn more.

  2. In the Reach Panel, unless I am mistaken, the standard deviations you see are derived from the local coordinates system of the receiver. Let’s name the receiver R. This local system is defined by :
    east axis : direction R → East
    north axis : direction R → North
    up axis : normal to the ellipsoid at the R location
    The values are derived from the XYZ values by applying a 7-parameter transformation.
    So what is displayed in the status page is the same whatever the format you choose.

In the position outputs though, you should actually have the following.
LLH output : sn, se, su
XYZ output : sx, sy, sz

  1. You reasoning seems good. I agree, first and second should be inverted, not second and third.
    The fact that std dev are the same in LLH and in ENU seems to come from the fact that it allows to show the values in meters in both format, instead of having values in degrees in case of LLH, which is not really useful.
    The values in LLH and ENU are transformed from values in XYZ with the 7-parameter transformation. That is why they are different.

  2. The NMEA format is designed to be timed on UTC. The other formats come from the RTKlib position format. And this one is designed to be timed on GPS time. The difference between GPS and UTC times is currently equal to 18 seconds. These are called the leap seconds, and this is a value than has changed before. It will change again in the future. You can learn more here.


Apart from the excellent post from @Florian above, I would like to add that what you see for Standard Deviation in RV are basically calculated using individual positions (epoch) for the averaged position (when collecting a point).

You can play around with it here: Standard Deviation Calculator


Hello Florian and Wizprod,

Thank you for your answers!
This allows me to see more clearly in the different output formats.


Hi guys,

Started reading this post thinking maybe I will have something to add. But it appeared I have nothing more to say here. Thanks, Florian and Christian!

But this one looks strange for me as well. Let me research a bit, and if it’s a bug, we’ll fix it.


We got your back @svetlana.nikolenko :laughing:

1 Like

And provided entertaining reading :slightly_smiling_face:

1 Like