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.
We've got a page just for you! We'll walk you through the basics of how GPS works, the hardware needed, and project tutorials to get you started.
Can't wait to see this come to fruition. Always been really interested in inertial guidance systems, but I've always been frustrated by the lack of easily accessible information on implementation.
For an eye-opener on how to visualize quaternions check out the half hour video from 3Blue1Brown over on YouTube. He takes us from visualizing in 1D up through 4D with impressive animations that are invaluable to understanding the concepts! https://youtu.be/d4EgbgTm0Bg
We're very fortunate that one of the initial uses for inertial guidance systems never actually got used, to wit, ICBMs carrying nuclear weapons.
One question that wanders through my mind (everytime I see the Draper message on PBS) is how our current solid-state MEMS IMUs compare to the mechanical IMUs that were used on the Apollo space craft.
+10 for the artwork.
Back in the early naughties the idea of using wifi strength to approximate location inside a building became possible when three or more wifi access points are active. The idea being that the strength of the wifi would be unique for a set of three wifi signals to each location within the space. Triangulation utilising other atmospheric phenomenon that can be measured or quantified could also use the same technique to determine location (e.g. measuring unique variables in office lighting intensity/frequency etc). The more datum points you have, the more confident you can become of your measured location.
https://asset-pdf.scinapse.io/prod/2105061875/2105061875.pdf
I remember reading about WiFi triangulation being among the possibilities. My interest at the time was in tracking firefighters in dangerous situations. (I was living in NYC at the time, and had a few friends among New York's Bravest.) WiFi access points couldn't be counted on in those situations, but I do remember thinking how good that would be in non-emergency situations. Incidentally, the same signal strength triangulation is now being worked on with Bluetooth 5.
Using your Firefighter idea, if each Firefighter, and other assets they had like the trucks, had a wifi unit on it, could you then use a mesh approach, in addition to this PDR idea? Lets say the trucks have good positional fixes, and 2 of the Firefighters in the building have a solid fix, they could then help triangulate the 3 other Firefighters. Just a thought, I wish I understood most of what you're talking, but I kind of get it :) Even if the triangulation was relative to the truck, that might be useful?
Maybe have the firetrucks bring a set of temporary GPS satellite emulators, position them outside and use...GPS?
Can't wait to build a gnss guidance system.
Cool article. I am definitely interested in PDR in tunnels, at least for XY positioning and thinking about playing with a magnetometer to help the inertial stuff. Right now i'm using GPS to set up my initial coordinates, but often it wanders 25-50 meters wrong, other times spot on (w/in 5m or so, close enough for me). Does anyone have a reference i can absorb about how to handle the wandering gps? Adding significant or expensive hardware isn't in the cards or waiting for the signal to stabilize sometimes isn't possible. TIA.