{"id":912,"date":"2017-08-28T13:54:01","date_gmt":"2017-08-28T11:54:01","guid":{"rendered":"http:\/\/www.calvert.ch\/maurice\/?p=912"},"modified":"2017-12-06T23:42:06","modified_gmt":"2017-12-06T22:42:06","slug":"ublox-c94-m8p-rtk-gps-review-performance-evaluation","status":"publish","type":"post","link":"https:\/\/www.calvert.ch\/maurice\/2017\/08\/28\/ublox-c94-m8p-rtk-gps-review-performance-evaluation\/","title":{"rendered":"UBlox C94-M8P RTK GPS review and performance evaluation"},"content":{"rendered":"<p>TLDR: <a href=\"#results\">Results<\/a> . <a href=\"#lessons\">Lessons learned<\/a> . <a href=\"#summary\">Summary &amp; Conclusions<\/a> . <a href=\"#quickstart\">Quick-start guide<\/a><\/p>\n<p>I am building an autonomous lawnmower which needs to know its position precisely \u2013 in the order of centimetres. Standard GPS is an order of magnitude too coarse and until recently, all flavours of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Differential_GPS\">differential GPS<\/a> were very expensive. This changed last year when UBlox released the <a href=\"https:\/\/www.u-blox.com\/en\/product\/c94-m8p\">C94-M8P<\/a> with a price tag of \u20ac359 for a complete solution. The announcement said:<\/p>\n<blockquote><p>The NEO-M8P module series introduces the concept of a \u201cRover\u201d and a \u201cBase Station\u201d. By using a correction data stream from the Base Station, the Rover can output its relative position with stunning cm-level accuracy in good environments.<\/p><\/blockquote>\n<p>An old dog, I was wary of \u201cin good environments\u201d. That <a href=\"https:\/\/en.wikipedia.org\/wiki\/Real_Time_Kinematic\">RTK<\/a> is capable of centimeter accuracy when stationary and with a horizon-to-horizon view of the sky, I have no doubt; but what about in a less GPS-friendly environments? This article is the result of real-life testing in my garden, cluttered by surrounding buildings and vegetation..<\/p>\n<h1>Objectives<\/h1>\n<p>My aim was to establish whether or not the UBlox solution would be sufficiently accurate for my mower,<br \/>\nin particular how would it perform in less-than optimal conditions, so I devised a series of experiments, which I have named for the purposes of this discussion.<\/p>\n<ol>\n<li><em>Open<\/em>. Stationary for 24 hours in the middle of the lawn, with a decent view of the sky. A base-line test to determine the system performance.<\/li>\n<li><em>Sky270<\/em>. The receiver is next to the corner of a building, 90\u00b0 of sky are obscured.<\/li>\n<li><em>Sky180<\/em>. The receiver is close to a wall of a building, 180\u00b0 of sky are obscured.<\/li>\n<li><em>Sky090<\/em>. The receiver is in a corner of a building, 270\u00b0 of sky are obscured.<\/li>\n<li><em>Canyon<\/em>. The receiver is between two buildings with a heavy tree canopy, most of the sky is obscured.<\/li>\n<li><em>Mobile<\/em>. The receiver is moved around the garden, stopping for 10 seconds at a known location in each of the previous tests.<\/li>\n<\/ol>\n<p>Tests 2-6 are performed for an hour. As described later, I discovered that the receiver needs 25-30 minutes to settle on a solution and these data were removed.<\/p>\n<p>All the tests are made with the antenna 54cm from the ground.<\/p>\n<h1>Test setup<\/h1>\n<p>I built a rooftop base station<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/BaseElectronics.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-934 size-medium\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/BaseElectronics-300x300.jpg\" alt=\"\" width=\"300\" height=\"300\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/BaseElectronics-300x300.jpg 300w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/BaseElectronics-150x150.jpg 150w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/BaseElectronics-768x769.jpg 768w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/BaseElectronics-1024x1024.jpg 1024w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/BaseElectronics-96x96.jpg 96w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/BaseElectronics-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/BaseElectronics-36x36.jpg 36w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/BaseElectronics-48x48.jpg 48w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/BaseElectronics-64x64.jpg 64w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/BaseElectronics.jpg 1421w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>powered by a solar cell with an <a href=\"https:\/\/en.wikipedia.org\/wiki\/Maximum_power_point_tracking\">MPP<\/a> charger, the <a href=\"http:\/\/www.linear.com\/solutions\/3736\">DC1621A<\/a> evaluation board based on the <a href=\"http:\/\/www.linear.com\/product\/LTM8062\">LTM8062<\/a> chip from Linear Technology. As I had no idea how much power the C94-M8P would need \u2013 after all it has a UHF transmitter \u2013 I opted for a 10Ah 2S Lipo. On the left we have the DC1621A, on the right the UBlox board and the battery below. There\u2019s a cell-balancer and packets of silica gel tucked behind the DC1621A. After verifying that every was working correctly, I mounted it on my roof:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/BaseRoof.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-933\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/BaseRoof-156x300.jpg\" alt=\"\" width=\"156\" height=\"300\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/BaseRoof-156x300.jpg 156w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/BaseRoof-768x1474.jpg 768w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/BaseRoof-534x1024.jpg 534w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/BaseRoof.jpg 1205w\" sizes=\"auto, (max-width: 156px) 100vw, 156px\" \/><\/a><\/p>\n<p>My rover was simply a low table in the garden, with the antenna 54cm off the ground.<\/p>\n<p>The rover&#8217;s signature is<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/signature.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1029\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/signature.jpg\" alt=\"\" width=\"180\" height=\"148\" \/><\/a><\/p>\n<p>In what follows, I am focussed solely on horizontal position \u2013 the X, Y values; I ignore altitude as it is only relevant for surveying and aviation.<\/p>\n<p>All my calculations were performed in 64-bit floating point which gives ~15 decimal digits of precision.<\/p>\n<p>The raw GPS data from the receiver contains latitude\/longitude values. To convert these into distances I use <a href=\"https:\/\/en.wikipedia.org\/wiki\/Vincenty%27s_formulae\">Vincenty\u2019s formula<\/a>. I validated my implementation against <a href=\"https:\/\/geographiclib.sourceforge.io\/html\/geodesic.html#testgeod\">500\u2019000 known distances<\/a>, which are precise to 0.1\u00b5 metre.<\/p>\n<h1>Outputs<\/h1>\n<p>Each test produces 5 results.<\/p>\n<h3>1. Summary statistics<\/h3>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/stats1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-958\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/stats1.jpg\" alt=\"\" width=\"346\" height=\"121\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/stats1.jpg 346w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/stats1-300x105.jpg 300w\" sizes=\"auto, (max-width: 346px) 100vw, 346px\" \/><\/a><\/p>\n<p><strong>Quality<\/strong> (the NMEA term) is the type of Fix that the GPS currently has. Possible values are:<\/p>\n<ol>\n<li>Autonomous GNSS<\/li>\n<li>Differental GNSS<\/li>\n<li>3D fix<\/li>\n<li>RTK Fixed<\/li>\n<li>RTK Float<\/li>\n<\/ol>\n<p>It is worth noting that the &#8216;best&#8217; fix is 4.<\/p>\n<p><strong>SVs<\/strong> is the number of satellites in view. I configured the rover UBX-CFG-NMEA to high precision mode (to output 9 digits of precision on latitude and longitude) and as a result considering mode is disabled. It is unclear whether satellites-in-view is those seen or those actually used.<\/p>\n<p><strong>hDop<\/strong> is the horizontal dilution of precision created by the constellation geometry.<\/p>\n<p><strong>ErrorLat<\/strong> is the distance in millimetres from the average centre of all the readings. Similarly ErrorLon.<\/p>\n<p><strong>ErrorLatLon<\/strong> is Euclidean distance from the measured point and the averaged centre of all the readings.<\/p>\n<p>The ErrorX values are calculated using Vincenty&#8217;s Formul\u00e6.<\/p>\n<h3>2. Error statistics<\/h3>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/stats2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-959\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/stats2.jpg\" alt=\"\" width=\"261\" height=\"101\" \/><\/a><\/p>\n<p><strong>Limit<\/strong> is simply a reminder of the percentages associated with the number of standard deviations.<\/p>\n<p><strong>\u03c3<\/strong> is the standard sigma calculation, the square root of the variance.<\/p>\n<p><strong>Out<\/strong> is the actual number of measurements that exceed the CEP below.<\/p>\n<p><strong>CEP<\/strong> is obtained by finding the number of samples &#8216;Out&#8217; which exceed the limit %.<\/p>\n<p>The difference between <strong>\u03c3<\/strong> (a statistical calculation) and <strong>CEP<\/strong> (the true value for the data set in question) is readily explained: The statistical \u03c3 is valid only when the data are normally distributed (a Gaussian). Even over 24 hours, GPS readings are not Gaussian because the average is not stationary. Disraeli&#8217;s <a href=\"https:\/\/en.wikipedia.org\/wiki\/Lies,_damned_lies,_and_statistics\">quip<\/a> remains as true as ever.<\/p>\n<h3>3. Deviation map<\/h3>\n<p>An X-Y plot of ErrorLat horizontally against ErrorLon vertically:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180deviation.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-948\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180deviation.jpg\" alt=\"\" width=\"696\" height=\"723\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180deviation.jpg 696w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180deviation-289x300.jpg 289w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180deviation-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180deviation-36x36.jpg 36w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><\/a><\/p>\n<p>A point&#8217;s colour indicates its age as hue corrected for the human eye. First blue, then green, yellow, orange and finally red.<\/p>\n<h3>4. ErrorLatLon over time<\/h3>\n<p>The Euclidean distance from the average centre to the measured point, in mm, over time:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270error.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-943\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270error.jpg\" alt=\"\" width=\"1108\" height=\"716\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270error.jpg 1108w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270error-300x194.jpg 300w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270error-768x496.jpg 768w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270error-1024x662.jpg 1024w\" sizes=\"auto, (max-width: 1108px) 100vw, 1108px\" \/><\/a><\/p>\n<h3>5. Histogram<\/h3>\n<p>The number of errors at each bucket of the Euclidean distance from the average centre:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180histogram.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-946\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180histogram.jpg\" alt=\"\" width=\"1101\" height=\"714\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180histogram.jpg 1101w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180histogram-300x195.jpg 300w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180histogram-768x498.jpg 768w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180histogram-1024x664.jpg 1024w\" sizes=\"auto, (max-width: 1101px) 100vw, 1101px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h1 id=\"results\">Test results<\/h1>\n<h2><em>Open<\/em> test<\/h2>\n<p>Sky visibility is typical for a residential area. To the north and west a single-storey building<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainNorth.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-936\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainNorth-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainNorth-300x225.jpg 300w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainNorth-768x576.jpg 768w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainNorth-1024x768.jpg 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The receiver, antenna and PC are on a low table in the foreground.<\/p>\n<p>To the east, a 4-storey building (actually 3-storey but on higher ground)<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainEast.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-935\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainEast-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainEast-300x225.jpg 300w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainEast-768x576.jpg 768w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainEast-1024x768.jpg 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>To the south and west, mature oak trees and 2-storey houses<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainSouth.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-937\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainSouth-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainSouth-300x225.jpg 300w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainSouth-768x576.jpg 768w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainSouth-1024x768.jpg 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainWest2.jpg\"> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-938\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainWest2-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainWest2-300x225.jpg 300w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainWest2-768x576.jpg 768w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/MainWest2-1024x768.jpg 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The receiver is in Fixed mode 71% of the time.<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360stats1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-971\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360stats1.jpg\" alt=\"\" width=\"382\" height=\"121\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360stats1.jpg 382w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360stats1-300x95.jpg 300w\" sizes=\"auto, (max-width: 382px) 100vw, 382px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360stats2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-972\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360stats2.jpg\" alt=\"\" width=\"271\" height=\"101\" \/><\/a><\/p>\n<p>The 3\u03c3 CEP of 712 mm is surprisingly high and this is visible both in the deviation map:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360deviation.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-973\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360deviation.jpg\" alt=\"\" width=\"895\" height=\"715\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360deviation.jpg 895w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360deviation-300x240.jpg 300w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360deviation-768x614.jpg 768w\" sizes=\"auto, (max-width: 895px) 100vw, 895px\" \/><\/a><\/p>\n<p>and in the histogram (I have added log(Count) overlayed on Count to show the long tail more clearly):<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360histogram.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-974\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360histogram-1024x668.jpg\" alt=\"\" width=\"695\" height=\"453\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360histogram-1024x668.jpg 1024w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360histogram-300x196.jpg 300w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360histogram-768x501.jpg 768w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360histogram.jpg 1108w\" sizes=\"auto, (max-width: 695px) 100vw, 695px\" \/><\/a><\/p>\n<p>The problem occured mid-morning and early afternoon:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error-1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-977\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error-1-1024x662.jpg\" alt=\"\" width=\"695\" height=\"449\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error-1-1024x662.jpg 1024w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error-1-300x194.jpg 300w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error-1-768x496.jpg 768w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error-1.jpg 1113w\" sizes=\"auto, (max-width: 695px) 100vw, 695px\" \/><\/a><\/p>\n<p>The cause appeared to be due to receiver occasionally losing the RTK solution. To analyse this I zoomed in on the first occurrence and plotted the absolute error along with the Fix. 3D=2, Fixed=4 and Float=5. To highlight the differences, Fixed errors are green, Float errors are blue and 3D errors are red. Notice that the vertical scale is logarithmic:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-975\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error-1024x659.jpg\" alt=\"\" width=\"695\" height=\"447\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error-1024x659.jpg 1024w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error-300x193.jpg 300w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error-768x494.jpg 768w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error.jpg 1120w\" sizes=\"auto, (max-width: 695px) 100vw, 695px\" \/><\/a><\/p>\n<p>At 10:28:18 and 10:32:52 the receiver switches for one measurement from Float to 3D. The same thing happens at 11:21:18:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/PoorFixData.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-978\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/PoorFixData.jpg\" alt=\"\" width=\"716\" height=\"379\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/PoorFixData.jpg 716w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/PoorFixData-300x159.jpg 300w\" sizes=\"auto, (max-width: 716px) 100vw, 716px\" \/><\/a><\/p>\n<p>and in both cases takes some 20 minutes before settling down.<\/p>\n<p>The replay in ucentre shows nothing untoward at the instant of the loss:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/PoorFixUCentre1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-984\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/PoorFixUCentre1-1024x795.jpg\" alt=\"\" width=\"695\" height=\"540\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/PoorFixUCentre1-1024x795.jpg 1024w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/PoorFixUCentre1-300x233.jpg 300w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/PoorFixUCentre1-768x596.jpg 768w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/PoorFixUCentre1.jpg 1280w\" sizes=\"auto, (max-width: 695px) 100vw, 695px\" \/><\/a><\/p>\n<p>I note that 20 minutes is the time that it takes the receiver to lock on cold start (details in Lessons Learned below) and postulate that momentary interference can cause a complete loss of the solution.<\/p>\n<p>There were 4 such events in the 24-hour test. 4 in 86&#8217;400 = 1 in 21&#8217;600; a frequency less than 4\u03c3, so I sought an explanation.<\/p>\n<p>On the weekend of the tests there was an airshow nearby with several passes of military aircraft in formation. One can reasonably assume that 6 fighters at low altitude produce vast quantities of electromagnetic radiation and I imagine that military RF applications care little about the interference that they generate. Furthermore, the dropouts only occurred during the day, when the aircraft were flying, so I decided that they were the most likely cause. Consequently I decided to use a subset of the data with these events excluded. I also excluded the noisier data as of 04:32 in the morning, on &#8216;benefit of the doubt&#8217; reasoning, for want of an explanation. The results then become:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360stats.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1000\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360stats.jpg\" alt=\"\" width=\"365\" height=\"230\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360stats.jpg 365w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360stats-300x189.jpg 300w\" sizes=\"auto, (max-width: 365px) 100vw, 365px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360deviation-1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-thumbnail wp-image-1008\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360deviation-1-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360deviation-1-150x150.jpg 150w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360deviation-1-96x96.jpg 96w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360deviation-1-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360deviation-1-36x36.jpg 36w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360deviation-1-48x48.jpg 48w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360deviation-1-64x64.jpg 64w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a>\u00a0<a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error-2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-thumbnail wp-image-1002\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error-2-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error-2-150x150.jpg 150w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error-2-96x96.jpg 96w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error-2-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error-2-36x36.jpg 36w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error-2-48x48.jpg 48w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360error-2-64x64.jpg 64w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a>\u00a0\u00a0<a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360histogram-1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-thumbnail wp-image-1004\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360histogram-1-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360histogram-1-150x150.jpg 150w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360histogram-1-96x96.jpg 96w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360histogram-1-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360histogram-1-36x36.jpg 36w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360histogram-1-48x48.jpg 48w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky360histogram-1-64x64.jpg 64w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/p>\n<p>Which is what I expected and much more reasonable.<\/p>\n<h2><em>Sky270<\/em> test<\/h2>\n<p>The receiver is against the NW corner of the house, 90\u00b0 of obscured sky.<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-941\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270-300x225.jpg 300w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270-768x576.jpg 768w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270-1024x768.jpg 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The receiver is slightly more in Float rather than Fixed (4.63 average quality). The 3\u03c3 CEP is 54 mm.<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270stats.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-940\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270stats.jpg\" alt=\"\" width=\"346\" height=\"230\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270stats.jpg 346w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270stats-300x199.jpg 300w\" sizes=\"auto, (max-width: 346px) 100vw, 346px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270deviation.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-942 size-thumbnail\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270deviation-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270deviation-150x150.jpg 150w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270deviation-96x96.jpg 96w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270deviation-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270deviation-36x36.jpg 36w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270deviation-48x48.jpg 48w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270deviation-64x64.jpg 64w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a> <a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270error.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-943 size-thumbnail\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270error-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270error-150x150.jpg 150w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270error-96x96.jpg 96w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270error-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270error-36x36.jpg 36w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270error-48x48.jpg 48w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270error-64x64.jpg 64w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a> <a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270histogram.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-939 size-thumbnail\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270histogram-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270histogram-150x150.jpg 150w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270histogram-96x96.jpg 96w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270histogram-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270histogram-36x36.jpg 36w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270histogram-48x48.jpg 48w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky270histogram-64x64.jpg 64w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/p>\n<p>There is significantly more longitude error than latitude.<\/p>\n<h2><em>Sky180<\/em> test<\/h2>\n<p>The receiver is near the NW wall of the house, half the sky is obscured.<\/p>\n<p>The receiver is continuously in Fixed mode. The 3\u03c3 CEP is 43 mm.<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180stats.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-947\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180stats.jpg\" alt=\"\" width=\"346\" height=\"230\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180stats.jpg 346w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180stats-300x199.jpg 300w\" sizes=\"auto, (max-width: 346px) 100vw, 346px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180deviation.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-948 size-thumbnail\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180deviation-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180deviation-150x150.jpg 150w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180deviation-96x96.jpg 96w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180deviation-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180deviation-36x36.jpg 36w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180deviation-48x48.jpg 48w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180deviation-64x64.jpg 64w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/> <\/a><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180error.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-thumbnail wp-image-945\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180error-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180error-150x150.jpg 150w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180error-96x96.jpg 96w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180error-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180error-36x36.jpg 36w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180error-48x48.jpg 48w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180error-64x64.jpg 64w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a> <a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180histogram.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-thumbnail wp-image-946\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180histogram-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180histogram-150x150.jpg 150w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180histogram-96x96.jpg 96w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180histogram-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180histogram-36x36.jpg 36w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180histogram-48x48.jpg 48w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180histogram-64x64.jpg 64w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/p>\n<p>The histogram has longer tails due to the less favourable constellation geometry (practically no SVs to the SE):<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180satellites.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-950 size-medium\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180satellites-300x300.jpg\" alt=\"\" width=\"300\" height=\"300\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180satellites-300x300.jpg 300w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180satellites-150x150.jpg 150w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180satellites-96x96.jpg 96w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180satellites-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180satellites-36x36.jpg 36w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180satellites-48x48.jpg 48w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180satellites-64x64.jpg 64w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky180satellites.jpg 417w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The CEP is better than the Sky270 test, where only 90\u00b0 of sky were obstructed. I attribute this to the fact that due to the lay of the land, the angle of the apex of the house is much larger when viewed from a corner. Additionally the sky view away from the house in this position is a little more cluttered.<\/p>\n<h2><em>Sky90<\/em> test<\/h2>\n<p>The receiver is in a corner of a building, facing SW, 270\u00b0 of sky are obscured.<\/p>\n<p>The receiver is in Fixed mode for the whole hour. The 3\u03c3 CEP is 185 mm.<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090stats.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-987\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090stats.jpg\" alt=\"\" width=\"352\" height=\"230\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090stats.jpg 352w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090stats-300x196.jpg 300w\" sizes=\"auto, (max-width: 352px) 100vw, 352px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090deviation.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-988 size-thumbnail\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090deviation-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090deviation-150x150.jpg 150w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090deviation-96x96.jpg 96w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090deviation-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090deviation-36x36.jpg 36w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090deviation-48x48.jpg 48w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090deviation-64x64.jpg 64w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/>\u00a0<\/a><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090error.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-thumbnail wp-image-989\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090error-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090error-150x150.jpg 150w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090error-96x96.jpg 96w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090error-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090error-36x36.jpg 36w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090error-48x48.jpg 48w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090error-64x64.jpg 64w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090deviation.jpg\">\u00a0<\/a><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090histogram.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-thumbnail wp-image-990\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090histogram-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090histogram-150x150.jpg 150w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090histogram-96x96.jpg 96w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090histogram-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090histogram-36x36.jpg 36w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090histogram-48x48.jpg 48w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/sky090histogram-64x64.jpg 64w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/p>\n<p>The deviation shape clearly reflects the SW direction of the corner.<\/p>\n<h2><em>Canyon<\/em> test<\/h2>\n<p>The receiver is in a NE-SW canyon between two houses with heavy canopy:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/Canyon.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-951\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/Canyon-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/Canyon-300x225.jpg 300w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/Canyon-768x576.jpg 768w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/Canyon-1024x768.jpg 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The wide-angle lens gives the impression that there is a wide view towards the camera. This is not the case, the two houses&#8217; walls are almost parallel, some 12 metres apart and the canopy almost reaches to above the camera.<\/p>\n<p>The receiver never achieves Fixed mode. The 3\u03c3 CEP is 135 mm.<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canopystats.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-954\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canopystats.jpg\" alt=\"\" width=\"346\" height=\"230\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canopystats.jpg 346w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canopystats-300x199.jpg 300w\" sizes=\"auto, (max-width: 346px) 100vw, 346px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canopydeviation.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-953 size-thumbnail\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canopydeviation-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canopydeviation-150x150.jpg 150w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canopydeviation-96x96.jpg 96w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canopydeviation-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canopydeviation-36x36.jpg 36w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canopydeviation-48x48.jpg 48w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canopydeviation-64x64.jpg 64w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/> <\/a><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonerror.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-955 size-thumbnail\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonerror-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonerror-150x150.jpg 150w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonerror-96x96.jpg 96w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonerror-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonerror-36x36.jpg 36w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonerror-48x48.jpg 48w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonerror-64x64.jpg 64w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a> <a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonhistogram.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-thumbnail wp-image-956\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonhistogram-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonhistogram-150x150.jpg 150w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonhistogram-96x96.jpg 96w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonhistogram-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonhistogram-36x36.jpg 36w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonhistogram-48x48.jpg 48w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonhistogram-64x64.jpg 64w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/p>\n<p>The error and histogram are noisier and the canyon effect is clear in the deviation map, where the longitude errors are double the latitude errors, again due the the constellation geometry (few SVs NE and SW):<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonsatellites.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-952 size-medium\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonsatellites-300x300.jpg\" alt=\"\" width=\"300\" height=\"300\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonsatellites-300x300.jpg 300w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonsatellites-150x150.jpg 150w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonsatellites-96x96.jpg 96w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonsatellites-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonsatellites-36x36.jpg 36w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonsatellites-48x48.jpg 48w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonsatellites-64x64.jpg 64w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/canyonsatellites.jpg 410w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<h2><em>Mobile<\/em> test<\/h2>\n<p>I walked around the garden, pausing 10 seconds at each of the <em>SKYNNN<\/em> points to hold the GPS at a marked position.<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/mobiledeviation.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1009 size-full\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/mobiledeviation.jpg\" alt=\"\" width=\"713\" height=\"720\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/mobiledeviation.jpg 713w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/mobiledeviation-150x150.jpg 150w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/mobiledeviation-297x300.jpg 297w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/mobiledeviation-96x96.jpg 96w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/mobiledeviation-24x24.jpg 24w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/mobiledeviation-36x36.jpg 36w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/mobiledeviation-48x48.jpg 48w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/mobiledeviation-64x64.jpg 64w\" sizes=\"auto, (max-width: 713px) 100vw, 713px\" \/><\/a><\/p>\n<p>The red points are the 9 nearest points to the average of each location.<\/p>\n<p>The receiver was in Fixed mode 7% of the time.<\/p>\n<p>The average position error when moving is 19 mm.<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/mobilestats.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1010\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/mobilestats.jpg\" alt=\"\" width=\"102\" height=\"81\" \/><\/a><\/p>\n<h1 id=\"lessons\">Lessons learned<\/h1>\n<p>Here are some tips which might be useful to those envisaging the C98-M8P solution.<\/p>\n<h3>Status<\/h3>\n<p>The status bar at the bottom-right of U-Centre is very helpful:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/status.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-968\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/status.jpg\" alt=\"\" width=\"482\" height=\"19\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/status.jpg 482w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/status-300x12.jpg 300w\" sizes=\"auto, (max-width: 482px) 100vw, 482px\" \/><\/a><\/p>\n<p>From left to right:<\/p>\n<ul>\n<li>Version of connected GPS<\/li>\n<li>Port, if a GPS is connected<\/li>\n<li>File currently open (recording or replay)<\/li>\n<li>The last message-type received. This is particularly useful to confirm that you are receiving RTCM messages, where you will see the field display UBlox-NMEA-RTCM in quick succession.<\/li>\n<li>Elapsed time<\/li>\n<li>TOD<\/li>\n<\/ul>\n<h3>Antenn\u00e6<\/h3>\n<p>UBlox stress repeatedly that the solution&#8217;s accuracy depends on the antenna quality. I verified this and was unable to get the receiver to converge to &#8216;fixed&#8217; mode (the highest accuracy) with the supplied patch antennas, so I bought a pair of <a href=\"https:\/\/buy.garmin.com\/en-US\/US\/p\/133435\">Garmin GA38<\/a>.<\/p>\n<h3>Startup accuracy<\/h3>\n<p>I was disappointed with my initial tests, until it dawned on me that the receiver needs quite a while to converge on the optimal solution. Here is an error plot on power-up:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/coldtarterror.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-962\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/coldtarterror.jpg\" alt=\"\" width=\"1109\" height=\"710\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/coldtarterror.jpg 1109w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/coldtarterror-300x192.jpg 300w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/coldtarterror-768x492.jpg 768w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/coldtarterror-1024x656.jpg 1024w\" sizes=\"auto, (max-width: 1109px) 100vw, 1109px\" \/><\/a><\/p>\n<p>After 52 seconds the error is momentarily down to 24 mm, but it quickly rises to 1&#8217;400 mm, thereafter gradually getting close to zero over the next 13 minutes. It again wanders up to 200 mm over 5 minutes and achieves first Fix at 25:54. It finally alternates between Fix and Float for a couple of minutes before permanently settling to Fixed at 26:47. All this is perfectly reasonable, given the calculations involved.<\/p>\n<p>The takeaway is that you should give the receiver half an hour to warm-up before you can expect accurate results. Note also that seeing it switch to Fixed is not a guarantee that it has completely settled.<\/p>\n<h3>Fixed .vs. Float<\/h3>\n<p>It is apparent from the Sky090 test results that Fixed mode is an indicator of better quality but not a guarantee. All that can be said is that if the quality is 4 or 5, it&#8217;s RTK; lower values are standard GPS.<\/p>\n<h3>Power<\/h3>\n<p>On a 7.45 V battery, the base station consumes ~0.077 A = 0.573 W.<\/p>\n<p>At 12.58 V, the rover consumes 0.066 A = 0.83 W.<\/p>\n<p>So the evaluation board seems to use a linear regulator and I imagine that a non-negligible amount of that power goes to the blinking LEDs.<\/p>\n<p>At closer to 3.5 V, you can assume a power consumption base or rover &lt;&lt; 0.5 W.<\/p>\n<h3>Interference<\/h3>\n<p>As I discovered in the Sky360 test, unexpected interference can cause the unit to lose the RTK solution. The application can detect when this occurs by observing a Quality &lt; 4; the consequence is that the position accuracy will be significantly degraded for the following 20 minutes.<\/p>\n<h3>Baseline &amp; Radio range<\/h3>\n<p>Although not relevant for my use-case, I nonetheless tested the maximum baseline distance by driving away from the base station with the unit on my dashboard.<\/p>\n<p>The receiver was never in Fixed mode in the car and lost Float mode (falling back to a 3D fix) between 576 and 745 metres away from the base. The distances to the loss points are in red:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/radiorange.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-997 size-large\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/radiorange-1024x743.jpg\" alt=\"\" width=\"695\" height=\"504\" srcset=\"https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/radiorange-1024x743.jpg 1024w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/radiorange-300x218.jpg 300w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/radiorange-768x557.jpg 768w, https:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/radiorange.jpg 1524w\" sizes=\"auto, (max-width: 695px) 100vw, 695px\" \/><\/a><\/p>\n<p>(The terrain in my area is almost perfectly flat.)<\/p>\n<p>This limitation is certainly not due to the (amazing) UHF radio, I drove 13 <em><strong>kilometres<\/strong> <\/em>away from the base and the RTCM stream arrived faultlessly during the whole journey.<\/p>\n<h3>Survey-In<\/h3>\n<p>There seems to be some confusion about precision and accuracy of the base station. Given the non-Gaussian nature of GPS measurements, acquiring a TRUE position (whatever that means) by averaging would take weeks (months?) simply because the precision of the average depends on the &#8216;Gausian-ness&#8217; of the data. The base station&#8217;s absolute coordinates, insofar as they are within metres of the truth, are irrelevant because the base transmits only satellite <em><strong>relative<\/strong> <\/em>errors to the rover. The rover uses these <em><strong>relative<\/strong><\/em> numbers to adjust it&#8217;s solution; the accuracy of the result is not contingent on the precision of the base. Given that the satellites are ~20&#8217;000 Km away, a rover-base distance &lt; 100 KM means that they both see identical distortions and this is why RTK baselines are generally recommended to be less than 50-100 Km.<br \/>\nIf follows that it is perfectly acceptable to perform a Survey-In in 1 minute with an error of 5 metres, your accuracy will be no better than surveying for an hour with a 30cm error. That said, expect a survey-in of 1 metre to take about 10 minutes.<\/p>\n<h3>Deviation Map<\/h3>\n<p>You can scroll in and out with the mouse-wheel, but the minimum is 1 metre. To scroll in more, hold the Shift key, whence you can scroll in to a diameter to 20 cm.<\/p>\n<h3>Radio baud rate<\/h3>\n<p>The default baud rate is 19&#8217;200. Initially, I couldn&#8217;t get the RTCM messages to flow and finally discovered an error message: &#8220;GNTXT More than 100 frame errors, UART RX was disabled&#8221;. Reducing the baud rate to 9&#8217;600 fixed this, with no apparent consequences.<\/p>\n<h1 id=\"summary\">Summary<\/h1>\n<p>What does all this mean in layman&#8217;s terms?<\/p>\n<p>Assuming the following conditions:<\/p>\n<ul>\n<li>Urban environment<\/li>\n<li>Reasonable antenna<\/li>\n<li>50 cm off the ground<\/li>\n<li>During one hour, from a known truth position<\/li>\n<\/ul>\n<p>I can make the following assertions about the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Accuracy_and_precision\">accuracy and precision<\/a>:<\/p>\n<p><strong>Accuracy<\/strong>. The error of the reported position will be less than 28 mm from the truth 99.73% of the time. In an urban canyon the error rises to 68 mm and with only 25% of the sky visible 93mm:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/summarystatistics.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1022\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/summarystatistics.jpg\" alt=\"\" width=\"265\" height=\"161\" \/><\/a><\/p>\n<p>On average, you will get one reading worse than these values every 6 minutes.<\/p>\n<p><strong>Precision<\/strong>. Will never be worse than the precision of your base station\u00a0\u00b1356 mm (the radius of the 24-hour CEP).<\/p>\n<h1>Conclusions<\/h1>\n<p>The promised accuracy is indeed &#8216;stunning&#8217;.<\/p>\n<p>When combined with a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Time-of-flight_camera\">TOF camera<\/a>, the accuracy of a few centimetres is more than adequate for the mower I am building, so I&#8217;m perfectly satisfied with it.<\/p>\n<p>That said, the limitations I discovered preclude this solution in some other use-cases that come to mind. Both UAV and farming applications require a much longer baseline and the inability to maintain Fixed mode accuracy is a handicap for those needing consistent high accuracy.<\/p>\n<p>If UBlox can fix the baseline limitation and significantly improve the unit&#8217;s ability to stay in Fixed mode, this GPS will become a truly amazing feat of engineering.<\/p>\n<p>In the spirit of openness, you are welcome to use the data that gathered, for whatever purpose you see fit. <a href=\"http:\/\/www.calvert.ch\/download\/ubxc94m8p.zip\">Download here<\/a>.<\/p>\n<p>I am indebted to my local surveyors, <a href=\"http:\/\/www.jcwasser.ch\/\">JC Wasser<\/a>, for explaining the finer points of their art and their advice on how to present my results.<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/email.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1025 size-full\" src=\"http:\/\/www.calvert.ch\/maurice\/files\/2017\/08\/email.jpg\" alt=\"sorry, you'll have to type this yourself\" width=\"144\" height=\"16\" \/><\/a><\/p>\n<h1 id=\"quickstart\">Appendix: Quick Start<\/h1>\n<p>If you&#8217;d like to try this solution, here&#8217;s a summary of the user guide, along with a few tips.<\/p>\n<p>The <a href=\"https:\/\/www.u-blox.com\/sites\/default\/files\/C94-M8P-AppBoard_UserGuide_%28UBX-15031066%29.pdf\">user guide<\/a> is clear and setting-up the two stations is easy once you get the hang of u-centre (a nice piece of software, by engineers, for engineers). Assuming a classic setup with a fixed base station, here\u2019s a quick-start guide:<\/p>\n<ul>\n<li>Download the <a href=\"https:\/\/www.u-blox.com\/en\/product-resources?f%5b0%5d=property_file_product_filter%3A11126\">latest firmware<\/a>. When you install it (Tools-Firmware Update), it\u2019ll ask for the FIS file which nobody talks about; it\u2019s is hidden away in the u-centre program files, called flash.xml.<\/li>\n<li>Download the latest version of <a href=\"https:\/\/www.u-blox.com\/en\/product\/u-center-windows\">u-center<\/a><\/li>\n<\/ul>\n<h2>Setting up the Base<\/h2>\n<ul>\n<li>The base station needs power. It\u2019ll take if from USB but you\u2019re going to need a source of external power once you\u2019ve finished configuring it. It needs to be between 3.7 and 20 VDC, the + and \u2013 signs are on each side of the power connector, you\u2019ll need a magnifying glass to read them.<\/li>\n<li>Fire up u-centre and connect the card you\u2019ve chosen as base station to a USB port (the cards are identical, it\u2019s your parameters that make them base or rover). Don\u2019t try connecting more than one station to your PC at the same time!<\/li>\n<li>In what follows, you need to click \u2018Send\u2019 in the toolbar at the bottom to transmit you settings over USB to the base station.<\/li>\n<li>In Message view-UBX-CFG-GNSS, make sure GPS and GLOSSNAS are enabled.<\/li>\n<li>The base station also needs to know its own location, which it can figure out itself. Expand UBX-CFG-TMODE3, select Mode=1-Survey-In; this is what makes it a base station. The Maximum Observation Time and Required Position Accuracy are actually quite unimportant, because it doesn\u2019t matter what the true latitude and longitude are, so 300 seconds and 3 metres are fine. Assuming you\u2019ve got a good sky view it\u2019ll finish the survey easily in the 5 minutes. If you really insist on better <a href=\"https:\/\/en.wikipedia.org\/wiki\/Accuracy_and_precision\"><em>precision<\/em><\/a>, it takes about 10 minutes for an RPA of 1 metre.<\/li>\n<li>UBX-CFG-MSG and enable F5-05 RTCM3.2 1005, 1077, 1087 and 1230 for UART1. They should all be set to 1 Hz except 1230 where 10 seconds is enough for the GLOSSNAS Code-phase biases.<\/li>\n<li>UBX-CFG \u2013&gt; PRT set the target=1-UART1, Protocol-in=none, Protocol-out=5-RTCM3 and the baud rate to 9\u2019600. This is saying: Send all RTCM messages to UART1, where they\u2019ll get transmitted on the UHF radio link. I couldn\u2019t get the recommended 19\u2019600 baud rate to work, I kept getting &#8220;GNTXT More than 100 frame errors, UART RX was disabled&#8221; messages.<\/li>\n<li>UBX-CFG-CFG and save the configuration. That way, when you power-cycle the base, it will resume operation normally. If you forget this and lose power, go to step 2.<\/li>\n<li>After a while, perhaps up to half an hour, in the Data View, you\u2019ll see the base station switch to TIME. If it doesn\u2019t, don\u2019t worry, it\u2019ll get there eventually and FLOAT mode already gives good results.<\/li>\n<\/ul>\n<h2>Setting up the Rover<\/h2>\n<ul>\n<li>Unplug the base station and connect the other, rover, station.<\/li>\n<li>UBX-CFG-PRT set the target=1-UART1, Protocol-in=5-RTCM3, Protocol-out=none and the baud rate to 9\u2019600. This is saying: RTCM messages will coming in on UART1, the UHF radio link.<\/li>\n<li>After a moment, the rover should start receiving RTCM messages. You won\u2019t see them by default, UBX-CFG-Messages right-click on RTCM and \u2018Enable child messages\u2019. Then open the packet console to see them (you won\u2019t see anything in the Text Console).<\/li>\n<li>Once they\u2019re flowing in, time for a beer, the rover has to converge on the solution and this can also take a while, for me 20 minutes at minimum. You can monitor the convergence progress with UBX-NAV-RELPOSNED, click the \u2018Poll\u2019 button bottom-left to update the display if it isn&#8217;t enabled. The N and E Relative accuracies will fall gradually and eventually reach 0.01 = 10 centimetres.<\/li>\n<li>After some time it should switch to Fixed mode. If it doesn&#8217;t, don&#8217;t worry, as I mentioned in Lessons Learned, Fixed mode is better but not a pre-requisite for decent results.<\/li>\n<li>Now, and only now, can you make meaningful observations. Restart u-centre (the only way I found to reset the Deviation Map) and View-Deviation Map (F12). Yellow dots = last value, green dots = previous values. To zoom in closer than 1 metre, press Shift whilst scrolling the mouse wheel, the minimum is 20 centimetres.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>TLDR: Results . Lessons learned . Summary &amp; Conclusions . Quick-start guide I am building an autonomous lawnmower which needs to know its position precisely \u2013 in the order of centimetres. Standard GPS is an order of magnitude too coarse <a href='https:\/\/www.calvert.ch\/maurice\/2017\/08\/28\/ublox-c94-m8p-rtk-gps-review-performance-evaluation\/' class='excerpt-more'>[&#8230;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48,47,11],"tags":[66],"class_list":["post-912","post","type-post","status-publish","format-standard","hentry","category-engineering","category-programming","category-technology","tag-gps","category-48-id","category-47-id","category-11-id","post-seq-1","post-parity-odd","meta-position-corners","fix"],"_links":{"self":[{"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/posts\/912","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/comments?post=912"}],"version-history":[{"count":49,"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/posts\/912\/revisions"}],"predecessor-version":[{"id":1033,"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/posts\/912\/revisions\/1033"}],"wp:attachment":[{"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/media?parent=912"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/categories?post=912"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/tags?post=912"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}