You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I've been trying to implement a Kalman Filter by making use of Vitis Vision Library. If one follows the official documentation, it would simply not work.
Here is what the documentation states about the Kalman Filter Kernel usage:
In practice, calling KalmanFilter with only INIT_EN flag would result in what seems to be a CU deadlock since the Kernel just hangs in the START state (verified by using xbutil examine --device --report all).
Calling KalmanFilter with flag INIT_EN + TIMEUPDATE_EN + XOUT_EN_TU + UDOUT_EN_TU will work only once, then the kernel will hang in a START state.
Actually, in the L2 example for Kalman Filter, the flag is set to 103, which is INIT_EN + TIMEUPDATE_EN + MEASUPDATE_EN + XOUT_EN_MU + UDOUT_EN_MU. This is completely misleading in comparison to the documentation and is not further explained anywhere. Why would you have TIMEUPDATE_EN and MEASUPDATE_EN flags if, in practice, both of them are required for the Kernel to work? Is the overhead of doing a measurement update necessary if only the prediction output is required?
Calling KalmanFilter with flag 103 will work. But then calling KalmanFilter with control flag set to TIMEUPDATE_EN + XOUT_EN_TU + UDOUT_EN_TU to get the prediction output will work once, and then kernel will hang in the START state on subsequent executions.
More explanation about how the control flags should be used would be of great help.
Other suggestions:
Adding assertions for the matrices size.
Add some references for the UDU factorization, which was not that trivial to find.
The text was updated successfully, but these errors were encountered:
Hi.
I've been trying to implement a Kalman Filter by making use of Vitis Vision Library. If one follows the official documentation, it would simply not work.
Here is what the documentation states about the Kalman Filter Kernel usage:
You can clearly see three steps:
INIT_EN
TIMEUPDATE_EN + XOUT_EN_TU + UDOUT_EN_TU
MEASUPDATE_EN + XOUT_EN_MU + UDOUT_EN_MU
In practice, calling
KalmanFilter
with onlyINIT_EN
flag would result in what seems to be a CU deadlock since the Kernel just hangs in theSTART
state (verified by usingxbutil examine --device --report all
).Calling
KalmanFilter
with flagINIT_EN + TIMEUPDATE_EN + XOUT_EN_TU + UDOUT_EN_TU
will work only once, then the kernel will hang in aSTART
state.Actually, in the L2 example for Kalman Filter, the flag is set to 103, which is
INIT_EN + TIMEUPDATE_EN + MEASUPDATE_EN + XOUT_EN_MU + UDOUT_EN_MU
. This is completely misleading in comparison to the documentation and is not further explained anywhere. Why would you haveTIMEUPDATE_EN
andMEASUPDATE_EN
flags if, in practice, both of them are required for the Kernel to work? Is the overhead of doing a measurement update necessary if only the prediction output is required?Calling
KalmanFilter
with flag 103 will work. But then callingKalmanFilter
with control flag set toTIMEUPDATE_EN + XOUT_EN_TU + UDOUT_EN_TU
to get the prediction output will work once, and then kernel will hang in theSTART
state on subsequent executions.More explanation about how the control flags should be used would be of great help.
Other suggestions:
The text was updated successfully, but these errors were encountered: