||2 years ago|
|fixes||2 years ago|
|www||2 years ago|
|.gitignore||2 years ago|
|Dockerfile.processor||2 years ago|
|README.md||2 years ago|
|__init__.py||3 years ago|
|celery_test.py||2 years ago|
|clean.py||2 years ago|
|gaw.json||2 years ago|
|makefile||2 years ago|
|places.json||2 years ago|
|playground.py||2 years ago|
|processing.py||2 years ago|
|radars.json||2 years ago|
|requirements.txt||2 years ago|
|requirements.txt_unpinned||2 years ago|
|run||4 years ago|
|settings.py||2 years ago|
|simulator.py||2 years ago|
|simulator_test.py||2 years ago|
|soapy_testing.py||2 years ago|
|tacview.py||2 years ago|
|utils.py||2 years ago|
|viewing.py||2 years ago|
|viewing_test.py||2 years ago|
This started out as a way to play around with numpy and some basic concepts in digital signal processing - thinks like heterodyning and pulse compression. It quickly became a way for me to play around with more radio and radar concepts - not always accurately, mind you, but making mistakes is learning.
Now it is primarily a distributed radar simulator, and recently I've even been fooling around with this code and actual software defined radios using Soapy. There's ... not a lot to see yet, in that area.
Look at the
playground.py to get a quick overview of what's available.
It starts with a list of locations (just latitude and longitude), and
a list of targets (lat, lon, altitude, speed, heading...).
Each simulated radar location then gets a list of the relevant targets at which the simulated radar antenna is pointing, calculates the timing, amplitude, doppler shift, etc of the returned pulses for each target, and sums them all up with some noise. This becomes the received data for that bearing.
The transmitted pulse is convolved or correlated with the received data, (See
and then this can be visualized in a number of different ways. (See
The data source for targets to simulate can be from
dump1090 aircraft.json files, or DCS World style objects (Primarily for
the GAW GCI servers right now), and it is easy to add new data
sources. I will probably add Tacview format support shortly.
Multiple data sources with multiple simulated radars can be
simulated simultaneously, though you'll pay the price in processing time, naturally.
- Transmitted frequency is not actually taken into effect in the radar equation.
- Currently deals almost entirely in "real" samples rather than complex.
- Slow, far too slow for actual signals.
- OpenCL "pulse compression" is actually slower than numpy by an order of magnitude (which is fine, it was actually just an excuse to play with OpenCL).
- ADSBExchange closed their public API, so the VRS target support is old.
- Incredibly poor testing and documentation. Sorry, this is primarily for me still, though if you're interested I'd love to chat!