This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AWR1243BOOST: Azimuth and Elevation Angle estimations Error

Part Number: AWR1243BOOST

Respected ,

Please reply as soon as possible and go through the below detailed explanation.

Here i am trying to build my own radar post processing algorithm in matlab .For algorithm input i was capturing the real time ADC data of AWR1243boost EVM with DCA1000 EVM . 

Using AWR1243boost +DCA1000EVM with mmwave studio , after opening the mmwave studio 02_00_00_02 application i connected the device and updated the firmware BSS,MSS .

When setting up TDM MIMO in mmWave Studio. I defining a chirp with only a single TX antenna associated with it for that chirp. Then  defining subsequent chirps with different single TX enabled. 

For example, let's say that I define three chirps starting at chirp #0 and go to chirp #2. Each chirp only enables one TX. In mmWave Studio, this would look like the following:

--TDM MIMO (all three TX enabled)
ar1.ChirpConfig(0, 0, 0, 0, 0, 0, 0, 1, 0, 0)
ar1.ChirpConfig(1, 1, 0, 0, 0, 0, 0, 0, 0, 1)
ar1.ChirpConfig(2, 2, 0, 0, 0, 0, 0, 0, 1, 0)

Now when I go to configure my frame to use these three chirps, this would look like the following:

ar1.FrameConfig(0, 2, 20, 128, 64,40, 0, 1)

From the above settings , I know that in adc.bin file the chirps are Tx1,Tx3,T2,Tx1,Tx3,T2,Tx1,Tx3,T2,Tx1,Tx3,T2,............................... Tx1,Tx3,T2. for all four antennas .

______________________________________________________________________________________________________________________________________________________________

Here my algorithm starts 

Separation of chirps configuration in accordance with Tx 

Tx1,Tx3,T2,Tx1,Tx3,T2,Tx1,Tx3,T2,Tx1,Tx3,T2,............................... Tx1,Tx3,T2. for all four antennas .

for i=1: Nframe

for j=1:Txantennas

1DFFT

2DFFT

end

CFAR detection

Detection matrix 

for n=1:detection objects list

doppler compensation for TX3 i.e., X(5:8)

doppler compensation for TX2 i.e., X(9:12)

3DFFT

end

angle plot

end

 i applied below logic as doppler compensation

dopplerCompensationIdx =current_doppler_index;

where current_doppler_index is lies between -dopplerfftsize/2:1:dopplerfftsize/2-1 ( for now the fft size is 64) 

If (dopplerCompensationIdx >=numDopplerBins/2)

{

dopplerCompensationIdx -=(int32_t) numberDopplerBins;

}

%% for azimuth 1/2 and for elevation 1/3 is refered 

dopplerCompensationIdx =dopplerCompensationIdx /2 ;

if (dopplerCompensationIdx < 0)

{

dopplerCompensationIdx +=(int32_t) numDopplerBins;

}

expDoppComp=azimuthModCoefs[dopplerCompensationIdx];

if (mod((dopplerIdx/2 ),1)~=0)

{

expDoppComp= azimuthModCoefsHalfBin;

}

X(5:8)=X(5:8)*expDoppComp;

X(9:12)=X(9:12)*expDoppComp;

these compensated values are given to angle estimation  

even processing the data as mentioned above i am not getting correct azimuth angle 

When i am doing angle fft on 8 antenna peaks i am getting error .i.e., X=[P1,P2,P3,P4,P5,P6,P7,P8] combined angle fft result showing error

if i do angle fft separately for X=[P1,P2,P3,P4]  and X=[P5,P6,P7,P8] i was getting result correct ........................

If needed i can also send you the adc.bin file and adc_log_txt file to understand the problem and help me through ........................

Please help me ............................

