I use Emlid Reach M+ and RS+ for research, and I have questions about output formats and standard deviations.
According to the documentation, standard deviations are represented by sdn, sde, sdu in meters. How are the standard deviations calculated?
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:
So is the standard deviation the same for both outputs or is it different from one output to another?
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:
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?
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,
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.
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
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.
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).