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.

IWR6843ISK: slow 3D object detection

Part Number: IWR6843ISK

Dear TI-Expert,

I am developing the 3D object detection algorithms and its visualizer with python, and the point cloud data is from the firmware of TI mmWave sdk demo.

I found its detection rate (~0.1 sec for detection and ~0.3 sec for visualization) is much slower than the TI example for people counting (2D for ES1.0).

In addition, I also found that the missing frame occurs frequently after filtering out the unnecessary data.

What could be the cause?

Kind regards,

shu-wei

  • Hi Shu-Wei,

    I've asked an expert to look into this and we should have an answer for you in the next few days.

     

    Cheers,

    Akash

  • Hi Shu-wei,

    Performance expectation is the following:

    1.  Frame time is 50 ms
    2. Detection results from frame N are shipped at frame N+1
    3. Visualizer takes up to 50 ms to parse and graph data (if it is significantly slower, you may need to put your PC in high performance mode.)

    So if a person enters at time X:

    1. 50 ms to complete the frame where they entered and get point cloud
    2. 50 ms to output tracker data
    3. 50 ms to graph

    Giving 150 ms total. If the first frame where they are visible doesn't meet the detection thresholds, then add 50 ms. You can see that after 1 or 2 frames with weak detection, you get close to 300 ms.

    If you are having issues with run-time performance, I recommend the following:

    1. Start with the attached python script (it has .txt, but just change the file extension)
      7178.parserUseExample.txt
      import time
      from oob_parser import uartParserSDK
      
      parser = uartParserSDK(type ='3D People Counting') #3D People Counting labs (68xx)
      frameTime = 50/1000 #50 ms frame time
      try:
          uartCom = "COM" + str(19)
          dataCom = "COM" + str(18)
          parser.connectComPorts(uartCom, dataCom)
      except Exception as E:
          print(E)
          print('Com port connection failed')
      #open config file
      fname = 'mmw_pplcount_demo_default.cfg'
      cfg_file = open(fname, 'r')
      cfg = cfg_file.readlines()
      parser.sendCfg(cfg)
      
      while(1):
          print(parser.readAndParseUart())
          time.sleep(float(frameTime))  #50 ms
      1. This is used to parse the data from the device.
      2. You will need to modify the script to use the right points and the correct parser
      3. this will print data each frame
    2. This will give lower latency - you can time the parser and try to increase its speed (or implement in C)
    3. With a fast parser you can then do what you need to do at high speed with the data

    Regards,

    Justin

  • Thank you Justin. The advice is very helpful.