GPS and Global Absolute Positioning
by David Kohanbash on February 17, 2014
Hi all
Here is a post describing how to get absolute position for your robot. It discusses the basic methods and then ways to assist them for better accuracy.
GPS
GPS (or Global Positioning System as those in the know call it) is a widely used technology. It is not the “GPS” that you have in your car or on your phone; GPS is the signal used to make those devices work. GPS is a constellation of 32 satellites (as of December 2012) allowing at least 8 (most places 9) satellites to be visible to a given point on earth at any time operating at 1.57542GHz and 1.2276GHz. In order to compute your position the GPS receiver needs to see at least 4 satellites (there are special cases that require fewer satellites if you make assumptions on your position), so having 8 gives a measure of redundancy for reliability. Further when your view of the sky is occluded (buildings, mountains, etc..) you increase your chance of seeing the required 4 satellites by having more satellites visible.
(Four satellites is required since GPS does NOT do triangulation. It uses trilateration! This is the process of drawing circles/spheres around the world and computing the intersection of the circles/spheres. With just three satellites/circles you could be at two possible intersecting points, by using a 4th satellite/circle you can reduce that down to just one possible point (your position). In the case when you have three circles/satellites and two possible points, one of the points is often at an improbable location (assuming ground based robots) and can be eliminated to get your position. However assumptions can be dangerous if built into a GPS device so this is often not done.)
GPS has a time signal in addition to the position that can differ from standard UTC time (that most people use). This is due to GPS not accounting for the corrections we make in our time (such as leap seconds). At the time I write this the time from the GPS satellites as about 16s ahead of UTC time. The GPS reported time is accurate to the proper GPS time usually to within 100ns (and often better).
With no correction or assistive methods a “standard” GPS signal has an accuracy of less than 15 meters. It is often better than that but that is considered worst case. Using some of the methods discussed later on the accuracy can significantly be improved.
When a GPS is first powered on it can take a while to start reporting its position and gain a satellite fix. This is due to the GPS unit needing to get the satellite information. The satellites broadcast the entire “almanac” of satellites over a 12.5 minute period. In certain cases if the almanac is recent, the time in the receiver is recent, and the position of the receiver has not changed much the entire almanac does not need to be reacquired, leading to a faster initial position fix time. Using assistive methods the time to get this initial satellite fix can be improved.
You can not get heading from a GPS unit. However by interpolating with prior data or using a system that has two GPS antennas/receivers you can get heading.
In practice while GPS provides latitude and longitude there are many other global coordinate systems that be used within your robot.
GPS Correction Methods
Differential GPS (DGPS)
You can set up a differential GPS station within radio range of your robot that can provide better than 10cm accuracy. To do this you take a DGPS system and have it sit in a stationary spot for 24 hours so that it can observe the entire GPS constellation passing over the point. It then computes the error for each satellite and publishes it over its local radio (many DGPS’s have a serial output and you can use any radio you want). This method will usually require the robot to have another antenna to receive the corrections from your DGPS base station. Some DGPS systems let you store the satellite information so as long as the DGPS unit is not moved (or placed in the exact same spot) it will not need to wait the 24 hours after power up before publishing corrections.
Various countries (including Australia, the USA and Canada as well as in Europe) maintain some DGPS base-stations in select locations.
Real Time Kinematic (RTK)
RTK is similar to DGPS in that it uses a second base station unit, however DGPS only looks at the error in the ranges. With RTK it also looks at the phase of the carrier wave to remove the effect of the atmosphere. By doing a 24 hour constellation survey, the location of the base station is known very precisely as well as the error for each satellite. The RTK basestation can now publish those correction to your robot; this will often be done with a dedicated 900Mhz radio on both the basestation and on your robots. This method can get sub 5cm accuracy. The downside is these units tend to be expensive.
As a rough rule (from the Trimble documentation) you loose 2mm of position accuracy for every kilometer that your robot is from the RTK basestation.
Two companies that I have used are NavCom and Trimble.
Wide Area Augmentation System (WAAS)
WAAS is a network of satellites that use ground based stations in the USA to measure the variations in the GPS network, and publishes corrective signals that can be used by your GPS receiver for improved performance. It is similar to the DGPS above but it is satellite based. The goal of WAAS is to improve the GPS position estimate to be within 7.6 meters of the actual position. In practice WAAS assisted GPS systems can achieve 1 meter in the horizontal direction and 1.5 meters in the vertical direction of error. A good rule is to assume that GPS+WAAS has up to 3 meters of error (based on how much of the sky you can see).
Assisted GPS (aGPS)
Assisted GPS is using other information to help improve the GPS locations or to improve the time it takes to acquire a GPS fix. Common ways of assisting GPS are with an inertial navigation system (INS) that uses sensors to assist in the position estimate or with cell phone signals that helps provide the location.
OmniSTAR / Starfire
These services can get you accuracies similar to DGPS and RTK however instead of having a local base station that is needed for correction these use satellites that can be accessed from anywhere.
OmniSTAR is a paid subscription service that uses a network of satellites to publish GPS corrections. Using this system you can achieve DGPS quality positioning in most of the world without setting up your own DGPS base-stations. For OmniSTAR (as well as the other options above) to work you need a GPS receiver capable of getting the OmniSTAR corrections. There are several levels of service based on the accuracy that you need and your location.
NavCom’s Starfire is another option for super accurate positioning using its own satellite network. However the Starfire network only works with their line of products.
GPS Output Format
A standard output of GPS receivers uses NMEA strings. There are many NMEA messages that can be published. The one that is the most interesting to us is typically the GPGGA (sometimes just called GGA) that contains the position and time.
Here is the GPGGA message from http://aprs.gids.nl/nmea/
$GPGGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh
$GPGGA = Message ID
hhmmss.ss = UTC of Position
llll.ll = Latitude
a = N or S
yyyyy.yy = Longitude
a = E or W
x = GPS quality indicator (0=invalid; 1=GPS fix; 2=Diff. GPS fix)
xx = Number of satellites in use [not those in view]
x.x = Horizontal dilution of position
x.x = Antenna altitude above/below mean sea level (geoid)
M = Meters (Antenna height unit)
x.x = Geoidal separation (Diff. between WGS-84 earth ellipsoid and mean sea level. -=geoid is below WGS-84 ellipsoid)
M = Meters (Units of geoidal separation)
x.x = Age in seconds since last update from diff. reference station (often blank)
xxxx = Diff. reference station ID# (often blank)
hh = Checksum (starts with *)
Other Positioning Systems
The USA controls the GPS constellation and in theory could use it to misdirect people and foreign groups or disable it in certain world regions. As such other countries have been putting together GPS alternatives. By having multiple groups developing positioning systems the overall reliability of finding your position can increase. Also many GPS receivers can also use the other systems for improved reliability and accuracy.
European Geostationary Navigation Overlay Service (EGNOS)
This network by the Europeans has a handful of satellites and a bunch of ground based stations for determining position. Part of their system uses the position data from GPS. It is designed to provide position to an accuracy of 7 meters, however in practice it provides meter level accuracy. The EGNOS network is mostly restricted for use in Europe.
GLONASS (I am not even going to try the Russian for this name)
The GLONASS is the Russian version of GPS and the only other option that provides full global coverage. It is a network of 24 satellites (as of October 2011). GLONASS provides about 7 meters accuracy and is a little more accurate then GPS at the poles due to the orbit of the satellites.
Jamming, Spoofing, and Canyons
Without getting into a lot of detail you need to be aware that GPS (and the other systems) can be compromised. Signals can be jammed (this often occurs near military bases) by transmitting high power signals on the proper frequencies. This can also happen by mistake. In one case a robot was near a large Jumbotron television and was not able to get any GPS signal, as soon as the Jumbotron was turned off GPS continued to work as expected.
Spoofing is another concern. By manipulating and publishing fake GPS signals (or DGPS) signals the robot can think that it is in the correct location however in reality it is somewhere else. This is a suspected attack from Iran to capture a US drone.
Canyons are a “natural” way for GPS signals to be lost when the receiver no longer has line-of-site with the satellites. When operating in real canyons or urban canyons (surrounded by tall buildings) it is possible to lose the GPS signals. There is also a problem of multipath signals in these conditions where the GPS receiver sees reflected signals and can have reduced accuracy.
Sources:
http://en.wikipedia.org/wiki/Global_Positioning_System#Basic_concept_of_GPS
http://en.wikipedia.org/wiki/Wide_Area_Augmentation_System
http://en.wikipedia.org/wiki/European_Geostationary_Navigation_Overlay_Service
http://en.wikipedia.org/wiki/GLONASS
http://www.gps.gov/systems/gps/performance/accuracy/
Comments
[…] One of the most basic things a robot can know about itself is its position. This category of sensors gives the robot an idea about its position. Inclinometer – Inclinometers tell the robot if it is tilted and the angle of the tilt. These can be purchased in 1D and 2D versions to give you the roll and pitch of the robot. Magnetometer – Magnetometers are essentially a digital compass and returns the degrees yaw based on magnetic north. Often a magnetometer is integrated with inclinometers and they are sold as 3D inclinometers. Gyro – A gyro (sometimes called rate gyro) provides the rate of rotation. This can be integrated to get your angle. While historically they are spinning devices the new ones use light and are some times called FOG for Fiber Optic Gyro, or RLG for Ring Laser Gyro. Each of those versions being higher quality (and more expensive) then the one before. Accelerometer – Accelerometers as the name says measures accelerations. A multi-axis accelerometer can also provide the direction of the forces. They can also be used for measuring vibrations and impulse accelerations. IMU, INS & GPS – Finally we get to the Inertial Measurement Unit or IMU (image above). IMU’s typically have 3 accelerometers, 3 gyros, and sometimes a magnetometer. This lets the IMU provide roll, pitch, and yaw as well as an x, y, and z position estimate. Often an IMU is paired with a GPS and filtered in an INS or Inertial Navigation System (image below). Click here for a full discussion on GPS. […]
[…] and Longitude is probably the most widely know global coordinate system and the one used by GPS to report position. This system specifies a position by the angular distance from a central ellipse (such as the […]
[…] Within the world of hardware there are some options for time keeping. Probably the easiest to use is GPS. Using a GPS system you can get the current time and many GPS units will also output a Pulse per Second (PPS) signal that can be used to aid in timing for other devices. You can use the time from the GPS to update your system clock as well as use it for your log files. NTP can be configured to use the GPS/PPS signal for improved accuracy. Here is link that walks through configuring a computer to use NTP with GPS http://www.rjsystems.nl/en/2100-ntpd-garmin-gps-18-lvc-gpsd.php. I should point out that the GPS time is not actually the correct time, and there is an approximately 16 second offset ( click here for more details). […]
[…] difficult to do accurately, especially when you need to track position in a variety of locations. GPS is not accurate for small movements and can have jumps as the position estimate changes. One good solution is the Leica Total Station. The Total Station can measure a robots position with […]