Hi Dan,

This is something I fully do on the side (evenings, weekends) in order to
help an animal rescue charity. So very much a fun / volunteering effort and
I hope to build something they can use in anger. For my dayjob I work in
software/robotics but radio is still very new terrain for me.

Cheers
Dirk

On 7 February 2017 at 03:18, Dan CaJacob <dan.caja...@gmail.com> wrote:

> Hey Dirk,
>
> Just curious, are you doing this for fun or profit?
>
> On Mon, Feb 6, 2017 at 3:40 PM Dirk Gorissen <dgoris...@gmail.com> wrote:
>
>> Thanks Marcus & Martin for the responses.
>>
>> To clarify, Im working on a wildlife tracking problem but from the air
>> (drone). Im purely interested in finding out if the pulse (which gets
>> transmitted at a fixed interval of 1500ms) occurred or not. If it did, I
>> know Im within some range of the animal of interest. I have no control over
>> the transmitter and no further technical details (unfortunately). I did
>> take some screenshots to give you an idea what it looks like:
>>
>> https://goo.gl/photos/Y3Ea6kJo1ewrcDYM8  (taken with tx at close range
>> to static antenna)
>>
>> I expect quite a bit of (fairly uniform) background noise from other
>> electronics to deal with and there are hardware things that can be
>> improved. But for the purposes of this thread I want to ensure Im doing the
>> right things on the DSP side.
>>
>> And yes, Im pretty much a DSP novice but happy to learn. So be gentle :)
>>
>> >So, my understanding is that your SDR device first downconverts your
>> 150.22
>> >MHz signal to complex baseband, is that right?
>>
>> Yes, so think something like an rtlsdr or airspy.
>>
>> About the FFT question, thanks I got a bit confused. I now understand
>> that if I want FFT over a longer timeframe I should just take a larger size
>> and I can vary the sampling rate (e.g., via decimation) to get the
>> resolution (Hz per bin) I require.
>>
>> Im now wondering if there is a founded way to pick an optimal FFT size
>> given my pulse is only 10ms long. Im guessing it should not be much longer
>> than the 10ms equivalent but maybe there is a noise tradeoff (?).
>>
>> In any case I agree this is a time based phenomenon so a time domain
>> approach should likely be the main one.
>>
>> So it seems I should at least be trying an FIR filter to do cross
>> correlation. Not quite clear how I would actually do that in practise with
>> the gr block though. How would I provide the second input (the synthetic
>> pulse)?
>>
>> I have come across matched filters before but so far failed to bridge the
>> gap from theory to code. This is partly the reason I came to gnuradio.
>>
>> >You can implement a limited-length autocorrelation/crosscorrelation
>> relatively
>> >easily; we can talk about how that would look like, but my gut feeling
>> is that this
>> >might be something that might not make too much sense in your specific
>> use
>> >case.
>>
>> Not too sure myself tbh, but happy to take your lead.
>>
>> >it's possible cyclostationary estimation methods might be helpful here.
>>
>> So I googled this and poked around a bit on https://cyclostationary.blog.
>> Looks really interesting but out of my depth here..
>>
>> Thanks for the tip on gr-fosphor.
>>
>> Cheers
>> Dirk
>>
>> On 5 February 2017 at 12:06, Marcus Müller <marcus.muel...@ettus.com>
>> wrote:
>>
>> Hi Dirk,
>>
>> nice to have you around, welcome to GNU Radio! I don't know your level of
>> DSP knowledge, so please excuse if I either throw too many high-level
>> concepts at you or assume you could want to read up on something that you
>> already know. If something in my reply is unclear, please don't hesitate to
>> ask for clarification.
>>
>> So, my understanding is that your SDR device first downconverts your
>> 150.22 MHz signal to complex baseband, is that right?
>>
>> So, what is the objective here? You say you need to /detect/ the pulse,
>> but for what purpose? Is it just about detecting the presence of the pulse,
>> or is it used for eg. time detection?
>>
>> Your filter->decimate approach sounds very reasonable; I'm not 100%
>> convinced by using the FFT for something that is concentrated in *time*
>> domain, but that might depend on the purpose mentioned above.
>>
>> 2) Im somewhat confused about the FFT block if I just pipe the SDR
>> straight into it. The FFT size is set to 1024 and the window is set to
>> "window.blackmanharris(1024)". So Im assuming the FFT just applies one
>> window (?) and outputs 1024 bins. However, how many samples are
>> accumulated before the FFT is run? I would have assumed I can control
>> that too. And if so, should I best be doing this every 50ms, 500ms,
>> 2000ms, ..?
>>
>> I'm not sure I understand the question. An FFT is simply an DFT. It's a
>> mapping of N-dimensional vector to N-dimensional vector, [image:
>> tblatex-3.png]. The window is multiplied point-wise with the input
>> vector prior to the DFT to avoid spectral leakage.
>>
>> There's no accumulation involved anywhere.
>>
>> 3) I can use the rational resampling block to bring the sample rate
>> down to 48khz so I can use the audio sink. From that I can still hear
>> the pulse even if it is not visible in the spectrum (gui sink). Im
>> assuming this is just because the plotting cannot keep up?
>>
>> Maybe, or maybe the spectrum sink really isn't the right tool to
>> visualize a pulse! Again, we might want to discuss what this pulse is and
>> what it's used for.
>>
>> 4) In the time domain I guess I can generate a synthetic pulse of the
>> same length / frequency and then cross correlate.
>>
>> Hm, but correlating a signal with a known fixed sequence is,
>> mathematically, a convolution.
>>
>> That is identical to doing FIR filtering – in fact, if we consider the
>> shape of your pulse as what is often referred to as *pulse shape filter*,
>> then that filter in the receiver would simply be the *matched filter* to
>> that.
>>
>> Not obvious to me
>> how to generate the required pulse in gnuradio though (would a
>> continuous signal work?).
>>
>> "Continuous" would mean you'd do an infinite-length correlation, so
>> that's not 100% possible.
>>
>> I also notice there are no built in
>> (auto)correlation blocks?
>>
>> Hm, but an autocorrelation would take a complete signal, shift it by all
>> possible shifts and calculating the dot product between the shifted version
>> and the unshifted, right? That would require to have the complete signal at
>> once.
>>
>> But GNU Radio is a streaming architecture, so that can't work.
>>
>> You can implement a limited-length autocorrelation/crosscorrelation
>> relatively easily; we can talk about how that would look like, but my gut
>> feeling is that this might be something that might not make too much sense
>> in your specific use case.
>>
>> I found the "correlation estimator" but not
>> clear how to use it. As for dealing with the frequency uncertainty
>> problem. Does one just try correlating with different freuencies and
>> pick the best one? Or what is the good thing to do here given I may
>> also have to deal with quite a bit of noise.
>>
>> As a gut feeling: you don't really care about whether the pulse is
>> *exactly* at a certain frequency (it's absolutely not normal for
>> wireless receivers to know the exact frequency a priori), but when it
>> happens. So we might want to discuss the kind of pulse, and kind of noise
>> we're talking about.
>>
>> As a further gut feeling: I think your autocorrelation question indicates
>> you might be on a very good track – it's possible cyclostationary
>> estimation methods might be helpful here.
>>
>>
>> Best regards,
>>
>> Marcus
>>
>>
>>
>> On 02/04/2017 11:39 PM, Dirk Gorissen wrote:
>>
>> Fist of all, while Im a newbie to (gnu)radio, congrats to the dev team
>> for a great piece of software.
>>
>> My question is about the need to detect a weak, noisy, short (10ms)
>> pulse that occurs every 1.5 seconds. It is transmitted at a particular
>> frequency (e.g., 150.22 MHz) but in practise I have found this can
>> vary by as much as +/- 500Hz. There is no modulation, it is simply an
>> on/off keyed pulse.
>>
>> Say I have an SDR generating data at 2.5 MSPS. I have so far been
>> experimenting with standard scipy/numpy routines to collect a batch of
>> samples, perform a FFT (freq domain) and do a cross correlation (time
>> domain). However, Im by no means a dsp guy and would like to leverage
>> gnuradio as much as I can. I have been poking a bit but have some
>> basic questions.
>>
>> 1) 2.5 Msps gives me way more bandwidth than I neeed. Assuming, for
>> now, I only care about a single pulse frequency I really only need
>> ~1khz bandwidth. In the frequency domain I can directly decimate down
>> (with a big factor) to the 1-2 khz range using the low pass filter
>> block, do an fft, and look for peaks. Is that the right approach?
>>
>> 2) Im somewhat confused about the FFT block if I just pipe the SDR
>> straight into it. The FFT size is set to 1024 and the window is set to
>> "window.blackmanharris(1024)". So Im assuming the FFT just applies one
>> window (?) and outputs 1024 bins. However, how many samples are
>> accumulated before the FFT is run? I would have assumed I can control
>> that too. And if so, should I best be doing this every 50ms, 500ms,
>> 2000ms, ..?
>>
>> 3) I can use the rational resampling block to bring the sample rate
>> down to 48khz so I can use the audio sink. From that I can still hear
>> the pulse even if it is not visible in the spectrum (gui sink). Im
>> assuming this is just because the plotting cannot keep up?
>>
>> 4) In the time domain I guess I can generate a synthetic pulse of the
>> same length / frequency and then cross correlate. Not obvious to me
>> how to generate the required pulse in gnuradio though (would a
>> continuous signal work?). I also notice there are no built in
>> (auto)correlation blocks? I found the "correlation estimator" but not
>> clear how to use it. As for dealing with the frequency uncertainty
>> problem. Does one just try correlating with different freuencies and
>> pick the best one? Or what is the good thing to do here given I may
>> also have to deal with quite a bit of noise.
>>
>> Any guidance appreciated.
>>
>> Many thanks,
>>
>> Dirk
>>
>> _______________________________________________
>> Discuss-gnuradio mailing 
>> listDiscuss-gnuradio@gnu.orghttps://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>
>>
>>
>> _______________________________________________
>> Discuss-gnuradio mailing list
>> Discuss-gnuradio@gnu.org
>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>
>>
>>
>>
>> --
>> _________________________________________
>> Dr. Dirk Gorissen
>> Mob: +44-7763-806-809 <+44%207763%20806809>
>> Web: dirkgorissen.com
>> Skype: dirk.gorissen
>> Twitter  : twitter.com/dirkgor
>> LinkedIn: linkedin.com/in/dirkgorissen
>> _______________________________________________
>> Discuss-gnuradio mailing list
>> Discuss-gnuradio@gnu.org
>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>
> --
> Very Respectfully,
>
> Dan CaJacob
>



-- 
_________________________________________
Dr. Dirk Gorissen
Mob: +44-7763-806-809
Web: dirkgorissen.com
Skype: dirk.gorissen
Twitter  : twitter.com/dirkgor
LinkedIn: linkedin.com/in/dirkgorissen
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to