Reference : doxygen document of AWR14XX and AWR16XX (algorithm flow and implementation is done with reference to SDK code's)

Thanks in advance 

 

  • Hi,

    I have reviewed your configuration and it looks correct. You should be able to collect the correct raw data for TX1; TX3; TX2 (TX3 is the elevation antennae)

    As far as processing the data as I mentioned before, we only have C code for reference.

    I recommend that in order to simplify your debug, you consider first to work on the azimuth antennae.

    RX1_TX1; RX2_TX1; RX3_TX1; RX4_TX1; RX1_TX2; RX2_TX2; RX3_TX2; RX4_TX2

    After you get a correct computation in azimuth, you can focus on elevation

    thank you

    Cesar

  • can you please tell me for below logic 

    Should the current_doppler_index in range of -dopplerfftsize/2:1:dopplerfftsize/2-1  or 1:dopplerfftsize

     

    Please verify and tell me 

    dopplerCompensationIdx =current_doppler_index;

    where current_doppler_index is lies between -dopplerfftsize/2:1:dopplerfftsize/2-1 ( for now the fft size is 64) 

    If (dopplerCompensationIdx >=numDopplerBins/2)

    {

    dopplerCompensationIdx -=(int32_t) numberDopplerBins;

    }

    %% for azimuth 1/2 and for elevation 1/3 is refered 

    dopplerCompensationIdx =dopplerCompensationIdx /2 ;

    if (dopplerCompensationIdx < 0)

    {

    dopplerCompensationIdx +=(int32_t) numDopplerBins;

    }

    expDoppComp=azimuthModCoefs[dopplerCompensationIdx];

    if (mod((dopplerIdx/2 ),1)~=0)

    {

    expDoppComp= azimuthModCoefsHalfBin;

    }

    X(5:8)=X(5:8)*expDoppComp;

    X(9:12)=X(9:12)*expDoppComp;

    With the above chirp configuration

    Case1:

    i enabled test source and generated one static target ....................

    Where for static target we need not do doppler compensation right ?

    Even for this also not able to get correct azimuth and elevation angle .....................anglefft(P1,P2,P3,P4,P5,P6,P7,P8) 

    Can you please advice me why ?

    Case 2:

    When the target is moving perpendicular to the Tx plane then the doppler compentation factor will be 0 ...... it means in this case also we need not perform doppler compensation 

    Here i enabled test source and generated one target moving away from the radar where the velocities are Vx=0 ; Vy= 1; Vz=0 ...........

    For this case also i am not able to get proper azimuth and elevation angles ...........

    ********* You might suspect that i may do wrong in raw data collection and separation and to simplify bug i captured 64 chrips per 256 samples and one frame ......................verified properly and  i found nothing wrong in my code , still the azimuth and elevation angles are wrong ! .............................

    Thanks in advance !

    Note :

    If you need adc.bin files i can provide you .....................please guide me through .............

    Cesar I hope you know that your reply and guidance means a lot for me 

     

  • Cesar,

    As you advised me to calculate azimuth angle first i tried calculating by doppler compensating with above logic and below logic which is given in doxygen document (simply math)  but not able to estimate the angle properly 

    Doppler Compensation 

     

    X'(m,k)=X(m,k) exp (-j* m*delta) , m= 1......,N_Tx -1 , k=0,....., N_Rx -1 

    Where , delta = phi_doppler /3 ----- doppler induced phase shift between consecutive sets of Rx antennas

    phi_doppler ----doppler induced phase shift between subsequent chirps of the same Tx antenna 

    phi_doppler =2*pi*idopp / N_FFT_dop , idopp is detected doppler bin index , - N_FFT_dop /2 <idopp<N_FFT_dop /2-1

     

    with reference of this i am trying to compensate the doppler and written a matlab code for this which is 

    DetectionValues = [ P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 ]; 

    where P1,P2,P3,P4 are corresponds to Tx1 Rx1,Tx1 Rx2,Tx1 Rx3,Tx1 Rx4 & P5 P6 P7 P8 P9 are corresponds to Tx2 Rx1,Tx2 Rx2,Tx2 Rx3,Tx2 Rx4 & P9 P10 P11 P12 are corresponds to Tx3 Rx1,Tx3 Rx2,Tx3 Rx3,Tx3 Rx4 ......................................Here Tx1 and Tx3 are azimth antennas ..................

    dopplerInd=CurrentDopplerInd;

    phi=(2*pi*dopplerInd/ DopplerFFTsize);

    deltaPhi=(phi/3);  %%%%% working with 3 Tx antennas 

    DetectionValues(5:8)=DetectionValues(5:8) *exp(-1i*1*deltaPhi);

    DetectionValues(9:12)=DetectionValues(9:12) *exp(-1i*2*deltaPhi);

     

    but no use of this math which is mentioned in doxgyen document ................................

     


    And I wanted to bring another point to your notice ................ today i tried simulating another static target ( X= 4 , Y =30 ,Z =10 ) by test source and captured the RAW IQ data 

    The RAW IQ data is processed using internal RadarStudio PostProcessing(4.75) matlab GUI verison and plotted 1642 EVM TDM MIMO XY Results where the Results should ( X= 4 , Y =30 ,Z =10 )  but the results is 

    X= -1.13 

    Y= 31.8 

    Z= 0

    Even in TI Inbuilt Matlab GUI the results of TDM MIMO is wrong .....................


    So please reply as soon as possible with best solution that you always advise !

    Thanks in advance 

    Note:

    If needed I can provide you with adc.bin and adc_data_LogFile

     

     

  • Please respond .....

  • Still waiting for your reply ...

    Please respond to this because to cross verify the results with RadarStudio processing GUI is also not working properly .

    The results of  TI Inbuilt Matlab GUI the results of TDM MIMO is wrong

    Version : mmWave Studio 2.0.0.2 

  • Put only one strong static object in your scene. In this case, does range FFT produce expected output i.e strong energy at the expected bin [noise/clutter elsewhere, there may be some bins near 0 on either side that are stronger though, ignore them]? Does doppler FFT output look good [should show only energy at 0th bin]? If these two are good, and if you only compute azimuth FFT of all 8 virtual azimuth antennas for this scene and not do any doppler compensation [bypass completely your doppler code], do you see the expected angle?

  • Hi Piyush,

    It is very nice of you , thanks for responding !

    As you suggested me to work on a strong static object ,

    Here is the case simulated by using Test source in mmWave Studio 2.0.0.2 

    Test source settings : (static target )


    Object1                          X                       Y                              Z

    Position(m)                   4                       30                              0

    Velocity (m/s)               0.0                    0.0                             0.0 

    Signal Level(dBFS)    -2.50

    Rx Antenna Position                       X                        Z

    Rx1(lambda)               0.0                       0.0

    Rx2(lambda)               0.5                       0.0

    Rx3(lambda)               1.0                       0.0

    Rx4(lambda)               1.5                       0.0

    Chirp Config:(working with AWR1243boost . Now verifying with 2Tx azimuth antennas)

    --TDM MIMO (all three TX enabled)
    ar1.ChirpConfig(0, 0, 0, 0, 0, 0, 0, 1, 0, 0) //TX1 enabled
    ar1.ChirpConfig(1, 1, 0, 0, 0, 0, 0, 0, 0, 1) //TX3 enabled

    Frame Config:

    ar1.FrameConfig(0,0,1, 256, 64, 40, 0, 1)

    ________________________________________________________________________________________

    For the above setting captured IQ raw data and processed with own post processing algorithm and passed as input for TI inbuilt matlab GUI (RadarStudio PostProcessing (4.75)).

    For the above settings results should be (TDM MIMO XY Results ) in GUI 

    X=-4 ,     Y=30 and Z =0

    But the results are 

    X=-1.141, Y=30.24 and Z=0 

    similar kind of results are observed for own algorithm.

    In this case, does range FFT produce expected output i.e strong energy at the expected bin [noise/clutter elsewhere, there may be some bins near 0 on either side that are stronger though, ignore them]?

    Ans : The range FFT produced expected output at 156 bin where the range will be 156 *range resolution = 30.4873 m

    Does doppler FFT output look good [should show only energy at 0th bin]?

    Ans: Yes , The energy is at 0th bin only .

    If these two are good, and if you only compute azimuth FFT of all 8 virtual azimuth antennas for this scene and not do any doppler compensation [bypass completely your doppler code], do you see the expected angle?

    Ans: By passed complete doppler compensation code of mine and computed azimuth FFT of all 8 virtual azimuth antennas for this scene. But also the results are wrong.

    Now tell me what to do .

    Please find the below attachment of adc_data.bin and adc_data_LogFile.txt

    Results.rar

    Please validate with your TI GUI and tell Why TI GUI showing wrong results 

    Please guide me with solution .

  • I am not that familiar with the studio product so someone else may be able to help. The error in X may be o.k though. It could be because of lack of calibration which depending on the board may skew the azimuth angle from where it is supposed to be e.g in the out of box demo, we often perform what we call "Range Bias and Rx Channel Gain/Phase Measurement and Compensation", you can read about this in demo documentation. Your azimuth angle for the X,Y numbers shows it is 7.6 deg test input and you are seeing 2 deg measured, the difference it not that big but it really depends whether you have a bias and/or what is your angle estimation accuracy [note we are talking about accuracy, not resolution, the resolution is 14 deg for azimuth]. Accuracy depends on the angle FFT size but you can improve accuracy only up to a certain limit ultimately determined by SNR. In the demo we do a 64 point angle FFT on the 8 virtual antennas so there is some interpolation and increase in accuracy compared to doing an 8-point FFT. What you may want to do is experiment to chose X such that you try a few angles within the FOV of the antenna, say -30, -15, 15, 30 deg and see what you get, for example does the measured azimuth angle increase/decrease by the same amounts roughly as the expected?

  • I realized that the kind of calibration I am talking about here does not apply in your case because you are using internal test source. You can try to vary the angles as I suggested and see what you get.

  • If i use internal test source wont i get proper Relative symbol phases at 8 antennas ?

    If you observe properly the phases of Receivers is shown below.

    Rx1 -----   0                       

    Rx2 -----  wx 

    Rx3 ----- 2wx

    Rx4 ----- 3wx 

    Rx5 ----- 

    Rx6 ----- wx  

    Rx7 ----- 2wx  

    Rx8 ----- 3wx      

     

    The actual expected phase of receiver antennas are 

    Rx1 -----   0                       

    Rx2 -----  wx 

    Rx3 ----- 2wx

    Rx4 ----- 3wx 

    Rx5 ----- 4wx

    Rx6 ----- 5wx  

    Rx7 ----- 6wx  

    Rx8 ----- 7wx      

    but it was not producing signal in accordance of the principle , Now please suggest me ! 

    If calibration is the only solution for my issues !

    For calibration what should i do please tell me ? what setting should i make in mmWave Studio !

     

  • Hi,

    I have to check with mmWave Studio team if the Test Source supports MIMO.

    Based on described behavior I think this may not be the case

    thank you

    Cesar

  • Hi Cesar,

    OK.

    Please remember that i am waiting for your reply !

    Thanks in advance .

  • Hi,

    The TestSource is only supported for non MIMO.

    Could you please perform the test without MIMO, with single TX

    Thank you

    Cesar