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: Can GtrackLib track even running patterns other than constant direction / constant speed?

Part Number: IWR1642BOOST

Hello

I have a question about tracking ability of GtrackLib.
The parameter "GTRACK_STATE_VECTOR_TYPE" when generating the tracking module instance has the following four types.

typedef enum
{
    /**  @brief   2D motion model with constant velocity. State vector has four variables S={X,Y, Vx,Vy} */
    GTRACK_STATE_VECTORS_2DV = 0,
    /**  @brief   2D motion model with constant acceleration. State vector has six variables S={X,Y, Vx,Vy, Ax,Ay} */
    GTRACK_STATE_VECTORS_2DA,
    /**  @brief   3D motion model with constant velocity. State vector has six variables S={X,Y,Z, Vx,Vy,Vz} */
    GTRACK_STATE_VECTORS_3DV,
    /**  @brief   3D motion model with constant acceleration. State vector has nine variables S={X,Y,Z, Vx,Vy,Vz, Ax,Ay,Az} */
    GTRACK_STATE_VECTORS_3DA
} GTRACK_STATE_VECTOR_TYPE;

Of these, only "2DA" and "3DA" are supported.

Can "2DA" and "3DA" track the following vehicles properly?
- Vehicle that accelerates or decelerates after starting tracking.
- Vehicles repeating acceleration and deceleration after starting tracking.
- After starting tracking, decelerate to stop, and run vehicles again.
- Vehicle that decelerates to stop after tracking starts, and backs it.
- A vehicle that turns right or left after tracking starts.

Since the laboratory sample data has only vehicle data traveling at a constant speed and constant direction, the above pattern can not be confirmed.

