Okay, so today I’m gonna walk you through my little adventure with the COCOM GPS thing. It was kinda bumpy, but hey, we got there in the end!

First off, what’s COCOM? Honestly, before this project, I just knew it as something that messes with GPS signals to stop missiles or whatever. Didn’t think much about it. Then my boss throws this task at me: “Figure out how it affects our navigation system!” Great.

So, I started digging. Lots of reading about GPS, selective availability (SA), and all that jazz. My head was spinning. Turns out, COCOM (or what replaced it) intentionally degraded the accuracy of civilian GPS back in the day. They called it Selective Availability. It was like adding noise to the signal so you couldn’t get a super precise fix unless you were in the military or had some special permission. Thankfully, SA was turned off in 2000, but the legacy of it is still there in some systems.

My goal? To simulate this COCOM effect and see how our navigation software would react. I figured I’d need to mess with the GPS data somehow. That meant finding a way to inject errors into the latitude, longitude, and altitude readings.

The plan:

  • Grab some real GPS data. I used a GPS logger I had lying around and recorded a drive around the block.
  • Write a script (Python, of course!) to read that data.
  • Add some random errors to the lat/lon/alt values. Nothing too crazy, just enough to simulate the SA effect. I played around with different error ranges.
  • Feed this “corrupted” data into our navigation software.
  • Watch what happens! See if it freaks out, gives wrong directions, or whatever.

The actual doing:

Okay, so grabbing the GPS data was easy enough. The logger spat out a standard NMEA file. Parsing it was a bit of a pain, but nothing a few regular expressions couldn’t handle. I used the `pynmea2` library – that saved my life.

Then came the fun part: screwing up the data. I used `*()` in Python to generate random numbers within a specific range. I started with a small range, like +/- 10 meters, and gradually increased it to see how much our system could handle.

The results:

At first, nothing much happened. The navigation software just smoothed out the errors and kept going. But when I cranked up the error range, things got interesting. The reported position started jumping around, the estimated time of arrival went haywire, and the route sometimes recalculated in weird ways.

What I learned:

  • Our navigation system is pretty robust. It can handle small errors in GPS data without too much trouble.
  • But larger errors can definitely cause problems. It’s important to have some safeguards in place, like checking the GPS signal quality and rejecting data that’s too far off.
  • This whole exercise gave me a much better understanding of how GPS works and how it can be affected by things like COCOM/SA.

Next steps:

I want to try simulating other types of GPS errors, like multipath interference and atmospheric effects. Also, I want to explore different filtering algorithms to see if we can improve the system’s ability to handle noisy GPS data.

So yeah, that’s my COCOM GPS adventure. It was a bit of a rabbit hole, but I learned a lot along the way. Hope this helps someone else out there!

Leave a Reply

Your email address will not be published. Required fields are marked *