-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRTK-experiments.html
410 lines (410 loc) · 20 KB
/
RTK-experiments.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>RTK-experiments</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
<link rel="stylesheet" href="pandoc.css" />
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
<![endif]-->
</head>
<body>
<h1 id="rtk-experiments">RTK Experiments</h1>
<p>Copyright © 2022, William D. Ricker, and licensed <a
href="https://creativecommons.org/licenses/by-sa/4.0">CC-BY-SA 4.0</a>
or later <img src="CC-BY-SA_icon.svg.png" alt="CC-BY-SA" />.</p>
<h2 id="agendatoc">Agenda/TOC</h2>
<ul>
<li>Intro
<ul>
<li>Why is RTK</li>
<li>What is RTK</li>
</ul></li>
<li>Open-ness
<ul>
<li>Open Hardware (and not)</li>
<li>Open Firmware (and not)</li>
<li>FLOSS and Gratis Apps</li>
</ul></li>
<li>Product</li>
<li>Experiments
<ul>
<li>kit</li>
<li>test run</li>
<li>first data collection expedition</li>
</ul></li>
<li>Appendix
<ul>
<li>Caveats</li>
<li>Glossary</li>
<li>Credits & ©</li>
</ul></li>
</ul>
<h2 id="intro">Intro</h2>
<ul>
<li>Why is RTK</li>
</ul>
<p>We get a false sense of accuracy from phone, car, hiking GPS.</p>
<p>“Stay on road” and perhaps inertial corrections let the GPS display
cover for the erratic measurements.</p>
<p>If we mark a point with a GPS and then ask for directions to get back
there, it likely takes us to the right place close enough, as
buildings/driveways are <em>almost</em> far enough apart to be
<em>mostly</em> non-overlapping in error. Most people don’t need 1m,
0.1m, or 1cm accuracy.</p>
<p>If you download the “tracks” off a GPS that was left on in a parked
car, you’ll see a random “star” as the position computed varies this way
and that. A disturbingly large star, that shows that only with a very
long term average could you compute a 1m position. My Garmin GPS peering
through a windshield-shaped hole with trees and house partially blocking
what little sky it could see drew a 50×15m (150×50’) error star for us.
If the nearest house-lots weren’t vacant, many of the points in the star
if chosen at random (whenever one hits the “save” button) the position
wouldn’t obviously be associated with my house! But the
<em>centroid</em> of the star-cloud is roughly correct (slightly offset
away from the house by i presume reflections).</p>
<figure>
<img src="Driveway-Star.png" title="a driveway error star"
alt="Driveway Error Star" />
<figcaption aria-hidden="true">Driveway Error Star</figcaption>
</figure>
<p>Native GPS precision/resolution in Civilian mode is 30m; a 5 minute
average can improve that to 5m, 12 hours average to maybe 1m? Dual
Frequency L1+L2 and DGPS correction signals can improve that slightly,
since the ionosphere bends L1 and L2 bands differently, but not by much.
Military grade only improves on codeless L1+L2 20%. (They didn’t want us
that close but algorithms are winning.)</p>
<p>If one wants to map things smaller than a house accurately, or things
hard to see from medium distance away (10-50m) even dual L1+L2 &
classical DGPS/WAAS isn’t good enough.</p>
<p>Which is why surveyors use GPS equipment that is capable of
correcting for all the errors by using a continuous error stream from a
near-by (practically) identical receiver at a known location. (Known to
±1cm preferably.)</p>
<figure>
<img src="Pro-Survey-RTK-A30.jpg" title="Professional Survey GPS"
alt="Professional GPS" />
<figcaption aria-hidden="true">Professional GPS</figcaption>
</figure>
<p>These devices cost less than new cars, but I’ve seen used cars for
less lately. With a long-term occupation, it can get a ±1cm accurate
position on the tripod, and then can share that accuracy with the
portable GPS on a surveyor’s rod.</p>
<ul>
<li>What is RTK?</li>
</ul>
<p>RTK is the latest walkabout form of enhanced GPS/GNSS position
solution.</p>
<p>It’s called <strong>Real Time Kinematic</strong> because it corrects
in real time, when moving.†</p>
<p><img src="Real_time_kinematic.svg.png"
title="a simplified RTK network" alt="Simplified RTK network" /> (from
<a
href="https://commons.wikimedia.org/wiki/File:Real_time_kinematic.svg#/media/File:Real_time_kinematic.svg">wikimedia</a>
© 2022 TS Eriksson - Own work <a
href="https://creativecommons.org/licenses/by-sa/4.0">CC BY-SA 4.0</a>
)</p>
<p>In the simplest form, a <strong>base station</strong> on a
<em>precisely</em> known location records phase data on received
GPS/GNSS sat signals, both L1 and L2 bands, and notes the corrections -
and sends them to one or more <strong>rovers</strong> subscribers - most
simply via direct data radio if nearby, as illustrated. One can insert
the Internet (via cellular data in field) and consolidating servers for
(a) added complexity (b) only buying one unit.</p>
<p>Subscription may be commercial, open/free, private, or public by
e.g. MassDOT, MaineDOT (free, registration required). One can connect to
the nearest station of the network by name (having looked up which is
nearest) or a network may provide a Virtual base by weighted-averaging
several nearest bases to derive a virtual correction for your location
instead of just giving the nearest. (This requires disclosing your
location to the Network.)</p>
<p>†( Why bother <em>calling</em> it RTK? Because there is an
<em>alternative</em> phase-difference enhancement scheme, requiring same
high-end GNSS receiver hardware, that is <strong>non</strong>-real-time,
<strong>non</strong>-kinematic, that compares <em>logged</em> received
phases - logging for 12+ satellites in both L1 and L2 bands - at both a
known base-station and an unknown station, logged over many hours,
unmoving, with the log comparison and calculation done <em>later</em> to
get just one (nearly) <em>perfect</em> location solution for the unknown
base. Can be < ±1cm if close enough to the known base which was
already known that well. This is great for professional surveyors
setting up a chain of known positions extending from the nearest public
base for their future use in their remote territory, moving their own
base unit around. There’s also a compromise that doesn’t use Internet or
data radios, so is not real-time but is still kinematic: One can also
log raw data while moving around and capturing approximate GPS points,
and compare raw field logs to base logs later, back in the office, to
get corrected positions for the points collected in the field. )</p>
<h2 id="open-ness">Open-ness</h2>
<ul>
<li><p>Hardware solution that is partly Open Hardware</p>
<ul>
<li>Open Hardware
<ul>
<li><a
href="https://github.com/sparkfun/SparkFun_RTK_Express_Plus/tree/main/Hardware">git
for board</a>;</li>
<li><a
href="https://github.com/sparkfun/SparkFun_RTK_Express_Plus">graphics,
case</a> <img src="rtk-express-inside.jpg"
title="prior version RTK Express board, plus likely slightly different"
alt="RTK Express board" /></li>
<li><a href="http://esp32.net/"><strong>ESP32</strong></a> (<a
href="https://en.wikipedia.org/wiki/ESP32">wiki</a>) is
<strong>not</strong> open hardware but proprietary; however the firmware
open<br />
«<code>ESP32 is a feature-rich MCU with integrated Wi-Fi and Bluetooth connectivity for a wide-range of applications</code>»,
perfect for IoT and connectivity of larger devices; programmable like an
Arduino but also by other embedded-development-tool-chains.</li>
<li>u-Blox ZED-<a
href="https://www.u-blox.com/en/product/zed-f9p-module"><strong>F9P</strong></a>,
is also <strong>not</strong> open hardware but proprietary; it’s a
Multi-band GNSS receiver, rather specialized.</li>
</ul></li>
<li>Open Firmware
<ul>
<li>for the ESP32 and device UI <a
href="https://www.sparkfun.com/products/18590">git</a></li>
<li>but <strong>not</strong> for F9P, which requires a proprietary
firmware blob that implements core GPS</li>
</ul></li>
<li>Free <em>&/or</em> Open Software
<ul>
<li>recommended starter Collector App is <em>Free as in Beer</em> but
<strong>not</strong> Open. <a
href="http://softwel.com.np/mobile_products"><strong>SW
Maps</strong></a> (<a
href="http://softwel.com.np/images/download_manual/SW%20MAPS5.pdf">manual</a>),
built for local OpenStreetMap mappers in Nepal. (<a
href="https://www.youtube.com/playlist?list=PLBx4b7EynYBAl4niXT4MYWMG7EqpPUgHr">YouTube
tutorials</a>; same fellow has a couple of QGIS tutorials also!)</li>
<li>two FLOSS Collector App alternatives need patches in App and/or
RTK-Express-Plus firmware to work via WiFi+BT; one or both
<em>might</em> work on <em>some</em> tablets via USB to RTK (I haven’t
tested that yet):
<ul>
<li><a href="https://vespucci.io/"><strong>Vespucci</strong></a> OSM
editor for Android (competitor to OSMAND?), knows about external GPSs),
assumes you want to upload points and lines to OSM; tutorials don’t
document how can it act as a collector for non-OSM projects.</li>
<li><a href="https://qfield.org/"><strong>QField</strong></a> FLOSS GIS
field collector app specifically optimized for QGIS projects, but can
export KML as well as GPKG and GeoJSON, so not tied to QGIS.</li>
<li>All three are usable with Android tablet/phone’s native GPS, and
<em>should eventually</em> also be able to work with enhanced precision
with RTK via BT/WiFi/USB. Alas only the non-FLOSS freeware works out of
the box reliably <em>today</em>.</li>
<li><strong>UPDATES</strong></li>
<li><a
href="https://jitsi.github.io/handbook/docs/user-guide/keyboard-shortcuts/">Mergin</a>
supports both iPhone and Android, is designed to work with external GPS
or internal, but apparently requires a freemium Cloud (free for teachers
& students but not us?) or put up your own server to connect QGIS
plugin and Mergin on tablet? This is good if you have multiple field
contrigutors to a single project but overkill for a lone mapper. Will it
really not do “pretend my tablet is a thumbdrive” with USB? Also don’t
know if it will talk USB to GPS or not, and if it’s compatible with the
WiFi/BT choices on the SparkFun RTK. At least the server for
build-your-own mini-cloud is FLOSS.</li>
</ul></li>
</ul></li>
<li>other <strong>Open Hardware</strong>-ish projects using GPS and
Rubidium for Precise Time, part of the <a
href="https://www.opencompute.org/">Open Compute</a> <a
href="https://www.opencompute.org/wiki/Time_Appliances_Project">Time
Appliances</a> project
<ul>
<li><a href="https://timebeat.app/">TimeBeat</a> <a
href="https://store.timebeat.app/products/gnss-raspberry-pi-cm4-module">Time4Pi
GNSS Raspberry Pi CM4 module</a> (not yet for sale; currently uses
proprietary u-Blox chip and u-Blox firmware, working towards Open
Firmware. Only compatible with CM4 since needs higher-end proprietary
Broadcom NIC with <a
href="https://en.wikipedia.org/wiki/Precision_Time_Protocol">Precise
Time Protocol (PTP)</a> onboard)</li>
<li><a href="https://timebeat.app/">TimeBeat</a> <a
href="https://store.timebeat.app/products/ocp-tap-timecard">Time
Card</a></li>
<li><a href="https://www.youtube.com/watch?v=RvnG-ywF6_s">video on
both</a></li>
</ul></li>
</ul></li>
<li><p>Product</p>
<ul>
<li><p><em>Warning</em> - If you’re used to GPS being inclusive
complimentary in your phone, standalone GPS prices will be as staggering
as real camera prices - like high end phone without carrier subsidy.
These are still nickel-to-dime-on-the-dollar compared to Professional
Surveyor packaged equipment that likely uses the same receiver
chip.</p></li>
<li><p><a href="https://www.sparkfun.com/products/18589">RTK Express
Plus Kit</a> - everything but the pole, tablet, and clamps. <img
src="18590-SparkFun_RTK_Express_Plus-04.jpg" title="RTK Express Plus"
alt="RTK Express Plus" /> <img
src="18589-SparkFun_RTK_Express_Plus_Kit-01.jpg"
title="Almost ready to use kit"
alt="Almost ready to use SparkFun RTK Express Plus kit" /></p></li>
<li><p>now available caseless ui-less with budget antenna too ( <a
href="https://www.sparkfun.com/news/4893">blog</a> <a
href="https://www.sparkfun.com/products/18292">product</a>)</p></li>
<li><p><a
href="https://learn.sparkfun.com/tutorials/sparkfun-rtk-express-hookup-guide">SparkFun
RTK Express Hookup Guide</a> includes nice tour of the case and board
(guide for both Plus and original)</p></li>
</ul></li>
<li><p>Experiments</p>
<ul>
<li><p>kit: added recommended phone clamp, a tablet clamp and a
carbon-fibre photo monopod i had on-land, and the Cellular/Wi-Fi
AccessPoint i normally use, and voila <img
src="Annotated-RTK-P5310290.png" title="assembled kit and portrait"
alt="Assembled kit" /></p></li>
<li><p>test run: hike around a park in Boston, using MAINE live
correction data (sub-optimal but it worked).<br />
Note how <em>closely</em> to the path/sidewalk the track stays; marked
points at pitchers mound, porta-potty, stairs, flag-pole, fountain, are
all ±1m. <img src="Ronin-RTK-gh.png" title="Ronin Park, RTK hike"
alt="Ronin Park, RTK hike" /> <img src="QGIS-Screenshot-Ronin.png"
title="QGIS Ronin Park, OSM" alt="QGIS Ronin Park, OSM" /></p></li>
<li><p>first real data collection: family cemetery in Maine, using Maine
correction data (as should there) <img src="Maine-CORS-Network.png"
title="Maine CORS Network" alt="Maine CORS Network" /><br />
My first expedition is just within 25km radius of the nearest Maine CORS
base-station;<br />
a professional survey outside of radius would need to provide their own
base on a <±1cm mark to achieve cm accuracy.<br />
<img src="Alna-Cem-Annotated.png" title="Google Earth plan"
alt="Google Earth plan" /><br />
I geo-referenced the <a
href="https://digitalmaine.com/arc_wpa-cemetery/">WPA map of the
cemetery</a> in GEarth(Pro). (I need to learn to do that in QGIS.) And
then set markers for known ancestors (and a few select Uncles+Aunts)
using Plot Numbers from <a
href="https://www.findagrave.com/cemetery/89622/memorial-search?firstname=&middlename=&lastname=Walker&cemeteryName=Alna+Cemetery&birthyear=&birthyearfilter=&deathyear=&deathyearfilter=&memorialid=&mcid=&linkedToName=&datefilter=&orderby=n&plot=&includeMaidenName=true&page=2#sr-49665532">FindAGrave.com</a>.<br />
<strong>Note</strong> This WPA map is North right, viewed from road,
downhill, as will be a couple screenshots, but then we will switch
<strong>North</strong> up. <img src="Neal-FaG.png" title="Lt Uncle Neal"
alt="Lt Uncle Neal" /> I loaded the resulting KML file (including
sketched traces of the driveways) into SW Maps as a reference layer, and
created empty “stones” “photos” layers. I added a “plots” layer in the
field when i used the GPS to draw a polygon around corners of most
recent family plot. <img src="SW_Maps_Alna_2.jpg" /> The red
Google-Maps-ish markers are the KML look near here markers (and have
text of who if clicked). <img src="SW_Maps_Alna_4.jpg" /> The sunset
icons show where a photo was gathered. Track isn’t currently showing on
this view. <img src="Compare-RTK-TG6-ground-tracks.png"
title="Compare RTK to normal GPS track"
alt="Compare RTK to normal GPS track" /> My camera’s GPS was logging as
i walked also. Let’s compare the precision. Red Points on a dusty-rusty
line are the normal GPS track points, connect the dots. Bright blue line
is the RTK ground track. On a few loops, the regular GPS Track tracks
the RTK track <em>reasonably</em> well if crudely, but others are just
whacky - at no point did i jump the fence or even cross the drive north!
<img src="QGIS-Alna-Plan+Photos.png"
title="Plan and Photo points in QGIS"
alt="Plan and Photo points in QGIS" /> Here the red-dots are from the
Photo layer. At each headstone, i took a PHOTO using not my camera but
using the <strong>SW Maps</strong> program on the
<strong>tablet</strong>, which not only geotagged the photo at high
precision, it included it in the Photos layer of the GIS project. Here
we’ve imported the Photos layer together with the planning layer. Some
of the stones are rather far from their plan point, but those could be
funny-shaped larger plots. (Or bad metadata in grave index.) Note how
far the highlighted red dot (Nathaniel Plummer in right hand detail
panel) is from his plot marker. <img src="NatlPlummer-726.jpg"
title="Stone Nat'l Plummer" alt="Stone of Nat’l Plummer" /> This is
one of the 3 pictures taken for Nathaniel Plummer and wife.</p></li>
</ul></li>
<li><p>Caveats</p>
<ul>
<li>Coordinate Reference System:<br />
With an RTK system, you get coordinates in the US national reference
system, which is slightly different from the normal GPS and GMaps
“WGS84” reference system.<br />
To get sub-meter accuracy you have to understand and account for this,
but the details would be an entire other talk and are thus omitted.</li>
</ul></li>
<li><p>Glossary</p>
<ul>
<li><a
href="https://en.wikipedia.org/wiki/Networked_Transport_of_RTCM_via_Internet_Protocol">Networked
Transport of RTCM via Internet Protocol (NTRIP)</a></li>
<li><a
href="https://en.wikipedia.org/wiki/Differential_GPS">differential GPS
(DGPS)</a> can conceptually cover a range of correction enhancement
techniques. Specifically referred to original LF harbor broadcasts to
locally correct Selective Availability time offset for mariners (and VHF
for air). Largely supplanted by WAAS (& end of SA). RTK is
conceptually in the same family but more-so, transmitting corrections
for subtler forms of error.</li>
<li><a
href="https://en.wikipedia.org/wiki/Real-time_kinematic_positioning">real-time
kinematic positioning (<strong>RTK</strong>)</a></li>
<li><a href="https://en.wikipedia.org/wiki/GNSS">GPS: USA brand of
GNSS</a>; other sats are usable simultaneously.</li>
<li><a
href="https://en.wikipedia.org/wiki/Wide_Area_Augmentation_System">Wide
Area Augmentation System (WAAS)</a>, US GPS brand of (GNSS
augmentation](https://en.wikipedia.org/wiki/GNSS_augmentation)</li>
<li><a href="https://en.wikipedia.org/wiki/GNSS_enhancement">GNSS
enhancement</a> latest generation of max precision. Codeless L1/L2,
carrier-phase tracking, and RTK</li>
<li>Radio Technical Commission for Maritime Services
(<strong>RTCM</strong>) standardized RTCM Messages for RTK
corrections.</li>
<li><a
href="https://en.wikipedia.org/wiki/National_Marine_Electronics_Association">National
Marine Electronics Association (NMEA)</a> standardized format for raw
GPS output, <a
href="https://en.wikipedia.org/wiki/NMEA_0183#NMEA_sentence_format"><strong>NMEA
sentence format</strong></a>.</li>
<li><a
href="https://en.wikipedia.org/wiki/Spatial_reference_system">spatial
reference system (SRS) or coordinate reference system (CRS)</a></li>
<li><a
href="https://en.wikipedia.org/wiki/Real-time_kinematic_positioning#CORS">Continuously
Operating Reference Station (CORS)</a> “a network of real-time kinematic
(RTK) base stations that broadcast corrections to augment the local
accuracy of GNSS (e.g. GPS) readings”</li>
</ul></li>
</ul>
<h1 id="credits-and">Credits and ©</h1>
<ul>
<li>Composite work © 2022 William D Ricker . Licensed <a
href="https://creativecommons.org/licenses/by-sa/4.0">CC-BY-SA 4.0</a>
or later</li>
<li>WPA Map is Public Domain, thanks to DigitalMaine for scanning and
sharing.</li>
<li><a href="https://mdotcors.maine.gov/">MaineDOT CORS</a> corrections
feed for RTK</li>
<li>Thanks to Greg T N1DAM for pungent commentary.</li>
<li>OpenStreetMap maps are “© OpenStreetMap contributors” used under
their <a href="https://www.openstreetmap.org/copyright">guidelines</a>;
the data is available under the <a
href="https://wiki.osmfoundation.org/wiki/Licence">Open Database
License</a>.</li>
<li>Two original photos copyright © 2022 William D Ricker.</li>
<li>All modifications to images © 2022 William D Ricker, using <a
href="https://kornelix.net/fotoxx/fotoxx.html">Fotoxx</a>. Thanks
Mike!</li>
<li>GoogleMaps and web-scraped images used as Fair Use for educational
purposes.</li>
</ul>
</body>
</html>