Thank you.

  • Supplement the intention of the question.
    I am trying to customize GtrackLib for my application.

    Tracking was carried out with test data that the running vehicle decelerates and stops.
    At that time, the phenomenon that the bubble continued to move though the detection point was stopped came out.
    (Please watch the attached movie.The detection point of 120 ~ 235 frames is stopped.)

    It is confirmed that the Y direction velocity and the Y direction acceleration of the tracking unit are not 0 even while the detection point is stopped.
    I want to distinguish whether this phenomenon is the original specification of GtrackLib or is caused by my modification.

    Thank you.

  • Hi Koji,

    In your video above, it appears that there is only one point representing the vehicle - is that correct?

    To answer your questions:

    1. 2DA and 3DA both function the same way - except that 3DA data uses an elevation angle in addition to the Range, Azimuth Angle, Doppler (Velocity), and SNR that 2DA uses.
    2. 2DA and 3DA trackers can handle acceleration and deceleration, as well as turning.

    To dive into the issue you are experiencing:

    The tracker uses a Kalman filter to determine where it expects the vehicle to be in the next frame.This prediction is based on the state information from the previous frame.  The state information from the previous frame is based on a combination of the predicted values and measured values. This is standard Kalman operation.  The tracker is built to expect a cluster of points representing a target. When it receives only 1 measurement point, it will use this in its estimation of the target location, but the predicted state will have more weight, as just one point is an uncertain measurement.  My recommendation is to generate a test set that has a cluster of points in the target location and see if you performance is better than shown in the video above.

    Regards,

    Justin

  • Hello Kerstin.
    Thank you for your reply.

    In the previous video, there are four detection points.
    Because we are plotting in a near place, we see one point.

    Following the advice, I increased the number to 10 pieces.
    Also, I moved the position of each point a little.
    And, so that the movement of the bubble can be seen, I set a big bubble.

    Tracking results are as follows.

    Again, the bubble continues to move even if the point stops.

    Is there anything else to check?

    Thanks.

  • I will add a point to worry about.


    C:\ti\mmwave_sdk_03_00_00_08\packages\ti\alg\gtrack\src\gtrack_unit_score.c
    The scoring function in the above file.
    Here is the code:

            if(inst->velocityHandling < VELOCITY_LOCKED) {
                /* Radial velocity estimation is not yet known, unroll based on velocity measured at allocation time */
                rvOut = gtrack_unrollRadialVelocity(inst->maxRadialVelocity, inst->allocationVelocity, point[n].vector.doppler);
                u_tilda.vector.doppler = rvOut - inst->allocationVelocity;
            }
            else {
                /* Radial velocity estimation is known */
                rvOut = gtrack_unrollRadialVelocity(inst->maxRadialVelocity, inst->H_s.vector.doppler, point[n].vector.doppler);
                u_tilda.vector.doppler = rvOut - inst->H_s.vector.doppler;
            }
    
            gtrack_computeMahalanobis(u_tilda.array, inst->gC_inv, &chi2);
            /* Gating Step */
            if(chi2 < inst->G) {
                /* Scoring */
                score = logdet + chi2;
                if(score < bestScore[n]) {
                    /* If we are the best, register our score, and the index */
                    bestScore[n] = score;
                    bestInd[n] = (uint8_t)inst->uid;
                    point[n].vector.doppler = rvOut;
                }
            }

    Even when the detection point is completely stopped, Doppler will be rewritten to the value of "rvOut" by the above processing.

    (For example, 0 is set to -6)

    Is it the intended implementation to rewrite "Doppler of stopped detection point" to non-zero?
    Because the points are not moving, I thought that it is wrong that Doppler is not 0.


    With the MATLAB version tracking algorithm, it seems that Doppler at the detection point is not rewritten.
    (I have not read MATLAB tracking algorithm firmly, I am sorry if I am wrong)
    ->C:\ti\mmwave_industrial_toolbox_2_4_0\labs\lab0013_traffic_monitoring_16xx\src\mss\gtrack\test\win\matlab\src\trackUnit.m

            for k = 1:nMeas
                
                % Gating step
                % Compute the amount of innovation this measurement
                % introduces wrt the tracking object
                u_tilda = urv(:,k) - hs;
                chi2 = u_tilda'*obj.gC_inv*u_tilda;
                if(chi2 < G)
                    % Compute scoring function
                    score = obj.pScoringDispersionFactor*log(a)+chi2;
                    if(score < scoreIn(k))
                        scoreOut(k) = score;
                        indexOut(k) = obj.pTid;
                        rvOut(k) = urv(3,k);
                    end
                end
            end

  • Hi Koji,

    I will need another day to investigate this.

    Regards,
    Justin
  • Hello Justin,

    I appreciate your response.
    Then, please investigate.
    I am waiting for the findings.

  • Hi Koji,

    The radial velocity unrolling function will not produce -6 for low doppler values; You will get the same low doppler value in rvOut.  What appears to be happening is the tracker is becoming overconfident in its prediction of the objects trajectory - this is usually because the Max Acceleration Parameters are set too high.  Please try to set the max acceleration parameters all to 1 or 0.1 and see if that positively impacts behavior of the tracker.

    Regards,

    Justin

  • Hi Justin,
    Thank you for your reply.

    I was executing the maximum acceleration parameter with the value [0, 4, 0].
    According to the advice, the maximum acceleration parameter was changed to [1, 1, 1] and executed.
    However, the result does not change like the movie below.
    (It does not change even with [0.1, 0.1, 0.1])

    > The radial velocity unrolling function will not produce-6 for low doppler values;

    The figure below shows the debugging of GtrackLib processing the 200th frame.
    You can see that The radial velocity unrolling function (gtrack_unrollRadialVelocity) sets rvOut to -6.
    rvOut is generated in the process of line 109.
    Parameters at that time can also be seen from the following figure.

    What should I check elsewhere?
    advice please.

    Thank you.

  • Hi Koji,

    You can get a newer version of GTrack from the newest mmWave SDK (3.1.1.2) or from the latest TIREX version - check the lab0019 folder. If you are using the TM replay tool, the GTrack version included there is outdated, and the information I have given you does not apply.

    Regards,
    Justin
  • Hi Justin,
    Thank you for your reply.

    I am developing in the following environment.
    · MATLAB application that has been remodeled and expanded based on TM playback tool
    · Use GtrackLib of "mmwave_sdk_03_00_00_08"


    > You can get a newer version of GTrack from the newest mmWave SDK (3.1.1.2)

    I think that there is no difference since GtrackLib of "mmwave_sdk_03_01_01_02" and GtrackLib of "mmwave_sdk_03_00_00_08" are the same source code.


    > or from the latest TIREX version - check the lab0019 folder.

    GtrackLib of "lab0019_pplcount_long_range_68xx" was different from GtrackLib of "mmwave_sdk_03_00_00_08".
    Is this GtrackLib source "newest, most correct"?


    Thanks.

  • > > or from the latest TIREX version - check the lab0019 folder.
    >
    > GtrackLib of "lab0019_pplcount_long_range_68xx" was different from GtrackLib of "mmwave_sdk_03_00_00_08".
    > Is this GtrackLib source "newest, most correct"?

    We implemented and executed the following GtrackLib.
    ⇒C:\ti\mmwave_industrial_toolbox_3_1_1\labs\lab0019_pplcount_long_range_68xx\src\mss\gtrack

    We used the following C code to run the MEX function.
    (Because there was no C code in "lab0019_pplcount_long_range_68xx")
    ⇒C:\ti\mmwave_industrial_toolbox_3_1_1\labs\lab0022_indoor_false_det_68xx\src\mss\gtrack\test\win\matlab\mex\gtrack_***_mex.c

    The result does not change as follows.
    (The maximum acceleration parameter is set to [1, 1, 1])


    Also, the phenomenon that Doppler is rewritten from 0 to -6 within the scoring function does not change.
    What else should I try?

    Just to be sure, let me check.
    Have you confirmed that TI Corp. can track correctly "Tracking process using GtrackLib, event that the vehicle is decelerating and stopping while traveling" correctly?
    (GtrackLib ->「mmwave_sdk_**_**_**_**\packages\ti\alg\gtrack」。not a trackModule made in the MATLAB language)

  • Hi Koji,

    Lab0019 is the newest - the SDK gtrack is still newer than the one included with the TM replay tool and may be easier to use.

    Regards,

    Justin

  • The result which I tried with Gtracklib of lab0019 has been described.

    Please look at my previous post.

    Thanks.

  • Hi Koji,

    See this video for evidence of real world deceleration tracking.

    -Justin

  • Hello Justin,
    Thank you for your reply. I watched the video.

    The tracking application in the video can track the "stop vehicle" well, is not it?
    What I would like to confirm is whether the tracking application in the video uses "C language version GtrackLib" for tracking algorithm.


    There are two tracking algorithms as follows.
    -------------------------------------------------------------------------------------- ------
    (1) C language version GtrackLib
    ⇒C:\ti\mmwave_industrial_toolbox_2_4_0\labs\lab0013_traffic_monitoring_16xx\src\mss\gtrack\src
      
    (2) MATLAB language version tracking module
    ⇒C:\ti\mmwave_industrial_toolbox_2_4_0\labs\lab0013_traffic_monitoring_16xx\src\mss\gtrack\test\win\matlab\src\
    -------------------------------------------------------------------------------------- ------


    It is confirmed with the following application that tracking "stop vehicle" can be done using (2).
    C:\ti\mmwave_industrial_toolbox_2_4_0\labs\lab0013_traffic_monitoring_16xx\src\mss\gtrack\test\win\matlab\tm\tm.m

    Unfortunately, there is currently no confirmation that (1) can track "stop vehicles".
    Is there a confirmation that the tracking application in the video uses (1)?

    The best way is to reproduce the tracking of "stop vehicle" using (1) at TI.
    It would be easy if you could slightly modify the tm_play of the traffic monitoring laboratory and operate it in PCMex mode.
    (fHist file of the pattern where the traveling vehicle stops is necessary)

    Thank you.
  • Hi Koji,

    The previous video was shot at TI, using the vehicles of TI employees. We captured raw data, then post processed the data into a point cloud with Matlab, after which we ran through GTrack PC Mex. This was done to prove out the algorithms that were built in C to run on the device.

    To answer your original question - gtrack can track targets that accelerate and change direction.

    Regards,
    Justin