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: The tracking result by GtrackLib differs depending on the version of GtrackLib.

Part Number: IWR1642BOOST

I am verifying the operation of GtrackLib created in C language using "tm_play.m" of traffic monitoring laboratory.
(The original tm_play.m does not correspond to the MEX function, but I modified it to correspond to the MEX function)


<<Conditions for verification>>

I did tracking with the following two GtrackLibs.
- Old GtrackLib : GtrackLib in "mmwave_sdk_02_00_00_04"
- New GtrackLib : GtrackLib in "mmwave_sdk_03_00_00_08" (implemented with 2DA option)

The files used for tracking are as follows.
- Point Cloud data : C:\ti\mmwave_industrial_toolbox_2_4_0\labs\lab0013_traffic_monitoring_16xx\gui\sample_fhist\fHistRT_0001.mat
- Configuration file : C:\ti\mmwave_industrial_toolbox_2_4_0\labs\lab0013_traffic_monitoring_16xx\chirp_configs\mmw_tm_demo_ph2.cfg

"Other Mandatory Parameters" set the following values.
- Initial Radial Velocity : -5
- Max Accel X : 0
- Max Accel Y : 4


<<Expected verification result>>

Since the inputs (ie, point cloud data and parameters) are exactly the same, the output (ie the tracking result) is the same.


<<Actual verification result>>

In old GtrackLib, tracking is done correctly for point clouds.
In the new GtrackLib, tracking is not done correctly for the point cloud.

"Incorrect" refers to the following.
- A plurality of tracking IDs are assigned to one vehicle.
- There are several bubbles that will not disappear.
- Although the vehicle is running along the Y axis, the shape of the bubble is laterally elongated.
However, considering the distribution of point clouds, it may be appropriate to lengthen horizontally.
In that case, it is inappropriate that the bubble of the old GtrackLib is long vertically.


<<Question>>

I want to obtain the same tracking result as the old GtrackLib when using the new GtrackLib.
So, what should I do?
Do I need to modify the parameters for the new GtrackLib?
Do I have to port the algorithm contained in the old GtrackLib to the new GtrackLib?
Anyway, is the new GtrackLib incomplete?

