I have a robot whose pose $(x, y)$ is defined relative to the global frame. I have a sensor which estimates the robot's current pose in the global frame, and the sensor is known to have Gaussian error. The robot has a sensor which estimates the robot's local velocity $(u, v)$ relative to the robot's own frame, and the sensor is known to have zero error, so the motion model is known perfectly.


I now want to track the estimated pose of the robot in the global frame, using a Kalman filter. I know that my observation noise is Gaussian, which is one requirement of the Kalman filter. The other requirement is that the dynamics model is linear. Most examples of this type (global position frame, local velocity frame) I have seen say that the Extended Kalman filter is needed. However, I am not sure about whether this is true for my case, because my velocity sensor has zero error. I have two ideas:

1) The velocity sensor has zero error, and so the motion model is known perfectly. So, at every timestep, the estimated state is simply the previous state, plus the velocity multiplied by the timestep. Since there is no uncertainty in the velocity, there is no uncertainty in the motion. Therefore, I can use a regular Kalman filter.

2) Even though the motion model as zero noise, the dynamics itself is still non-linear. This is because to transform from the local frame to the global frame requires a rotation, which is a non-linear function since it involves sin and cosine functions. There may be zero "extra" uncertainty caused by the motion, but the motion model is still non-lienar. Therefore, I must use an extended Kalman filter.

Please could somebody explain which is correct, or if neither, what the correct solution is?

  • $\begingroup$ Consider: If you have no uncertainty, you can integrate your sensor measurements directly, eliminating the need for a kalman filter of any kind $\endgroup$ – Jacob Panikulam Apr 14 at 13:07
  • $\begingroup$ Thanks for your comment @JacobPanikulam. But even if there is no motion uncertainty, I need to fuse multiple Gaussian observations. So at each timestep, I need to transform the prior Gaussian estimate by the known motion model. And if the robot's motion involves rotations, then this requires transforming a Gaussian by a non-linear function. So, my initial thought was that I cannot integrate the sensor measurements directly, since I need to include a non-linear transformation between them. Am I incorrect? $\endgroup$ – Karnivaurus Apr 14 at 19:15
  • 1
    $\begingroup$ Ah, I see now. Yes, your instinct is right that rotation makes your dynamics nonlinear, and that if you want to use a Kalman Filter, you’re stuck with using a nonlinear extension to the KF. $\endgroup$ – Jacob Panikulam Apr 15 at 4:54

The reason that a Kalman filter requires a linear system is that a gaussian distribution loses its properties when transformed with a non-linear function. Although your transformation from local to global frame is a non-linear function, since your velocity measurement has no gaussian noise associated with it, you dont need to worry about the requirement for linearity. That being said, in the case that you perfectly know you initial pose, then you can just transform the perfect velocity measurement from the local frame to the global frame and find the new pose without any uncertainty. So if you have the perfect initial state you would not even require a filter.

| improve this answer | |
  • $\begingroup$ Thank you Vishnu. I don't perfectly know the initial pose -- all pose estimations have error (which I assume is Gaussian). It's just that the motion model is perfect. So therefore, I believe I still need to do some filtering, but I can use a linear Kalman filter even though the motion itself is non-linear. Although I don't know whether this is called a Kalman filter anymore, since I am not integrating uncertainty in the motion.... $\endgroup$ – Karnivaurus Apr 18 at 14:08
  • $\begingroup$ In the case that your initial state is also from your noisy sensor model, you can use a regular Kalman Filter. The only difference is that your process noise covariance matrix will be a matrix of zeros, ie your predicted state covariance in the prediction step remains the same as the estimated state covariance from the previous time step. $\endgroup$ – Vishnu Prem Apr 19 at 0:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.