# Kalman Filter Motion model with moving sensors

Suppose I have an object that I am tracking with moving sensors using a basic Kalman Filter (for example, think of a ship being tracked by satellites). In the simplest case where the sensors are stationary and the object moves in a straight line, the constant velocity (CV) motion model works well. However, when sensors also start to move in different linear trajectories, the CV motion model does not perform well resulting in filter divergence as the assumption of constant velocity is broken.

Is there a way to salvage the CV model by adjusting it or the incoming measurements so that the model does not diverge? If not, is there a more preferable motion model to use or a different method to deal with motion introduced by the sensor? I am considering the constant acceleration (CA) model, TURN model (constant turn rate), and the Integrated Ornstein-Uhlenbeck (IOU) motion model. The IOU model seems promising as it does account for varying velocity with parameters determining some behaviors of the distribution of velocity, but I am unsure if it would require adaptive filtering with changing the parameters based on the particular sensor.

I have not yet tried to use a nonlinear Kalman filter, like a Sigma Point Kalman Filter (UKF), to see how this would perform. If this is the appropriate solution, I am uncertain of a justification why this would even be a remedy for the issue. Naturally, I would like to extend my above example to the case where I have nonlinear motion for the object I am tracking, but I wanted to solve the linear target motion case first without moving to a nonlinear Kalman filter.

I am aware a Particle Filter may be a solution to this problem, but I would like to stick to a filter with complexity more comparable to a Kalman Filter.

Any input on how to apply a Kalman filter with moving target and moving sensors would be greatly appreciated. I am new to Kalman filtering, so any references where I could read about filtering with this particular issues would also be welcome!

EDIT: as requested, the sensor paths for majority of the sensors are known, and some others have sensor paths that are unknown.

The information I have about the object from each sensor is it’s position (Latitude, Longitude, Altitude). Some, but not all, sensors give me velocity (speed and course).

• Please edit your question so that it makes clear whether the paths of the sensors are known or unknown. If the sensor paths are known, this is (relatively) easy. If they're unknown, then you basically need to track the sensors, too -- so give us an idea of what information is available to the filter that it might determine the sensor paths (after which we're back to the easy problem of tracking the object). Commented Feb 25, 2022 at 15:23
• While you're doing that, please also edit your question to include information about what each sensor finds out about the object -- does it find out that the object is along a certain vector in space, a certain distance from the sensor, etc. Commented Feb 25, 2022 at 15:29

I find the discussion of the "Converted Measurement Kalman Filter" in "Multitarget-Multisensor Tracking: Principles and Techniques", 1995, by Yaakov Bar-Shalom and Xiao-Rong Li to be helpful. It explains how it can often be useful to convert your measurements from the coordinate system in which the measurements occur (such as polar), to the coordinate system in which the state of the target is stored (often cartesian for near constant velocity tracking). This conversion of measurements can be considered as a pre-processing step prior to the Kalman Filtering. In this case, the noisy input measurements of the target are presented to the Kalman filter in cartesian coordinates, which may help to avoid introducing non-linearities in the h(x) measurement function which produces input measurement values which you would expect to occur for a given state value. Note that for each input measurement time step it will be necessary to determine appropriate values of R, the "measurement error covariance matrix" in the cartesian coordinates, while the measurement error statistics may have originally been characterized in the coordinate system in which the measurements occurred, (such as polar). This approach may help to avoid some of the complexity which you mention.

