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.

AWR6843AOPEVM: Antenna Geometry definition when data processing chain is not used

Part Number: AWR6843AOPEVM
Other Parts Discussed in Thread: IWR6843AOP, AWR6843AOP, IWR6843

The following code was used in the out of box demo to tune the antenna geometry definitions according to the  MmWave variants.

/* Copy antenna geometry definition */
#if defined(XWR68XX_AOP_ANTENNA_PATTERN)
extern ANTDEF_AntGeometry gAntDef_IWR6843AOP;
dataPathObj->objDetCommonCfg.preStartCommonCfg.antDef = gAntDef_IWR6843AOP;
#elif defined (XWR68XX_ODS_ANTENNA_PATTERN)
extern ANTDEF_AntGeometry gAntDef_IWR6843ODS;
dataPathObj->objDetCommonCfg.preStartCommonCfg.antDef = gAntDef_IWR6843ODS;
#else
extern ANTDEF_AntGeometry gAntDef_default;
dataPathObj->objDetCommonCfg.preStartCommonCfg.antDef = gAntDef_default;
#endif

/* DPC pre-start common config */
errCode = DPM_ioctl (dataPathObj->objDetDpmHandle,
DPC_OBJDET_IOCTL__STATIC_PRE_START_COMMON_CFG,
&dataPathObj->objDetCommonCfg.preStartCommonCfg,
sizeof (DPC_ObjectDetection_PreStartCommonCfg));

I am trying to add the same functionality however without making use of the data processing chain. That is, I want to make use of the antenna geometry definition in an application that does not use DPC. Can someone explain how and where in my application should I add this?

Thanks

