[color=#333333][font=Times][color=#000000][size=large][color=#333333]I have 4 MDEK1001 RTLS units. I was wondering how[/color] can I implement the kalman filtering to improve the accuracy on my tag? which hardware and software should I use to configure for the tag? I mean by using those data (ranging and [/size][/color][size=medium]estimated[/size][color=#000000][size=large] position) which I have [/size][/color][/font][/color][color=#333333][size=small][font=Times][color=#000000]gotten[/color][/font][/size][/color][color=#333333][font=Times][size=large] from the serial port on the Jlink ?[/size][/font][/color]


Hi Sara,

For a basic Kalman filter it’s best that you need 2 sensors. In your case estimated position and the 3-axis accelerometer.
using only ranging and estimated position will be much harder to get it working because those two variables are connected to each other.

Kind regards,

Hi Bjorn;
Thank you for your reply. you mean that implementing KAlman filtering for UWB is more difficult than using 2 sensors? why?


The reason is that all the measurements are with the same sensor. So they are not independent from each other. For a Kalman to work you need two sensors independent from each other so they are complementary to each other. if one as a couple bad readings the other will probably not.
With only uwb you measure with different anchors. Which sounds like independent, if not the tag is still the same. so if the tag as some local disturbances, all anchors have to.
If you want to only use the UWB you need some heuristics and knowledge of placements of the anchors. This way you can filter on physical constraints. if 5 of 6 anchors keep the same distance and the 6 does not, then you an probably say as this anchor is wrong.

i hope this explanation clarify’s it a bit more.

Kind regards,

Hi all. Let me just add some clarification.
The main idea of Kalman filter is using additional information from object movement model (prediction step). Let say if you are walker you can’t jump in 20 meters apart form your previous location in one second. So using this information we can improve our accuracy. But we can improve it only if our movement model has comparable or better accuracy than our measurements (location from UWB). In the case when the tracking object is a pedestrian uwb itself gives much better accuracy then any pedestrian movement model does.
sara what kind of object are you going to track? And how often do you want to get location info (update rate, once per minute, once per second etc)?

Thanks for your explanation. I am tracking a autonomous vehicle. Since I am using MDEK1001, its update rate is 10 Hz which is sufficient. I defined my vector space (x,y,w) which means the position in x,y direction and the w direction by the accelerometer. I would like to apply kalman filtering. However, I do not know if it is necessary to include the velocity and how it effects the accuracy, filtering and …??

Yes, I agree. 10 Hz should be sufficient for tracking a vehicle. If it’s not a space rocket.
For tracking a car I would use model with constant acceleration - noise jerk. And the state vector should be defined as (x, y, vx, vy, ax, ay). Where x, y is a position, vx vy - is a velocity vector (x-component and y-component), and ax, ay is a acceleration vector.
Also you can define the state vector as (x, y, v, w, a, u). Where v is a velocity and w is a direction, a is an acceleration and u is a direction of the acceleration.
Last variant is a bit complicated due to nonlinearity but it’s closer to a real vehicle and might be useful if you are going to use accelerometers and other inertial senors.

1 Like

This is ok. but what we get from the UWB as tag and anchors is just a position in x and x direction. So that I have only the knowledge of the position for my vector space and its uncertainty. Then how can I include the velocity and variation?

There are two possibilities.

[]Keep a record of previous points and calculate speed and acceleration. This will be less accurate.
]Use accelerometers and other inertial senors for acceleration.
For speed the first method should be enough. For acceleration, the second is better but can be a bit harder ( => 2 sensors).

With Kalman filter you can estimate velocity and acceleration based only on position information. You don’t necessary need other measurements like velocity or acceleration. The same idea is suggested Bjorgul but you don’t need to estimate velocity separate. Velocity can be estimated with Kalman filter itself.

Just to add 2 cents to the discussion: the ranges are bona fide measurements and can be fed to the Kalman filter (as Bjorn points out, they are not strictly speaking independent of each other but I suppose that is more of a second-order effect).

But whatever you do, do not use the position estimate as a measurement. It is completely derivative from the ranges+anchor positions (I assume you know the latter and not in SLAM mode) and in an NLOS situation will be also very wrong.

Hey Felix,

This has to do with how good your position algorithm is. If that is a robust one that can hold it together under those circumstances, it can be used. We’re using UWB positions in combination with INS data for better positions.
We’re also looked at a KALMAN on distances, but we came to the conclusion it’s really overkill in our application and stopped looking at it.

But indeed, if those positions are effected by NLOS, then a Kalman filter will be no good.

Hi Bjorn.

I have the same problem as Sara. Could you tell me why accelerometer and UWB are connected? The system uses accelerometer only to check if device is stationary or not. So when I use accelerometer for begin move (positive acceleration) and for stop move (negative acceleration) My accuracy should be better, shouldn’t it?

Best regards,

1 Like

Agree with u Oxider.