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.

AWR1642: TIDEP-0092 EKF Tracker for cross traffic situation?

Part Number: AWR1642
Other Parts Discussed in Thread: TIDEP-0092

Hi,

In TIDEP-0092 SRR reference design document p.9, it mentions:

"In the SRR design, the assumption is that the velocity of the object is only along the longitudinal axis. In other words, a vehicle with a relative velocity v is assumed to be travelling towards the radar with vx = 0 , and vv = v , which works well in long-range highway traffic, but is less effective in cross-traffic situations."

Can I said the tracking function is only designed for highway traffic but not for cross traffic?

Is there any suggestion for cross traffic tracking?

  • You are correct, tracking function in TIDEP-0092 is not effective in cross-traffic.

    For cross traffic tracking new algorithm would have to be developed and tested

    thank you
    Cesar
  • Hi James.

    The primary way the SRR is configured for oncoming traffic is that in the initialization function for a track (a track is simply one instance of the EKF tracker, tracking one particular target), the radial velocity measurement is assumed to indicate the speed of the oncoming velocity of a car. This is because an instantaneous radar doppler measurement only gives the relative speed, and not the 'true' direction of motion of the target. 

    In order to modify the SRR for cross-traffic situations, modify the function 'initNewTracker'. Currently, the function is written as follows.

    void initNewTracker(KFstate_t* restrict obj, trackingInputReport_t const * restrict meas)
    {
        int32_t w_ik;
        obj->vec[iX] = meas->measVec[iRANGE] * meas->measVec[iSIN_AZIM];
        obj->vec[iY] = sqrtsp((meas->measVec[iRANGE] * meas->measVec[iRANGE]) - (obj->vec[iX] * obj->vec[iX]));

        obj->vec[iXd] = 0;
        obj->vec[iYd] = meas->measVec[iRANGE_RATE];

    You can modify the last two lines based on the assumed direction of motion of the radar. For instance, if the car is assumed to moving across the azimuth FoV of the radar, you can change the last two lines to

    obj->vec[iXd] = meas->measVec[iRANGE_RATE];

    obj->vec[iYd] = 0;

     

    If the car is assumed to moving in a 45 degree angle (w.r.t to the radar plane), you can change the last two lines to

    obj->vec[iXd] = meas->measVec[iRANGE_RATE]*(0.707); (1/sqrt(2) = 0.707)

    obj->vec[iYd] = meas->measVec[iRANGE_RATE]*(0.707);

     

    Etc.

    If the initialisation makes the correct hypothesis for the direction of the car movement, the rest of the code should work as is.


    Regards

    Anil

  • Hi Anil,

    Thanks a lot. This really helpful and we'll try it.

  • Hi James,

    There is a correction to the previous email. The corrected sentence is given below. The change is the phrase - from left to right.

    For instance, if the car is assumed to moving across the azimuth FoV of the radar (from left to right), you can change the last two lines to

    obj->vec[iXd] = meas->measVec[iRANGE_RATE];

    obj->vec[iYd] = 0;

    The reasoning for the correction and some more details on the initialisation of the kalman filter is given below.

    In general, in a single target scenario, the initial state of the kalman filter doesn't matter. Even if the initial state is garbage, as it gets more measurements (from subsequent frames) the kalman filter will correct itself and reach the correct state.

    In a multi-target scenario like the one an SRR would face, the initial state is important, since we will only search for an association close to the initial state (An association is the matching of new measurements to existing states), so it is important that the initial state be approximately correct, so that the association algorithm selects the correct measurement to associate with a given state.

    Now, a radar's instantaneous Doppler meausrement only gives the relative speed. If we have prior information that the target is cross-traffic, we can make the assumption that all of the velocity if the target is in the cross-traffic direction (x-dimension). We also need to make an assumption ( say based on the azimuth of the target), the direction of its approach. Which is why I added the left to right condition.

    Let me know if you have any more questions

    Regards

    Anil