From 3b4ed11a09205cfc25f84b1c1153061f1ecfa12e Mon Sep 17 00:00:00 2001 From: Mark Jessop Date: Sat, 2 Mar 2019 17:35:50 +1030 Subject: [PATCH] Fix some typos, add additional info into the readme. --- auto_rx/test/README.md | 34 ++++++++++++++----- auto_rx/test/notes/dft_detect_optimization.md | 2 +- auto_rx/test/test_demod.py | 1 - 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/auto_rx/test/README.md b/auto_rx/test/README.md index 850e0f3..08ec59e 100644 --- a/auto_rx/test/README.md +++ b/auto_rx/test/README.md @@ -1,14 +1,28 @@ # Radiosonde Demodulator Testing Scripts +These scripts are used to test the signal processing performance of the scripts used in the radiosonde_auto_rx project. Our aim is to ensure performance is not degraded by any updates to the software. + +## Dependencies For these scripts to work, we need: * The following directories created: samples, generated - * The various demodulator binaries (rs41ecc, rs_detect, etc... ) located in ../ Currently using: + * The various demodulator binaries (rs41ecc, dft_detect, etc... ) located in ../ Currently using: * dfm09ecc, m10 (from radiosonde_auto_rx), rs41ecc, rs92ecc, rs_detect, dft_detect * The above can just be built using the auto_rx build.sh script. * CSDR installed and available on $PATH: https://github.com/simonyiszk/csdr * The base high-snr samples located in ./samples/. These can be downloaded from http://rfhead.net/sondes/sonde_samples.tar.gz * Python (2, will probably work in 3), with numpy available. +To perform the tests involving rtl_fm, we require tsrc (from codec2-dev/unittest) and Viproz's hacked rtl_fm to work. +Viproz's rtl_fm is available from here: https://github.com/Viproz/rtl-sdr/ +Build this, but do NOT install it. Instead, copy the rtl_fm from build/src to the *this* directory, and re-name it to rtl_fm_stdin +You still need a RTLSDR connected to be able to run this. + +tsrc is available at http://svn.code.sf.net/p/freetel/code/codec2-dev/misc/tsrc.c +HOWEVER there is a bug which makes it neglect the -c (complex) option. +Change line 59 to read: int channels = 2; +and compile with gcc tsrc.c -o tsrc -lm -lsamplerate +Then copy this file to *this* directory. + ## generate_lowsnr.py This script generates a set of low-SNR samples based on the base high-SNR samples in ./samples/ Calibrated-level noise is added to the sample to produce a file with a user-defined Eb/No ('SNR per-bit'). @@ -42,10 +56,10 @@ Check the processing_type dict in the script for the differnet demodulation opti Example: ``` # Demodulate all RS41 samples. -$ python test_demod.py -m rs41_csdr_fm_decode -f "../generated/rs41*.bin" +$ python test_demod.py -m rs41_csdr_fm_decode -f "./generated/rs41*.bin" # Run dft_detect across all samples. -# python test_demod.py -m csdr_fm_dftdetect -f "../generated/*.bin" +# python test_demod.py -m csdr_fm_dftdetect -f "./generated/*.bin" ``` The output is a csv of: filename, result @@ -60,15 +74,19 @@ Depending on the mode, the result could be a packet count, or it could be a succ - Converted to 96k float IQ using: cat rs41_960k.bin | csdr convert_u8_f | csdr fir_decimate_cc 10 0.005 HAMMING > rs41_96k_float.bin -rs41_96k_float.bin - Vaisala RS41, Serial Number N3920808, 120 packets -rs92_96k_float.bin - Vaisala RS92, Serial Number M2513116, 120 packets -dfm09_96k_float.bin - Graw DFM09, Serial Number 637797, 96 Packets -m10_96k_float.bin - Meteomodem M10, 120 packets -imet4_96k_float.bin - iMet-4, Serial Number 15236, 119 packets +* rs41_96k_float.bin - Vaisala RS41, Serial Number N3920808, 120 packets +* rs92_96k_float.bin - Vaisala RS92, Serial Number M2513116, 120 packets +* dfm09_96k_float.bin - Graw DFM09, Serial Number 637797, 96 Packets +* m10_96k_float.bin - Meteomodem M10, 120 packets +* imet4_96k_float.bin - iMet-4, Serial Number 15236, 119 packets + +There are also a set of noise samples available [here](http://rfhead.net/sondes/noise_samples.tar.gz), which are useful for checking the detector scripts for false positives. # Older Notes +These notes are here for legacy reasons, in case they are useful for future work. + ## Reading data into Python ``` import numpy as np diff --git a/auto_rx/test/notes/dft_detect_optimization.md b/auto_rx/test/notes/dft_detect_optimization.md index e8d347b..bff97e8 100644 --- a/auto_rx/test/notes/dft_detect_optimization.md +++ b/auto_rx/test/notes/dft_detect_optimization.md @@ -33,7 +33,7 @@ We can see that the M10 radiosonde has a very high correlation score against noi Note that as we don't have any LMS6 IQ samples at the moment, we will not be including LMS6 results in any further analysis. -## Threshold Experimentings +## Threshold Experiments Using these minimum threshold figures, the next aim is to determine thresholds which result in no false detections of other sonde types. We can do this by running dft_detect over all the calibrated-SNR samples and observing the resultant correlation scores. We start out with thresholds set 0.1 higher than the 'correlation noise floor'. The following plots show the correlation score for each set of radiosonde samples (RS41, RS92, DFM, M10), vs Eb/N0. The dotted points indicate a point in which the correlation score exceeds the threshold, and hence we considered a sonde type to be detected. diff --git a/auto_rx/test/test_demod.py b/auto_rx/test/test_demod.py index 4ef47e5..a0e3964 100644 --- a/auto_rx/test/test_demod.py +++ b/auto_rx/test/test_demod.py @@ -157,7 +157,6 @@ processing_type = { # Build this, but do NOT install it. Instead, copy the rtl_fm from build/src to the *this* directory, and re-name it to rtl_fm_stdin # You still need a RTLSDR connected to be able to run this. # -# # tsrc is available at http://svn.code.sf.net/p/freetel/code/codec2-dev/misc/tsrc.c # HOWEVER there is a bug which makes it neglect the -c (complex) option. # Change line 59 to read: int channels = 2;