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.

IWR1642BOOST: ROS Driver Package (ti_mmwave_rospkg) Doppler Information

Part Number: IWR1642BOOST
Other Parts Discussed in Thread: IWR1642, AWR1443BOOST, AWR1642, AWR1642BOOST

Hi,

I have downloaded the ros driver package for visualising detected objects of the IWR1642 Boost using ros / rviz. Displaying the position of the detected objects works great!

I would like to get velocity information of the detected objects to and was wondering what the struct entry "DopplerIdx" in the MmwDemo_detectedObj_t struct is? Can that be used to retrieve the velocity at which objects are coming towards the sensor? If yes is it also in Qformat as in the case of the (x,y,z) values? Or is it an index / reference to some other structure (e.g. doppler heatmap) which needs to be parsed to extract the velocity information?

Kind regards,

Ryen

  • Hi Ryen,

    Doppler is the same as velocity information and is given in the same format as position. Units are in meters per second. Let us know if you have any more questions at this time.


    Cheers,
    Akash
  • Hi Akash,

    Thanks for your reply. I am trying to get the velocity information by using the dopplerIdx that is saved to the mmwData.objOut data structure in DataHandlerClass.cpp. This is what I did:
    - save the dopplerIdx to a float varialbe (same as done for x,y,z information), no Qformat conversion.
    - write position values and dopplerIdx value to the console

    When I run the ros node, there are positive and negative values for position (as expected) but for the dopplerIdx, there are only positive values, even though objects are moving towards the sensor. After reading the doxygen docs of the SDK, I was expecting to get negative values in those cases.

    That's why in my previous question I was wondering if the dopplerIdx is a positive index to a signed velocity value.

    How can a signed velocity measurement be retrieved from the dopplerIdx value?

    Ryen

  • Hi Ryen,

    The dopplerIdx refers to the specific 'Doppler Bin' that the object is in. These Doppler Bins are valid for both positive and negative velocities so if you are only seeing positive values then the sensor is only picking up objects in motion that are moving away from the sensor. There absolutely should be a sign change if your objects are moving toward the sensor.

    This document (e2e.ti.com/.../3051.DataStructure_5F00_table.pdf) should be helpful in deciphering values for not only Doppler/velocity but also range and angle information as well.

    Does this answer your question? Let me know if you have any more?


    Cheers,
    Akash
  • Hi Akash,

    Thank you for the extra information!

    Ryen

  • Hi Ryen,

    Do you fix the velocity retrieve problem? I met the same problem, can you help me?

    Thank you very much

    Brenda
  • Hi Brenda,

    I found the following TI forum posts helpful to extract the velocity information:
    - CCS/AWR1443BOOST: Finding speed from dopplerIdx value in mmw demo code
    - AWR1642: How to get the velocity based on the mmw demo output

    Hope this helps.

    Ryen
  • Hi Ryen,

    Could you give me the specific website URL or data path of the file for reference? I can not find it.

    Thanks for your help.

    Brenda
  • Hi Brenda,

    You can search for TI forum posts at https://e2e.ti.com. The links to the posts I mentioned earlier are here:
    - e2e.ti.com/.../618925
    - e2e.ti.com/.../620989

    Hope I got your question right...

    Ryen
  • Hi Ryen,

    Thanks a lot for your help. I read these two carefully, and I summary the formulae as follows:

    1) range = range index * range resolution = (range index * c) / (2B), where c is the light speed and B is the bandwidth

    2)velocity = doppler index * velocity resolution = ( doppler index * lamda ) / (2Tf), where the Tf is frame time.

    Am I right?

    Thank you very much!

    Brenda
  • Hi Brenda, Ryen and other community members,

    I'm a student doing a final year project on using the AWR1642BOOST to perform 3D mapping for a robot and we'd like to use the spatial and velocity information from the 3D map in order to help the robot avoid obstacles or navigate, but we would like to know how did you extract out the x,y,z and the signed velocity information? Is there a guide on this? We'd actually want to extract it out and feed it into the robot through ROS but we don't really know where to start in the following ways:

    - How do we read the position of the point in the point cloud
    - How do we extract that information out into a readable format for the robot

    Hope you guys could give me a headstart or a clue! Thank you, and have a great day :)

    Cheers
    Sam
  • Sam,

    If you look in the Industrial Toolbox, there is a project titled ROS Point Cloud Visualizer. This includes a ROS driver that works with any mmWave sensor running the TI mmWave SDK. Once you get this demo working, the data is published to a point cloud which can be easily interfaced with through ROS.

    The point cloud (actually a PCL2 type) may only contain XYZQ, or XYZ-position and Q-return intensity data. If you are interested in getting velocity, you may need to modify the mmWave ROS package driver. Check on DataUARTHandler::sortIncomingData in the file DataHandlerClass.cpp.

    Using RViz is a great way to see what kind of data the sensor is capable of recording. If you are working on building a robot, there is another project in the TI Industrial Toolbox that links the mmWave sensor to a TurtleBot.

    Good luck on your robot!

  • Hi Sam,

    C:/ti/mmwave_sdk_01_01_00_02/packages/ti/demo/xwr16xx/mmw/docs/doxygen/html/index.html
    This file will help.

    Cheers
    Brenda