-
Notifications
You must be signed in to change notification settings - Fork 857
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sign error in transferFunctionJacobian_ #591
Comments
I think you're right, good catch. The transfer function (ignoring the time delta term) is:
So then we'd have
Care to submit a PR? Will go see if I still have this in my notebook from when I originally computed that. |
I got the same equation for dFYaw/dPitch. |
Hello and awesome to see an update. Do you know if this has an impact on the performance of the filter estimate? I have a deadline soon and wondering if I should update to this latest. Thanks for any input on the magnitude of the change/test results you might have done! |
Actually, I didn't run any tests, just noticed the problem when I was analytically calculating Jacobian matrix. As far as I know, this issue shouldn't affect 2D case (most common case with mobile robots) as the whole part I think this could affect 3D localization, but can't say how much of a performance impact it is. It should depend on your specific filter/system setup. Anyway, if you work on 3D localization I would definitely consider an update. |
I am indeed doing 3D (some slopes so pitch and roll are important) |
I was just diving deeper into the math behind EKF and its implementation in robot_localization and I believe I found sign error in formula for transfer function Jacobian. I think that at line 327 In file ekf.cpp the correct formula should be:
"double dFY_dP = (sr * tp * cpi * pitchVel + cr * tp * cpi * yawVel) * delta;"
instead of
"double dFY_dP = (sr * tp * cpi * pitchVel - cr * tp * cpi * yawVel) * delta;"
The text was updated successfully, but these errors were encountered: