GPS Data Accuracy on Inclines

I have a BU-353, and I am using it in a car. I want to use it to get a more accurate speed reading than RPM/wheel diameter calculation can give me. I am wondering how the incline of a slope, that the car might be going up would impact the GPS reading (specifically NMEA VTG and RMC data). In other words, would the speed out put from the GPS be inaccurate if the altitude of the car is changing, and if so how could I account for that in the software?

The device can also use the following NEMA Protocols: GGA, GKK, GSA, GSV, RMC, VTG, MSS, ZDA

Next to longitude and latitude data GPS gives also altitude information. It's up to the receiver's software designer to decide if she uses that information. She should, and then the speed is determined by

$Speed = \dfrac{\sqrt{(\delta \mbox{ } longitude)^2 + (\delta \mbox{ } latitude)^2 + (\delta \mbox{ } altitude)^2}}{\delta \mbox{ } time}$

Note that distance as a difference in latitude is constant (111.1 km per degree), while for longitude it's function of latitude: 111.1 km per degree at the equator, 71.4 km per degree at 50 degrees north or south, for instance.

edit
The BU-353 supports NMEA's GGA sentence, which gives you essential fix information including longitude, latitude and altitude.

• I thought gps calculated its speed using the frequency compression of the incoming signal? Is this wrong? If it's correct would that be significantly affected by the slope incline? – retorquere Jul 3 '17 at 18:28

A GPS receiver isn't going to give you good speed values in the short term relative to what tire rotation can tell you. There is some jitter on each GPS fix, so subtracting the positions from two fixes will have a significant distance error for the purpose of computing speed of a car.

I would look into using the GPS over a long and flat stretch of road to calibrate the travel length of a tire rotation, then use that for immediate speed measurements, which your speedometer does already. You could even have the GPS system working the background to make small adjustments to the tire rotation calibration based on longer distance and time averages when the car is going reasonably straight without much speed variation. If it did this automatically whenever a good circumstance arose, the tire rotation speed measurement should be quite accurate.

If you need more, then you probably have to look into a fifth wheel just for the purpose.

It's hard to say how much accuracy a GPS system might loose due to elevation change. GPS is much better at measuring lat/lon position than altitude, particularly in the short term. However, keep in mind that something that appears steep to a car still has a rather mild slope mathematically. The cosine of even a "steep" road is still close to 1.

• Right: to be accurate, on a 20% slope the error between "real" and "horizontal" distance will be around 2% – clabacchio Apr 27 '12 at 12:47

It may complicate the system, but an IMU (Inertial Measurement Unit) can greatly improve the performance of your speedometer, if added to the GPS receiver. That applies also for slopes.

An IMU consists in a set of accelerometers, gyroscopes and magnetometers (they work well together, but you don't necessarily need them all), which allow an accurate calculation of the heading of your system (the car in this case). The way in which this is calculated is often referred as AHRS (Attitude and Heading Reference System).

The benefit is immediately clear: knowing your heading helps greatly a GPS-based system in determining your movement direction and speed, which can be used to estimate your position over different points. The GPS receiver by itself is very noisy and inaccurate, and this results in your measured position to bounce around the real one in a radius of 1 to 20+ meters.