What should I pay attention to before using the Angle estimation algorithm?

I am using the nRF52833 DK and a Nordic-designed antenna array (12 antennas with 0.02m spacing) for an AoA Direction Finding project. I obtained the IQ data using Direction finding connectionless beacon / Direction finding connectionless locator and input them into an implementation of the MUSIC algorithm, but the resulting spatial spectrum appear to be random and irregular.

Therefore, I want to verify if the IQ data I have collected is valid and usable.

I am using the default settings, with a switch slot of 2us, resulting in a sampling interval of 4us. I have removed the first 8 samples when estimating the AoA spectrum.

My IQ data was collected in an open, sparsely populated square with minimal signal interference.

The IQ data and corresponding phase collected using a single antenna are as follows:(I'm sorry for the mistake. The legend on the right should be phase instead of I Value.)

The IQ data and corresponding phase collected using a 4-antenna array are as follows:

My questions are,

1) Firstly, is there any apparent issue with the IQ data I have collected?

2) According to the whitepaper, the CTE is a 250kHz single tone signal, and my sampling interval is 4us. Thus, the additional phase difference caused by antenna switching is 2πfΔt = 2π * 2.5e5 * 4e-6 = 2π, which is exactly one period. Therefore, based on my understanding, the IQs plot and phases corresponding to the same antenna should be straight lines (please correct me if I am wrong). However, the phases I have collected are continuously changing. This could be due to errors introduced by environmental factors such as temperature and humidity. So, before AoA estimation, should I compensate for these errors? For example, should I first collect a segment of the signal to calculate the average fluctuations in IQ (ΔI and ΔQ) and then use these values to align the subsequent samples to the first sample for AoA spectrum estimation?

3) I also tried concatenating different CTE packets to increase the number of samples, but the results were still very irregular. Is it reasonable to concatenate the IQ data from multiple CTEs for direction finding?

I appreciate any reply, thanks!

Parents
  • Hi

    Unfortunately supporting the MUSIC algorithm is outside the scope from our side, so it's limited how much we can help you here I'm afraid, but you are right, the graph should be similar to what you see with one antenna, so something seems to be wrong here. I can't comment on how you've handled the IQ data, as we don't focus on that, but how have you set up the antenna switching? What antenna array are you using here and what antenna switching pattern is used here?

    Best regards,

    Simon

  • Hello, thank you for your reply.
    Yes, I understand that MUSIC is beyond your scope, so the main purpose of this case is to confirm that there is nothing wrong with the IQ data I got.
    I don't quite understand what you said about "the graph should be similar to what you see with one antenna". Are you saying "The graph should look like a straight line"?
    I used a square antenna array designed by Nordic with 12 antennas. I only use a linear array of four of these antennas. My ant_patterns[] = {0x2, 0x0, 0x5, 0x6}, which correspond to a line on the array.

  • So the single antenna plot shows that you have a frequency that is not 250KHz, as a 250KHz would yield a horisontal line for the reference period. This is to be expected as I stated, the TYPICAL value is 250KHz but it will always be a bit off.

    Then for the non-reference period you have a fairly straight line, a little bit of overlayd noise, also to be expected. The slope of this line is also coming from the non-perfect 250KHz so as indicated by the reference period.

    When you start changing the antennas as you have done, then the phase will jump for each antenna change. How much will depend on the distance between the antennas, the distance from the transmitter to the antenna array and the position relative to the antenna array. How much the phase will change is something you can model with normal trigonometry.

    You will have to use the reference phase to set the baseline for the signal, if not you will not be able to calculate any angles at all. How to do this is outside the scope of what Nordic will support as it is part of the algorithm work.

  • Got it, I understand! Your explanation is very clear, thank you for your reply!

  • Hello PaKa,

    I've been trying to compensate the phase drift caused by temperature, noise, or crystal oscillator using the 8 reference samples, but I've encountered an issue.

    According to the whitepaper nWP036, the 8 reference points should be 1us/sample, totaling an 8us duration. However, the CTE is a 250kHz single tone signal, with a period of 1/250kHz = 4us. Therefore, my understanding is that the reference should only have a signal length of approximately 2 cycles. However, the signal I've collected (observing the four plots in this case) looks more like 4 cycles, giving the impression that the CTE signal is 500kHz. 

    The same impression in another case:

    Source:  RE: AOA: Antenna switch pattern and IQ sampling via nrf52833 

    I think it should be like:

    So where did I go wrong in my understanding?

    Thanks!

  • Difficult to say as you have changed the code. One thing to check is if you are using the 2Mbps PHY as that is using 500KHz typical modulation.

  • Hi Paka,

    Yes I am using the 2M PHY:

    PER_ADV_SYNC[0]: [DEVICE]: 12:63:96:6B:22:D1 (random) synced, Interval 0x0780 (2400 ms), PHY LE 2M
    success. Periodic sync established.
    Enable receiving of CTE...
    success. CTE receive enable
    

    In fact, I didn't change the code, except for adding some lines to print the IQ data. 

    Thanks! Now I got the angle!

    Thanks again!

Reply
  • Hi Paka,

    Yes I am using the 2M PHY:

    PER_ADV_SYNC[0]: [DEVICE]: 12:63:96:6B:22:D1 (random) synced, Interval 0x0780 (2400 ms), PHY LE 2M
    success. Periodic sync established.
    Enable receiving of CTE...
    success. CTE receive enable
    

    In fact, I didn't change the code, except for adding some lines to print the IQ data. 

    Thanks! Now I got the angle!

    Thanks again!

Children
No Data
Related