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.

Linux: Interpreting data from the serial port

Part Number: IWR1642

Tool/software: Linux

Hi all,

Actually this is my first time posting in a ti forum so please bear with me!

I have been generating python script to interpret the raw data from uart serial port. So currently my script does this things correctly -

  1. Packet ID
  2. Version
  3. TLV count
  4. numObjects
  5. Platform
  6. and x and y of detected objects and their doppler Index, range Index and  peak Value

Everything seems fine, but for my doppler Index most of the values are {0}, some are normal values like {1, 2, 3, 4, 5, 7}, whereas some are as big as {65528, 65533}

So my questions are:-

  1. Are these values for doppler indices correct or I'm wrong somewhere? If these values are correct why so much variation between 0 - 65528
  2. So I was reading the documents here file:///home/ashish/ti/mmwave_sdk_02_00_00_04/packages/ti/demo/xwr16xx/mmw/docs/doxygen/html/index.html . And under the section CFAR processing  -- "  However, we currently use the same type of algorithm (CFAR-CA) for the range direction as the Doppler direction. The range CFAR algorithm could be replaced by a more sophisticated algorithm like CFAR-OS to get the benefit of this way of processing " . Can anyone explain what CFAR-OS  and how we can replace it with current CFAR to improve its accuracy.Any link or ideas for code is highly appreciated.

Thanks Ashish

  • Hi,

    Here is a paper describing CFAR Order Statistics

    ieeexplore.ieee.org/.../stamp.jsp

    Thank you
    Cesar
  • In the doxygen documentation link you indicated, I assume you have read the "output information sent to host" section in that documentation to be able to create the parsing script. In there, you will see that doppler index  is a signed 16-bit number (i.e -32768 to 32767) documented as follows:

    "Doppler index. Note that it is changed to signed integer in order to handle extended maximum velocity. Neagative values correspond to the object moving toward sensor, and positive values correspond to the object moving away from the sensor."

    You have not described what is in the scene you are sensing, but if we assume your scene is stationary (non-moving) objects, then you can expect low doppler indices around 0 on either side, which is what it seems you are seeing (the 655xx are small negative numbers).

    Regarding CFAR-OS, this is a more complex detection algorithm that is available in the release in ti/alg/mmwavelib (function is called mmwavelib_cfarOS, you can see the doxygen documentation of the lib in the "detection" section to see more details), but is not demonstrated in the out of box demo, you can attempt to use the library function if you like.

  • To clarify further, the signed doppler index will be between [-numberDopplerBins/2, numberDopplerBins/2). According to this and per your scene, you should have an expectation of the results. e.g if number of doppler bins is 32 in your configuration, then doppler index is in the range [-16,15), and your actual velocity (in m/s) can be calculated based on details in e2e.ti.com/.../680436 . Then you should check if your scene has objects actually moving at the speeds that are being indicated on the UART data.
  • Hi piyush,

    Thanks for the reply and it do solve my issue as earlier i was assuming the doppler Index to be unsigned.
    Regarding my scene, i m trying to use my radar to detect objects(both moving and stationary) with reasonable accuracy as currently it detects objects but gives multiple detections for a single object with high fluctuations.So, my query are -

    1. Where should i look or how should i adjust my configurations to get decent results without multiple reflections, but reducing detections for a single object should not leads to ignoring some worthy objects?
    2. So after getting detections, how should i track my moving objects, since you guys have implemented Gtrack algorithm, where can i read more about it and how can i use it?

    Thanks again!
    Ashish

  • You can enable peak grouping (see user guide and demo doxygen documentation for details) to reduce points per object. Regarding gtrack, see user guide of SDK to locate the gtrack in the SDK and its doxygen documentation. It is not demonstrated though in the out of box demo, but there are other application specific demo software that does group tracking, see traffic monitoring and people counting applications at dev.ti.com/.../ , related links www.ti.com/.../TIDEP-0090 , www.ti.com/.../tidep-01000. These may not use from the SDK's (ti/alg/gtrack) location but it is essentially same code I think.