Tim

  • Hi, Tim:

    Eventually, the antenna definition will be needed during angle estimation.   You can follow the code to see how the antenna definition is used in angle estimation module. 

    Best,

    Zigang

  • I am looking at specific examples where the Angle of Arrival is not calculated. For example the vital signs example.

    The example also does not make use of the compensation in rx channel phase and range bias. Is this because the application is independent of the antenna geometry and the on-chip antenna manufacturing tolerances for the awr6843AoP?

    I have found this code in the   multi_gesture_68xx_aop_dss project

    int16_t rxPhaseRotVector[NUM_USED_CHANNELS] = {1,1,1,1, -1,-1,-1,-1};

    /* auto-scale the input so as to prevent overflow in the 32-bit FFT. */
    AutoScale((int16_t*)DOAIn);

    /* Rotate the RX channels according to the ODS RX phase rotation vector */
    for (antIndx = 0; antIndx < NUM_USED_CHANNELS; antIndx++)
    {
        DOAIn[antIndx].real *= rxPhaseRotVector[antIndx];
        DOAIn[antIndx].imag *= rxPhaseRotVector[antIndx];
    }

    #elif defined(MMW_6843_AOP) && defined(SOC_XWR68XX_ES2)

    // Arrange the DOAIn in 2D array format (below is based on 6843 AOP ES2 antenna, long axis of EVM is horizontal)
    /* Channels are arranged as (because the chirps are sent in this order: TX3, TX2)
    *
    *
    * ch-2 ch-1 ---> (TX-1 row: Not used)
    * ch-3 ch-0 ---> (TX-1 row: Not used)
    * ch-11 ch-9 ch-7 ch-5
    * ch-10 ch-8 ch-6 ch-4
    */
    memset((void *)&gDOA2D[0][0], 0, NUM_ANGLE_BINS_GESTURE * NUM_ANGLE_BINS_GESTURE *sizeof(cmplx16ReIm_t));

    gDOA2D[1][0] = DOAIn[7];
    gDOA2D[1][1] = DOAIn[5];
    gDOA2D[1][2] = DOAIn[3];
    gDOA2D[1][3] = DOAIn[1];


    gDOA2D[0][0] = DOAIn[6];
    gDOA2D[0][1] = DOAIn[4];
    gDOA2D[0][2] = DOAIn[2];
    gDOA2D[0][3] = DOAIn[0];

    which i think is performing compensation for the differences in Tx1 and Tx3 virtual channel configurations on the AoP. compared to a default antenna configuration (this code is doing so for the IWR6843)

    I am trying to apply this code to the vital signs example so that I can improve the accuracy of the application.

    However I am not entirely understanding what the input and output parameters for this compensation should be. And also in what sequence should this code be placed within the program flow. (Before 1D FFT? After 1D FFT?)

    The question being asked is not application specific however. I am asking in a more general sense on how I can implement compensation for antenna geometry differences and compensation of rx gain phase offset for any application that does not make use of the data processing chain. 

    Thanks again 

    Tim 

  • HI, Tim:

    For the vital sign demo, only one antenna pair is used.  Therefore, there is no need to understand the antenna pattern or compensate for the phase cross different antenna pairs. 

    Best,

    Zigang

  • HI, Tim:

    In the out of box demo, the phase compensation is only needed during angle estimation.  If your signal processing chain does not need angle estimation, then it will be totally different chain.  You will need to understand how you going to use the signal cross antenna to figure out where did you need the phase compensation.  In general, if you need to use phase information cross different antenna, that is where you will need the phase compensation.  

    Ideally, when the target is at bore sight (0 degree in azimuth and 0 degree in elevation), the phase should be all the same from all antenna pair.  However, there can be off due to the non-perfectness in routing between different antenna.  So the phase compensation is to fix this.  

    Best,

    Zigang

  • Hi Zigang Yang,

    I have added the other antennae to allow for elevation readings. The current vital signs demonstration only allows for readings when the passenger's chest would be at azimuth level. Different passengers will have different torso lengths, therefore an application would sometimes require two elevation angles if a single sensor is to be used for front row vital signs detection.

    Elevation is still required even in the case where only the driver's vitals would be required given that their will be different torso length between different drivers. 

    Please don't consider this question as application specific, given that I know that you don't offer support for applications.  This is only mentioned as a response to "Therefore, there is no need to understand the antenna pattern or compensate for the phase cross different antenna pairs. "

    My questions which I think are still unresolved are general questions as this information can be utilised in any application we decide to develop.

    The questions that are unanswered are the following:

    1. How can I include range and phase compensation for manufacturing tolerances when the data processing chain is not utilized?

               -What data needs to have range and phase compensation on it?

                               adc data? 1D FFT output data?  

               - What would be the point where I add range and phase compensation?  (Where in the program flow?)

                              During interframe processing? During Interchirp processing? After windowing? After 1D FFT? Before sending my processed outputs? 

    2. The same questions above, but for antenna geometry. 

    The questions arose after observing the significant improvement in the quality of results obtained in the single row occupation demo, after antenna geometry and

    compRangeBiasAndRxChanPhase were defined. This application however makes use of the data processing chain. The data processing chain is a black box. Other than some documentation on 

    file:///C:/ti/mmwave_sdk_03_05_00_04/packages/ti/datapath/dpc/objectdetection/objdetdsp/docs/doxygen/html/index.html
    and
    file:///C:/ti/mmwave_sdk_03_05_00_04/packages/ti/datapath/dpc/dpu/aoa2dproc/docs/doxygen/html/index.html

    The documentation itself doesn't indicate the process right?

    Thanks again and I look forward for your replies! :)
    Tim
  • HI, Tim:

    There is some misunderstanding here.  "The current vital signs demonstration only allows for readings when the passenger's chest would be at azimuth level."    If the chest is lower than the body, it will still be seen by radar, but the reflection may not be strongest.  The current algorithm only checks the range bin with highest energy, therefore, may miss the range bin that represent by the chest.  Again, I would like to emphasize that one antenna can see the reflection from the chest as long as the chest is in the antenna FOV (field of view).   If you need to handle the case where the chest is far away from the bore sight, then you will need to change the algorithm in terms of how to pick the range bin for phase analysis.  

    Regarding your questions: 

    1. How can I include range and phase compensation for manufacturing tolerances when the data processing chain is not utilized?

               -What data needs to have range and phase compensation on it?

                               adc data? 1D FFT output data?  

               - What would be the point where I add range and phase compensation?  (Where in the program flow?)

                              During interframe processing? During Interchirp processing? After windowing? After 1D FFT? Before sending my processed outputs? 

    [ZY] You can apply the phase compensation at any place, ADC data, 1D FFT, 2D FFT.  We did not use the phase information cross antenna until angle estimation, so we apply it there to save MIPS.  But mathematically, it can be handled at any stage.  You second question is really depend on your choice of the first question.  If I got to choose, I will do it at least after 1D FFT during interframe processing.  As I said before, you need to design your algorithm first, and as long as you apply the compensation before  the phase cross antennas are used, you will be good. 

    The range compensation can be done when report the final range estimation.      

    It is not clear to me about your second question.  Are you asking the signal chain for the single row occupation demo? 

    Best,

    Zigang

  • Hi Zigang,

    Thanks for your reply.

    By question 2 with regards to the antenna geometry definition, I am asking about this assignment of virtual channels, as shown in this diagram obtained from file:///C:/ti/mmwave_sdk_03_05_00_04/packages/ti/datapath/dpc/dpu/aoa2dproc/docs/doxygen/html/index.html

    I have the same questions I had for gain, phase and range compensation (which you explained quite clearly) but for these antenna geometry definitions instead. I would like to have the understanding of what data needs to have Tx1 and Tx3 -180 degree phase shift operated on,  and where in my program flow should this be done.

    With respect to your vital signs reply  I'm not sure if I understood you correctly.  Given that the provided vital signs demo uses a horizontal linear array, how does the application cater for different torso lengths, i.e. different chest heights (heart outside of horizontal plane) ?

    I find this information interesting.

    Eager to hear from you

    Tim

  • HI, Tim:

    The 180 phase jump between the antennas can be compensated the same way as the phase compensation.   When you do the phase and range calibration through OOB demo, the results will incorporate this 180 degree phase jump.

    For your second question, if you are using a horizontal linear antenna array, you will not be able to detect the elevation angle, but you will still be able to see the reflection from different chest height as long as the it is in the antenna field of view.   Please give me several days, I will see how to explain this better.

    Best,

    Zigang

  • Thanks Zigang, 

    It would be greatly appreciated!

  • Hi, Timothy:

    Basically, when the antenna array is in one dimension, let us assume it is in azimuth direction.  Then the azimuth angle theta means the angle between the antenna axis and the target.  So, theta is not only one direction in zero elevation, it is like a total effect of a cone shape, any elevation angle can be included.

    Best,

    Zigang

  • Thanks for your detailed replies zigang!