The onboard GPS hardware built into consumer smartphones has improved immensely over the years, along with the software technology to help augment positional accuracy automatically using other sources of data, like cellular and Wi-Fi signals. Users of Fulcrum frequently ask about our experiences with the built-in GPS antennae on iPhones, iPads, and the myriad of Android devices available to find out what sorts of positional accuracy and precision they can expect to get using different flavors of hardware. There’s also a growing universe of 3rd-party aftermarket devices that can be paired to smartphones or tablets using Bluetooth, allowing users to override the onboard device readings or add new capabilities not otherwise available out of the box.
In order to better understand what sort of accuracy results can be had with different device configurations, we set up a quick experiment. We decided to record readings from a few types of devices and use them in a controlled setting to see what type of results we could get on position and precision.
For this experiment, I wanted to see what kind of improvement in data quality could be achieved by using an external Bluetooth GPS unit, in this case the Dual XGPS-150, an affordable, cross-platform GPS receiver. The XGPS advertises an accuracy range of ±2.5 meters, which should be significantly better than the consistency of the iPhone’s onboard receiver. These were my two configurations to compare:
- iPhone 5S, built-in GPS antenna with Wi-Fi and cellular LTE enabled (for assisted GPS)
- Nexus 7 Android tablet, paired with Dual XGPS-150
Methodology
My strategy was to pre-select a number of locations within a local park to perform the experiment. Using Fulcrum’s web editor with satellite imagery base layer, I created my “Benchmark” point locations to collect data against with a variety of properties: 2 points with wide open sky, 2 with small building obstructions right next to picnic shelters, and 1 point underneath some thick tree canopy cover. I figured this would give me some pre-defined locations to collect against, and also simulate some real-world environments and see how they would skew the results.
For each of the benchmark spots, I collected 5 data points with each device, a total of 10 points at each benchmark, for a total of 50 samples. At each benchmark location, I stood with each device and waited 30-60 seconds to let the GPSes get a good lock before logging, then collected each point with at least 30 seconds between measurements. Later on when mapping the resulting spread of point locations, I wanted to be able to see the variation in quality by device.
Getting Set Up
To perform my survey sampling, I built out a GPS Field Testing app to use within Fulcrum to record findings on each configuration. In addition to the raw location data, I also wanted to log the obstructions present at each location, the current weather coverage (overcast, rain, clear, etc.), and also the exact timestamp for the sample. This let me sync up my findings after the fact, and to view them on the Fulcrum map view to see the spread visually, and also to export to a shapefile and pull into QGIS for further spatial analysis.
Fulcrum GPS Field Testing App
The setup for getting the Bluetooth GPS joined up to the Android tablet requires a short process, but it’s simple enough to get working. To allow a 3rd-party device to override the onboard location services API, you need to use a helper application that will enable a “mock GPS provider”. I downloaded an app called Bluetooth GPS from the Google Play store, which allows you to see the readings coming from the Dual XGPS, and to enable the mock provider to be used in place of the built-in receiver. Once that’s installed, and the GPS receiver is ready, you can pair up and connect with the device to get it going. You can also check and make sure that Fulcrum is getting the proper location readings from the device by looking at the readings in Fulcrum’s location tool (it will show “Fused (mock)” as the location provider).
For iOS, Dual has a nice Status Tool app you can download that’ll give full read-outs from the receiver when it’s paired, like the satellite constellation info and signal strength, current data coming from the GPS sensor, and the device’s battery level. For Android, the Bluetooth GPS app mentioned previously has something similar, a series of status screens to see the satellite data, and also the log of NMEA data from the sensor.
Bluetooth GPS app for Android
Dual GPS Status Tool
Testing
I went out in the morning hours to conduct the experiment, with clear to partly cloudy skies, so I expected pretty consistent results. Each point was logged according to my devised methodology, with both devices working well for performing the tests. I could tell that while capturing the measurements under open sky, the “current location” marker in Fulcrum stayed steadily in a tight area. When standing next to structures that occluded parts of the sky, the location jumped around more erratically, exhibiting more error with a partially-obstructed line of sight to the satellites.
While out collecting, I could see that overall the Dual GPS device showed a much less erratic signal, and generally stayed within a narrow area even when walking around. The onboard sensor on my iPhone showed an accurate location, but would jump around more, especially when underneath tree cover or near structures.
Results
The results were somewhat expected, but also interesting to see mapped against the benchmark data to see just how much the accuracy and precision vary from situation to situation. I took my results from Fulcrum and mapped them in TileMill, so you can see the spatial spread of the data points based on the location of each. In the map below, the red points are my benchmarks, green are iPhone 5S, and blue are Nexus 7 with the Dual XGPS paired. Zoom in close on each benchmark to see the spread of measurements for each:
Looking at the points captured with unobstructed sky (top of the parking lot), you can see that the Dual XGPS’s precision is dead on, with a precision of ±2 meters, and the iPhone shows pretty precise results there, as well. With the partially-obstructed locations next to the picnic shelters, you can see the precision degrade somewhat on both devices, but the Dual device still keeps its location results more accurately than the iPhone, with less variance in quality. Both devices did pretty well underneath the tree canopy, but again the Dual edged out the iPhone in terms of consistency.
You can access the full map here. I’ve also uploaded the raw Fulcrum data results to Google Sheets where you can download and check out for yourself.
For a sub-$100 GPS receiver, the Dual XGPS shows good results, and lends a level of consistency that would be great for location-dependent situations like surveying and mapping projects that need that sub-10 meter level of precision.
To read up on more detail on testing GPS devices for accuracy, check out these wiki articles on the subject: