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.

AWR2944EVM: Removal of static clutter

Part Number: AWR2944EVM
Other Parts Discussed in Thread: AWR2944
Hello,
I have tested the AWR2944 EVM in both the DDM and TDM modes. In our project we want to filter out the static clutter. I am facing some issues, that I will summarize below,

In DDM mode - This is preferred mode because I think the increased tx antenna power increases the cloud points. However in this mode, 
- The out of the box demo project provided for DDM mode does not support the 'clutterRemoval' config option. 
- The side info available is SNR and Noise per detected point. I am not sure if these can be used to detect stationary points. 
Could you please suggest a way to distinguish stationary points in DDMA mode.

In TDM mode -
- The out of the box demo project provided for TDM mode has support for the 'clutterRemoval' config command. However, enabling/ disabling the command option has no effect on the radar's performance. The reflections from stationary objects are always present. Please advise how do to make that option effective.

I have been using the CFAR threshold setting to obtain the optimum number of cloud points. Does that setting have any impact on the project's performance w.r.t stationary reflections?
Please help resolve the issues. 
Regards and Thank you
Lokesh
  • Hi Lokesh,

    Please find my responses as below:

    1. Can you let me know which version of the SDK you are currently using?
    2. For the DDM mode, currently clutter removal option has not been added and is also not performed in the chain. The simplest way for you to implement something like that would be to filter the points based on velocity in the point cloud (i.e you can drop points with zero velocity).
    3. For the TDM mode, the clutter removal feature should be functional. There is a doppler DC correction which should remove all signals that correspond to zero velocity. Can you let me know if this switch is happening or not when you enable the clutter removal option via the CLI by adding a breakpoint in the code as shown below? Can you also describe what observation made you arrive at the thought the clutter removal option might not be working? Is it that the point cloud spread did not change or point cloud with respect to the stationary points alone did not change etc.?
    4. CFAR does exclusively not care about whether the points are stationary or not. It depends on the sub-spectrum of the FFT that would be passed into the CFAR window. Having said that, you can reduce the number of stationary points (just like any other non-stationary points) by adjusting the CFAR threshold.

    Regards,

    Kaushik

  • Hello Kaushik,

    Thank you for your reply. Please find answers to some of your questions,
    1. Can you let me know which version of the SDK you are currently using?
    4.4.1.2

    2. For the DDM mode, the clutter removal option has not been added and is also not performed in the chain. The simplest way for you to implement something like that would be to filter the points based on velocity in the point cloud (i.e you can drop points with zero velocity).
    Unfortunately, our device is mounted on an ego vehicle that can be in motion. So filtering the cloud points depending on their relative velocity would not always work.

    3. For the TDM mode, the clutter removal feature should be functional. There is a doppler DC correction which should remove all signals that correspond to zero velocity. Can you let me know if this switch is happening or not when you enable the clutter removal option via the CLI by adding a breakpoint in the code as shown below? Can you also describe what observation made you arrive at the thought the clutter removal option might not be working? Is it that the point cloud spread did not change or point cloud with respect to the stationary points alone did not change etc.?
    The datapath sources are pre-compiled into libraries and are not built for debug. Could you suggest how I can recompile the library for CCS use.
    My observation has been that there are some cloud points that are always present (with no moving objects in front of the radar within viewing range), with and without the clutter removal option enabled.
     
    Regards and Thank you
    Lokesh
  • Hello Kaushik,

    Thank you for your reply. Please find answers to some of your questions,
    1. Can you let me know which version of the SDK you are currently using?
    4.4.1.2

    2. For the DDM mode, the clutter removal option has not been added and is also not performed in the chain. The simplest way for you to implement something like that would be to filter the points based on velocity in the point cloud (i.e you can drop points with zero velocity).
    Unfortunately, our device is mounted on an ego vehicle that can be in motion. So filtering the cloud points depending on their relative velocity would not always work.

    3. For the TDM mode, the clutter removal feature should be functional. There is a doppler DC correction which should remove all signals that correspond to zero velocity. Can you let me know if this switch is happening or not when you enable the clutter removal option via the CLI by adding a breakpoint in the code as shown below? Can you also describe what observation made you arrive at the thought the clutter removal option might not be working? Is it that the point cloud spread did not change or point cloud with respect to the stationary points alone did not change etc.?
    The datapath sources are pre-compiled into libraries and are not built for debug. Could you suggest how I can recompile the library for CCS use.
    My observation has been that there are some cloud points that are always present (with no moving objects in front of the radar within viewing range), with and without the clutter removal option enabled.
     
    Regards and Thank you
    Lokesh
  • Hello Kaushik,

    Please find the screen shots of the plots with and without clutter removal option enabled. You can see there is no impact on the cloud points at all. I have also pasted the console messages, that confirms the enabling/disabling of clutter removal option.

    Console messages for Clutter Removal On:

    <<

    mmwDemo:/>sensorStop
    Ignored: Sensor is already stopped
    Done

    mmwDemo:/>flushCfg
    Done

    mmwDemo:/>dfeDataOutputMode 1
    Done

    mmwDemo:/>channelCfg 15 5 0
    Done

    mmwDemo:/>adcCfg 2 0
    Done

    mmwDemo:/>adcbufCfg -1 1 1 1 1
    Done

    mmwDemo:/>lowPower 0 0
    Done

    mmwDemo:/>profileCfg 0 77 267 7 57.14 0 0 70 1 656 13349 0 0 30
    Done

    mmwDemo:/>chirpCfg 0 0 0 0 0 0 0 1
    Done

    mmwDemo:/>chirpCfg 1 1 0 0 0 0 0 4
    Done

    mmwDemo:/>frameCfg 0 1 16 0 656 100 1 0
    Done

    mmwDemo:/>lowPower 0 0
    Done

    mmwDemo:/>guiMonitor -1 1 1 0 0 0 1
    Done

    mmwDemo:/>cfarCfg -1 0 2 8 4 3 0 15 1
    Done

    mmwDemo:/>cfarCfg -1 1 0 4 2 3 1 15 1
    Done

    mmwDemo:/>multiObjBeamForming -1 0 0.5
    Done

    mmwDemo:/>calibDcRangeSig -1 0 -5 8 256
    Done

    mmwDemo:/>clutterRemoval -1 1
    Done

    mmwDemo:/>compRangeBiasAndRxChanPhase 0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
    Done

    mmwDemo:/>measureRangeBiasAndRxChanPhase 0 1.5 0.2
    Done

    mmwDemo:/>aoaFovCfg -1 -90 90 -90 90
    Done

    mmwDemo:/>cfarFovCfg -1 0 0 22.88
    Done

    mmwDemo:/>cfarFovCfg -1 1 -1 1.00
    Done

    mmwDemo:/>extendedMaxVelocity -1 0
    Done

    mmwDemo:/>calibData 0 0 0
    Done

    mmwDemo:/>spreadSpectrumConfig 1 1 0.25 1 0 0 0 0 0 0 0 0
    Done

    mmwDemo:/>sensorStart
    Done

    >>

    Console message for Clutter Removal Off:

    <<

    mmwDemo:/>sensorStop
    Ignored: Sensor is already stopped
    Done

    mmwDemo:/>flushCfg
    Done

    mmwDemo:/>dfeDataOutputMode 1
    Done

    mmwDemo:/>channelCfg 15 5 0
    Done

    mmwDemo:/>adcCfg 2 0
    Done

    mmwDemo:/>adcbufCfg -1 1 1 1 1
    Done

    mmwDemo:/>lowPower 0 0
    Done

    mmwDemo:/>profileCfg 0 77 267 7 57.14 0 0 70 1 656 13349 0 0 30
    Done

    mmwDemo:/>chirpCfg 0 0 0 0 0 0 0 1
    Done

    mmwDemo:/>chirpCfg 1 1 0 0 0 0 0 4
    Done

    mmwDemo:/>frameCfg 0 1 16 0 656 100 1 0
    Done

    mmwDemo:/>lowPower 0 0
    Done

    mmwDemo:/>guiMonitor -1 1 1 0 0 0 1
    Done

    mmwDemo:/>cfarCfg -1 0 2 8 4 3 0 15 1
    Done

    mmwDemo:/>cfarCfg -1 1 0 4 2 3 1 15 1
    Done

    mmwDemo:/>multiObjBeamForming -1 0 0.5
    Done

    mmwDemo:/>calibDcRangeSig -1 0 -5 8 256
    Done

    mmwDemo:/>clutterRemoval -1 0
    Done

    mmwDemo:/>compRangeBiasAndRxChanPhase 0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
    Done

    mmwDemo:/>measureRangeBiasAndRxChanPhase 0 1.5 0.2
    Done

    mmwDemo:/>aoaFovCfg -1 -90 90 -90 90
    Done

    mmwDemo:/>cfarFovCfg -1 0 0 22.88
    Done

    mmwDemo:/>cfarFovCfg -1 1 -1 1.00
    Done

    mmwDemo:/>extendedMaxVelocity -1 0
    Done

    mmwDemo:/>calibData 0 0 0
    Done

    mmwDemo:/>spreadSpectrumConfig 1 1 0.25 1 0 0 0 0 0 0 0 0
    Done

    mmwDemo:/>sensorStart
    Done

    >>

    I will be able to check whether the code in dopplerprochwa.c executes as expected after you advise how can I build the datapath libraries for CCS debug.

    Regards and Thank you

    Lokesh

  • Hi Lokesh,

    Thank you for the details. Please find my responses as below:

    1. Thanks for the confirmation.
    2. I understand that you have the sensor mounted and point cloud-based filtering might not be suitable. Can you go through the following thread that discusses the RANSAC algorithm which is used in detecting stationary objects in a scene?
      AWR2944: How to understand ransac algorithm in AWR2944's demo "lab0015_high_end_corner_radar" - Sensors forum - Sensors - TI E2E support forums
      You can implement the same into your demo.
    3. You can rebuild the libs using the command "gmake lib" in the respective DPU folder where the makefile is present. This should give you the debug symbols which can be used to place breakpoints. Alternatively, you can also place the breakpoints in the respective disassembly code.

    Regards,

    Kaushik

  • Hello Kaushik,
    Thank you for your reply. As advised I placed breakpoint in dopplerprochwa.c and the result is that the execution always takes the else path, even when the clutter removal option is set to enabled in the config file.
    Please see the attached image.
    Please suggest a fix for the problem.
    Regards and Thank you
    Lokesh
  • Hello Kaushik,

    It is also the same at the place, you had highlighted in a picture above.

    Regards and Thank you

    Lokesh

  • Hi Lokesh,

    Thanks for the confirmation! Please find some things you can try from here on:

    1. Temporarily, you can modify your code such that it performs this check based on a macro and force enable the clutter removal option. Can you confirm if this force enable works as intended?
    2. To debug as to why the CLI based switch is not working as expected, would it be possible to trace the path of the config being set in the mmw_cli.c file in the demo/awr294x/mmw/mss folder? Ideally, the config should be written to based on what is set in the CLI. Please let me know if you find any issue here and I will raise it as a bug internally.

    Regards,

    Kaushik

  • Hello Kaushik,

    Thank you for the reply. Please find my response,

    1. I get this error reported in CCS console, when I do as suggested - 

    Error: DPM Report 4 received with  error:-30204 arg0:0x64 arg1:0x1024eb30
    [C66xx_DSP] Error: DPM Report 4 received with error:-30204 arg0:0x64 arg1:0x837a04
    [Cortex_R5_0] ASSERT: 55.558961s: ./mss/mss_main.c:MmwDemo_DPC_ObjectDetection_reportFxn:2508: 0 failed !!!

    2. I tried to trace the passing of the config info from mss_cli to it's use in doppleprochwa.c, the procedure is quite complex and passed thru handles and function pointers. If you could provide some design flow for passing of the config data between mss and dss, I could try and find the bug.

    Regards and Thank you

    Lokesh

  • Hi Lokesh,

    Please find my responses as below:

    1. The error -30204 occurs when there are insufficient HWA resources in the doppler proc DPU. This originates as shown in the code below:
      Please make sure that the changes are reflected properly.
    2. You could refer to the doxygen document to understand the design flow (will be available within each docs folder for every SW component).

    Regards,

    Kaushik