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.

IWR1443BOOST: 3TX - TDM MIMO using the same Chirp Profile

Part Number: IWR1443BOOST
Other Parts Discussed in Thread: MMWAVE-STUDIO

Hello,


I have thoroughly read the forums and documentation about TDM - MIMO operations on IWR1443EVM Radar (with TSW1400EVM acquisition module).


What we are trying to do, is sent the same chirp (which means that once we have set it up as Profile 0, we will NOT change profile on subsequent transmissions and/or on different TX antennas) on the three antennas available on the board.


Correct me if I am wrong: [on MMWAVE-STUDIO]

**UNDER "CHIRP" SECTION ON THE SENSOR CONFIG PAGE**


we select TX0 with start chirp = 0 and end chirp = 0, then press set - profile id0 [TX0 Enabled, Tx1 and TX2 disabled]

we deselect TX0 and select TX1 with start chirp = 1 and end chirp = 1 - profile id 0 [TX1 Enabled, Tx0 and TX2 disabled]

we deselect TX1 and select TX2 with start chirp = 2 and end chirp = 2 - profile id 0  [TX2 Enabled, Tx1 and TX0 disabled]

Under frame config:

- start chirp TX = 0

- end chirp TX = 2

Is everything correct?


Will we obtain a behaviour like a 12 antenna MIMO (3 Tx * 4 Rx) using this procedure?

  • Hi Michele,

    This is correct configuration for the Chirp and frame.  Please ensure that you have enabled all of the receivers and transmitters in the StaticConfig tab.  Are you having some issue with the configuration process?

    Regards,

    Justin

  • No, no, not yet. We need to set up an anechoic chamber or at least a scene with less reflections than inside our office before actually acquiring the data.
    We were just trying to confirm that we understood the procedure correctly.

    With the procedure I previously mentioned, what will be transmitted (similar to what is indicated in the "Mimo radar" document, SWRA554 , page 9) will be CHIRP0 on TX0, CHIRP1 on TX1, and CHIRP2 on TX2, repeated N_Frame/3 times, right?
    If we use the same profile (for example profile0), for all of them, chirp0 = chirp 1 = chirp2, what changes is just the position of the transmitting antenna, simulating an equivalent 3x4 array.

    If we attach profile0 to chirp0, profile1 to chirp1, profile2 to chirp 2, for example, we should be able to scan objects with up to three different RCS or characterization, shouldn't we? Like, send a" super short range" kind of chirp on one of the three, then select only the corresponding columns on the package of received data, and elaborate the signal in different ways based on the distance or RCS of interest.... Am I understanding the potential of these configurations correctly?

    Can you also confirm me that the antenna dedicated to ELEVATION is TX1 (if the three are named Tx0 Tx1 and Tx2), which is the one dislocated differently , north, on the physical circuit on the board?

    We should be able to discriminate objects on a smaller angle resolution between each other, roughly 1/3rd than in a setup with the 4 conventional receiving antennas, right?

    Thanks for your time and patience,
    Michele

  • Hi Michele,

    1. Chirp 0 is TX0, Chirp 1 is Tx 1, and Chirp 2 is Tx2.  Each frame will use all of these chirps, sequentially. So frame N send Chirp 0 then Chirp 1 then Chirp 2.  If you send 100 frames, you will chirp 300 times.  You are correct that it is creating a virtual array of 12 Rx.  However, the pattern is important.  Since Tx 1 is elevated above Tx 2 and Tx 0, the virtual antenna array is one row of 4 Rx, above a second row of 8 Rx.
    2. You can combine the profiles and transmitters in any way you like. So you can have different chirps to detect different objects at different ranges. Please note that you are not limited to one chirp per Tx, so for example you could have each chirp on Tx0 and Tx2 to increase the angular resolution in the Azimuth.  However, the processing chains may not support different chirps, and you will be memory limited. See the profile_advanced_frame.cfg file at:  mmwave_sdk_03_01_01_02\packages\ti\demo\xwr68xx\mmw\profiles\ for an example configuration that does this and works with the OOB demo.
    3. Tx1 is the elevated Tx.
    4. Angular resolution in the Azimuth when using Tx0 and Tx2 in MIMO is ~15 degrees at boresight, because you are using 8 virtual Rx. Because of the Antenna placement on the EVM, you will not be able to increase angular resolution further.

    Regards,

    Justin

  • tw

    Hello mr.Curewitz and thanks for the detailed explanation.

    I think we have grasped the behaviour regarding azimutal analysis of our received signals, but I still have a few uncertainties regarding what happens with elevation.

    If I understand correctly, the resulting virtual antenna array when using all three transmitters, is composed by 8 antennas on one plane (4 equivalent to TX0 plus 4 equivalent to TX2) , and 4 antennas equivalent to TX1 on another row.

    Based on what I have studied, it seems like we should reorganize our rows to have a proper approach for Elevation Estimation.

    are we correct in interpreting and post-processing the data in such a way?

    Thanks a lot for your patience and time,

    kindest regards,

    Michele Marconi

    P.S.: another possible intepretation is that we should keep the 8 antennas related to Azimuth SEPARATED, as two Matrixes, from the 4 Elevation antennas, and elaborate them separetely. We are reading the "doxygen" demo document, which seems to refer to such a configuration when talking about "range- doppler compensation". It might be an "eureka!" moment ;)

  • (i have replied in the other post!)
  • Hi Michele,

    There is more than one way to calculate 3D AoA.  Both of the methods mentioned in your previous post are valid.  I have a couple of points:

    • Doppler compensation is mandatory if you want to maximize the angular accuracy of the device.  This should always be implemented if possible.
    • 1 easy to implement method for AoA is:
      • For each range bin:
        • Construct a 2D array of (32x32, 64x64 - the larger these values, the better theoretical accuracy is possible)
        • place the samples from each antenna in the array so that they match the virtual antenna pattern - zero fill all other values in the array
        • now you should have 12 non-zero values, and the rest should be zero
        • FFT across each row
        • FFT across each column
        • Peak search will give angle and elevation for the point detected at that range bin
    • If you want to separate the azimuth and elevation calculation - save the 1D FFT results from each receiver (you should do this anyways)
      • For each range bin with a detected point:
        • construct a 1D array consisting of the 8 virtual antennas in azimuth and zero fill the rest (64 or 128 size array)
        • FFT across this array to get azimuth
        • this can be repeated in the elevation direction
        • this method uses less memory than the previous method

    Regards,

    Justin

  • (inadvertently marked "resolved my issue"... we are making lots of progress but have not been able to fully MIMO with 3 tx yet!)

    Hello mr. Curewitz and thanks again for your kindness.

    We just recently came around the idea of implementing Doppler Compensation into our code, and we are now studying it.

    Regarding your suggested technique:

    - are those 32x32 or 64x64 matrixes linked our "desired resolution" in azimuth and elevation?  We should have -90:+90 degrees resolution in azimuth and -15:+15 degrees resolution in elevation.

      So, if for example we decide to create an NxN Matrix with N = 32, we will have an azimutal_bin = 5.625 degrees and an elevation_bin = 0.9375 degrees, am I understanding everything correctly?

    - you are talking about "matching the antenna pattern". Imagining a 32x32 array, in which we are populating with non-zero values only 12 elements. Should our values be positioned as in the previous "ANTENNA CONFIG" diagram? it seems a little strange to me....

    - the second method seems a lot easier: we basically fill 8 elements of the azimutal array, corresponding to the echoes from TX0 and TX2 antennas on the IWR, and then zero -pad, fft, and search for the peak, and then fill 4 elements in the elevation array, corresponding to echoes from TX1 antenna on the IWR, then zero -pad, fft, and search for the peak, and these two peaks will be AZ and EL of the object.

    - a quick question: when using a single TX antenna, how does the algorythm differ? we would like to proceed gradually ^^ thanks!

    thanks again for your cooperation!

  • Hi Michelle,

    With the ISK antenna pattern, using a single TX antenna will only give you azimuth.  In that case, you could use the second method described above, with only 4 non-zero values (as there are 4 virtual Rx).

    For the first method - your calculations of accuracy are correct - please see this post for more details.  This method can be optimized by skipping FFTs on rows or columns that are all zero.

    In the second method, when doing the elevation calculation, you need to fill with antenna elements that are aligned vertially.  There are 4 pairs - Tx0Rx2 and Tx1Rx0, Tx0Rx3 and Tx1Rx1, Tx2Rx0 and Tx1Rx2, Tx2Rx1 and Tx1Rx3.  Please see the documents section of the OOB demo for more info on this technique: mmwave_sdk_03_01_01_02\packages\ti\demo\xwr68xx\mmw\docs\doxygen\html\index.html

    Regards,

    Justin

  • Hello,
    correct if i'm wrong :
    - for azimuth calculations, I should pick the 8 elements from the virtual array corresponding to the receivers on the same plane (i.e. receivers from TX1 and receivers from TX3): i fill 8 columns with the symbols and then zero fill the rest, and FFT on the ROWS (i.e. 8 "real" values + zero padded values)
    - for elevation calculations: I understand that I should pick the following couples of antennas:
    RX2TX0 RX0TX1
    RX3TX0 RX1TX1
    RX0TX2 RX2TX1
    RX1TX2 RX3TX1
    but how should I properly place them inside a Matrix? And I also feel like i should fft on the COLUMNS after zero padding, or else I would not properly integrate the contributions , right?
  • Hello Justin, any chance for an update after my previous reply?
  • Hi Michele,

    I apologize for the delay. Because this thread has drifted far from the original topic, will you open a new thread on the topic of Angle of Arrival calculations? This will allow the answers here to be easier to find for other users.

    Regards,
    Justin