GNSS tracking has improved greatly over the past decade, but what about movement and position tracking without satellites? Is it even possible?
About a decade and a half ago I found myself reading white papers regarding personal indoor positional monitoring, specifically as it relates to tracking firefighters in burning buildings, collapses and other hazardous situations. Many things were being tried, but no real solutions were being found. However, with advances in technology since then, and releases here at SparkFun such as our u-blox line with RTK and Automotive Dead Reckoning, or ADR, personal positional monitoring without the aid of GPS looks like it might be getting very close to reality.
But looks can be deceiving…
One of the really interesting advances to come out in recent years in the field of location tracking has been dead reckoning. Automotive Dead Reckoning (ADR), at an extremely simple level, combines a 6-DoF or 9-DoF IMU with a GNSS module. While GNSS satellites are available, positioning is tracked that way.
But what happens when contact with those satellites is disrupted? Suppose you head into a tunnel, or get lost within the high concrete walls of an urban jungle? The IMU takes over, and continues to estimate your position based on the information it is receiving using data from the accelerometer, gyyroscope and possibly the magnetometer. On initial setup, the unit has to be calibrated, which involves driving around, turning to the left and to the right, and maintaining speeds of over 30 kph, or close to 20 mph.
While I might still be able to run that fast for short sprints, I don’t think I could maintain that speed long enough for a proper setup, were I to simply attempt to use the ADR setup for positional tracking on foot. Additionally, even with the sensor on a fixed surface like a vehicle dashboard, positional accuracy can only be counted on for about 90 seconds. Excessive error accumulation, or what we usually just call drift, seems to be the main issue to overcome when working with Pedestrian Dead Reckoning, also referred to as PDR. Or as I prefer to call it:
There are ways to decrease the error accumulation, most notably by using linear quadratic estimation, also known as the Kalman Filter. This correction method is used extensively in aircraft and spacecraft navigation, as well as robotic motion planning and trajectory optimization. If I were to say it made continuous estimates based on previous measurements over time, I would be grossly understating what it does. But basically, that’s what it does. This two-step algorithm has a predictive step, wherein it makes estimates of the current state along with its assumed variances, and after the observed step, updates the estimates using a weighted average. This cycle is continually repeated, improving the estimates with each cycle. And since this can all be done in real time, using only current measurements and predictions, it makes it very well suited for dead reckoning.
And yet, PDR is still incredibly difficult to achieve. I know that I definitely need to put more focus on quaternions, but that's more than just a "quick glance and I understand it" kind of thing.
Of course difficulty, or even impossibility, is certainly no reason to quit trying. As William Goldman wrote in The Princess Bride when Princess Buttercup tells Westley that they’ll never survive the fire swamp, “Nonsense. You’re only saying that because no one ever has.”
“...Because no one ever has” has never been a deterrent to engineers nor makers, but more of a challenge, a gauntlet thrown. I’m starting with as few components as possible, simply for initial proof of concept. In the image above, you can see that I’ve got a SparkFun LoRa Thing Plus - expLoRaBLE as the brains of my build. I do this for consideration of future iterations of this project. I had originally considered a board with WiFi capabilities, but I think that for my end goal, LoRa is going to be the better route to take.
My end objective with this is to be able to transmit location information, in my imagined case that would be the location of a firefighter inside of a building, and have it received at the on-site base of operations. Since there’s a good chance that said base would be further away than 50 meters, I scrapped my initial idea of using a WiFi-enabled board. Using LoRa would increase this range quite substantially, and with the BlueTooth module the received information could be sent to a tablet at the base station running something like SW Maps, or a similar mapping app, allowing real time tracking of the mobile unit. You can see a great example of this in the video for the SparkFun RTK Surveyor, and even though in that example the data being sent to the SW Maps app is being received and transmitted from the same unit, it could just as easily receive location data from a separate unit, then pass it on via Bluetooth to the app.
I’m using our SparkFun Dead Reckoning Breakout module for positional data, as it uses the ublox NEO-M8U module, which has an onboard gyroscope and accelerometer, and is the module used on one of our Automotive Dead Reckoning boards. I had initially planned on having a 9DoF board, so the absence of a magnetometer concerns me a little, but if this module works for ADR, I can certainly give it a try with PDR. I believe that I will most likely need to add a magnetometer or switch to a separate 9DoF board at some point, but that’s Future Rob’s problem.
I’ve also added an RGB Backlight 16x2 SerLCD to give me a bit of information on the go. I’m simply using it to show me longitudinal and latitudinal position. I would have preferred something that could display a bit more information, such as number of GNNS satellites in view, so that I would know when my position was being tracked by satellite and when it switches to dead reckoning. Luckily there’s a simple workaround. If there are satellites in view, the backlight is green. However, if the SIV number drops to zero, the backlight switches over to red.
I’ve spent the past month doing a fair amount of research on PDR, studying research papers by university students and engineers from China, Masters dissertations from Belgium, and about half a dozen other pieces from around the world. While the technology available today is exponentially better than it was a decade and a half ago, the concept has remained the same.
Positional estimations can be calculated by taking relative movement from the previous positions. Of course, there will still be drift, and this is where the problem lies. But by incorporating data from multiple sensors, using AI and Machine Learning to better fine tune that data, and even incorporating technology that doesn’t yet exist, we will continue to get closer every day to low cost, highly accurate PDR, and just like GNSS did for outdoor positioning, the perfecting of this technology will save lives.
I plan on continuing to research and work on this idea, and will keep you informed as I progress. Of course, any ideas, concepts and similar projects are always welcome, too! Let me know what you’re thinking and working on.