ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

robot_localization EKF internal motion model

asked 2015-12-01 10:01:04 -0500

takahashi gravatar image

updated 2015-12-01 10:39:12 -0500

As I was not able to find this information in the documentation of the robot_localization package nor its source code, does anybody know what the "internal motion model" is that is used in theekf_robot_localization node?

Edit: In the corresponding paper, the authors state that they use a "standard 3D kinematic model derived from Newtonian mechanics", but I guess this model is derived from the kinematics of the test platform they used for the experiments.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2015-12-03 20:07:16 -0500

Tom Moore gravatar image

It's a generic omnidirectional motion model which isn't all that complicated, but it's a bit much to write out here. In this paper, it corresponds to the robot type (3,0), but the model in robot_localization is in 3D. Each variable has a nonlinear transition function, and we encode those transition functions as a matrix. So, for example, the transition function for x is x_new = x_old + vx * t + 0.5 * a * t^2, but v and a are given in the body frame of the robot, so we have to apply 3D rotations to them. The orientations have similar logic. Velocities (for x) are just vx_new = vx_old + at. Each row in the matrix is a transition function. We then derive the Jacobian analytically.

Naturally, this won't necessarily match ever robot perfectly, but in practice, it works pretty well for a broad range of robots. You an always increase the process_noise_covariance matrix values if the model doesn't match your robot well.

If you want to take a look, check out the predict function.

edit flag offensive delete link more


thanks Tom and great work by the way! :-)

takahashi gravatar image takahashi  ( 2015-12-04 01:15:02 -0500 )edit

Thank you!

Tom Moore gravatar image Tom Moore  ( 2015-12-04 08:14:25 -0500 )edit

Hi Tom,

We want to use robot_localization to localise a non-holonomic platform, aka ackermann. I was wondering if the 3D motion model in the EKF/UKF nodes would cover these motion constraints, and if so, is there a chance it could fail for an ackermann platform? Your advise is appreciated!

fastestindian gravatar image fastestindian  ( 2017-08-22 11:43:38 -0500 )edit

Hey Tom, If sensor data ( encoder and IMU ) has been used in prediction step and which data are you using in correction step?

kgandhi24 gravatar image kgandhi24  ( 2017-09-19 09:56:12 -0500 )edit

The prediction step is handled entirely by the motion model. IMU and encoder data is used in correction.

Tom Moore gravatar image Tom Moore  ( 2017-09-19 10:01:50 -0500 )edit

@fastestindian The motion model isn't really conducive to Ackermann platforms (in 2D mode, it's really just a unicycle model), but it depends on the data you feed it. If you are feeding it pose data from some other Ackerman model, then the prediction step will be a bit off, but will get corrected.

Tom Moore gravatar image Tom Moore  ( 2017-09-19 10:05:21 -0500 )edit

I looked everywhere for this information, and I feel like it really should be included in the documentation of the package!

plafer gravatar image plafer  ( 2020-10-15 08:50:51 -0500 )edit

Yeeaaaah, it probably should, I agree. Feel free to file a ticket, but I can't promise anything soon, sorry. :(

Tom Moore gravatar image Tom Moore  ( 2020-10-16 11:42:53 -0500 )edit

Question Tools



Asked: 2015-12-01 10:01:04 -0500

Seen: 3,094 times

Last updated: Dec 03 '15