• Note that this says in plain English what I said in Math. Pick which one makes the most sense to you -- or read both, if and only if it helps you understand. Commented Feb 26, 2022 at 4:13
• Although the measurements are given to me in Latitude, Longitude, and Altitude, I always convert this to ENU (local) or ECEF (global) coordinates as the constant velocity model is more complex and nonlinear in WGS84 coord as you had mentioned. This issue seems separate from the movement of the sensors though. Also, the measurement covariance has already been rotated appropriately (for a linear transformation of coordinates $A$ then measurement covariance $R$ becomes $ARA^T$. Thank you for the reply!
– bark
Commented Feb 26, 2022 at 16:37

If the paths of the sensors are unknown and unknowable, and if a set of sensor readings does not let you determine enough about the sensor's position to get sufficient information about the position of the object, then you just can't get there from here -- "Kalman" is a Hungarian surname that means someone's family is from a particular region of Germany; it is not a Hungarian word for "magic". So a Kalman filter is not a magic filter -- it's just very awesome.

If the sensor paths are perfectly known, then you can just treat this as a regular Kalman filtering exercise. For each sensor $$k$$, find a function $$(\mathbf y_k, \mathbf R_k) = f_k(\mathbf x_t, \mathbf x_k) \tag 1$$ where $$\mathbf y_k$$ is the measure you get from the sensor, $$\mathbf R_k$$ is the measurement noise, $$\mathbf x_t$$ is your target's state (presumably position and velocity), and $$\mathbf x_k$$ is your sensor's state (presumably position, velocity, and orientation, but really whatever is necessary).

Then construct your Kalman filter such that the $$\mathbf x_t$$, $$\mathbf P$$, etc., are normal, and the measurement vector is the stack of all of the $$\mathbf y_k$$; i.e. $$\mathbf y = \begin{bmatrix} \mathbf y_1 \\ \mathbf y_2 \\ \vdots \end{bmatrix}. \tag 2$$

If your $$f_k$$ are linear in $$\mathbf x_t$$, i.e. they are all of the form $$f_k(\mathbf x_t, \mathbf x_k) = \mathbf H_k(\mathbf x_k) \mathbf x_t$$, then in your Kalman formulation your measurement matrix is $$\mathbf H = \begin{bmatrix}\mathbf H_1 & \mathbf H_2 & \cdots \end{bmatrix} \tag 3$$

If your $$f_k$$ are not linear in $$\mathbf x_t$$, then you'd need to use some nonlinear Kalman technique; i.e. for an extended Kalman filter you would use $$\mathbf H_k = \frac{\partial}{\partial \mathbf x_t} f(\mathbf x_t, \mathbf x_k)$$, for fancier nonlinear Kalman filter implementations you would -- well -- get fancier.

Your measurement noise matrix (assuming all the measurements are independent) would be $$\mathbf R = \begin{bmatrix} \mathbf R_1 & \mathbf 0 & \mathbf 0 & \mathbf 0 \\ \mathbf 0 & \mathbf R_2 & \mathbf 0 & \mathbf 0 \\ \mathbf 0 & \mathbf 0 & \ddots & \mathbf 0 \\ \mathbf 0 & \mathbf 0 & \mathbf 0 & \mathbf R_K \end{bmatrix}. \tag 4$$

Everything else would be a bog-standard Kalman filter.

• So it seems that you’re proposing that I modify the measurement model as opposed to the motion model. The concatenation of all the measurements shouldn’t be required unless I have measurements coming from different sensors simultaneously, correct? Shouldn’t I have a different f for each sensor if the sensors move differently (say one has a linear path and another elliptical)? I suppose, I do not see how to derive f when sensors have different motions. Is there a reference on this? Thank you for your reply!
– bark
Commented Feb 25, 2022 at 17:10
• Well, if that modification makes sense. And yes, I was assuming multiple sensors with simultaneous outputs. And further yes, you should have a different $f$ for each sensor (I corrected my answer). Commented Feb 26, 2022 at 4:03
• "I suppose, I do not see how to derive f when sensors have different motions." Unless you mean "how do I derive one function" -- it's up to you to understand how your sensors move! They're your sensors! Commented Feb 26, 2022 at 4:04
• I know how my sensors move, I had said for example they move in a linear fashion or in an elliptical one. As far as I can tell from the specs on the sensor, they only have the variance information which tells me the amount of error in each coordinate (ie measurement covariance information). The measurement model I currently have in place is simply taking the position components of the state vector consisting of position and velocity with the CV model. Knowing how the sensors move, it is still unclear how I modify this standard measurement model to reflect that linear sensor movement.
– bark
Commented Feb 26, 2022 at 16:30
• Good point, I left out how to get the measurement matrix. I've given you the thumbnail -- if your sensor-to-state transformation is, indeed, nonlinear in the state, then you'll need to use a nonlinear variant of the Kalman somehow. Commented Feb 26, 2022 at 18:28