Thanks.

  • Hi Kojo,

    We expect that the newer version of GTrack will behave better in most cases than the older version. However, a few parameters have changed that may mean you need to tune a new configuration. Specifically based on the complain above, " A plurality of tracking IDs are assigned to one vehicle ", I expect that we should start by modifying the Gating Parameters.

    Before doing any tuning, please ensure that you are using the parameters you used with the original GTrack library.

    In 2DA, there are 4 gating parameters: Gain, X Limit, Y Limit, Doppler Limit

    The tracker is estimating the dimensions of the target based on the point cloud, then using the Gain parameter to expand the dimensions to find points in the point cloud to associate with the track. If gain is 3, the dimesions will be multiplied by three to create the association bubble.  However, the X Limit, Y Limit, and Doppler Limit will limit the max size of the dimensions. So if X dimension is 1, the Gain is 3, and the X Limit is 2, the gain will want to stretch X out to 3, but will be limited by 2 by the X limit. 

    You may also consider the Allocation Parameters: SNR Threshold, SNR Obscured Threshold, Min Velocity, Points Threshold, Max Allocation Distance, Max Allocation Doppler Difference

    The Max Allocation Distance is the maximum distance between the center of a point cloud, and a new point that can be added to the point cloud when a track is being created.  If this is too small, the algorithm will not be able to create a cluster large enough to represent the target object. This will often result in 2 or more tracks being created.

    Please try some tuning and let me know if you are able to improve performance.

    Regards,

    Justin

  • Hi Justin.
    Thank you very much for your reply.

    We will attach the tracking result (movie file created with tm_genvideo) before adjusting parameters, so please see there.


    The gating parameter at this time is "gatingParam 12 8 4 0".

    In my understanding, in this parameter, the bubble should fit within 8 m in length and 4 m in side.
    However, it is clear that the width is over 4 m as shown in the figure below.
    Is the understanding of the gating parameter incorrect?

    I confirmed it by setting the gating parameter to "gatingParam 30 30 4 0".
    I expected the bubble to grow longer in the vertical direction, but it remained sideways as shown below.
    Why does not it grow longer vertically?

    Other questions are as follows. Please refer to attached movie file.
    - With 1018 frames, the red bubble is divided into red and light blue bubbles. It is strange that a light blue bubble occurs. Which parameter will be modified to improve this?
    - Even in 1055 frames, the bubbles are separated in the same way, but it is inappropriate to separate them.


    Thanks.

  • It is reference information.

    This video is when tracking with the old GtrackLib.

    With this video, why is the bubble vertically long?
    In the previous thread, the old GtrackLib got an answer "Because the logic that makes it easier for the bubble to grow vertically is hard-coded".

    -> e2e.ti.com/.../751132

    But I could not find that logic.

  • Former Member
    0 Former Member in reply to koji fukumoto
    Hello Koji,

    Please keep in mind that the gating parameters are maximum limits not minimum limits. Therefore if you set to a very large value it does not mean that the limits will necessarily stretch to the limit. This will depend on the dispersion of points.

    Amanda
  • Hi Amanda.
    Thank you very much for replying.

    I understood that the gating parameter represents the maximum value.

    Please also answer the remaining questions below.

    · Why does the old GtrackLib become longer vertically?
    · Why does the bubble separate in the 1018th and 1055th frames?
    · How can I make tracking properly with the new GtrackLib?
    (Correct tracking refers to tracking results with old GtrackLib)

    Thanks.
  • > · Why does the bubble separate in the 1018th and 1055th frames?

    I investigated this phenomenon.
    I think that it is probably a bug in the latest version of GtrackLib.
    The problematic code is "stop judgment processing" in "gtrack_unit_update.c".

            /* Erasures handling: no measurements available */
            if(inst->isTargetStatic == false) {
    
                for(n=0; n<inst->stateVectorDimNum; n++) {
                    vel = fabsf(inst->S_hat[GTRACK_VEL_DIMENSION*inst->stateVectorDimNum + n]);
                    if(vel < GTRACK_MIN_STATIC_VELOCITY)
                        targetCanStop = true;
                }
                if(targetCanStop) {
                    /* Target is static */
                    inst->isTargetStatic = true;
    

    This logic judges that the vehicle is stopped when the speed in the X direction is less than 1.
    The vehicle is running along the Y direction.
    Therefore, the speed in the X direction may be less than 1.

    Below is the "stop judgment processing" of old GtrackLib.
    The old GtrackLib makes the right judgment.

    	if(myPointNum == 0) {
    		/* No measurements available */
            if( (fabs(inst->S_hat[2]) < inst->radialVelocityResolution) && 
    			(fabs(inst->S_hat[3]) < inst->radialVelocityResolution) ) 
    		{
    			/* Target is static => force zero velocity/zero acceleration */
    

    Is "stop judgment processing" of the latest version GtrackLib intentionally implemented? Or is it a bug?

  • Former Member
    0 Former Member in reply to koji fukumoto
    Hello Koji,

    The gtrack developments changes were made for generalized object behavior. For example to still be able to track people who are standing still where their doppler is not zero but very low (some doppler due to breathing or small human movements). A vehicle may behave differently and if the old gtrack behavior is better for traffic monitoring case from your testing then reverting may be better for your application.

    Amanda
  • Hello.

    Are there any plans to release a modified version of the following issues I reported?

    ------------------------------
    <Reported Problems>
    If the speed in the X direction is less than 1, it is judged that it is stopped.
    It is wrong to judge that a vehicle (or person) running straight in the Y direction is "stopped".
    ------------------------------

    Should I wait for the modified version to be released?
    Or do I have to fix GtrackLib myself?

    Thanks.
  • Former Member
    0 Former Member in reply to koji fukumoto
    Hello Koji,

    The gtracklib is being developed for general tracking purposes there is not a plan to revert to the old state conditions.
    For your specific application if you wish to change the state behavior then I would recommend that you modify the gtracklib for your application.

    Amanda