ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A answers.ros.org

# robot_localization EKF internal motion model

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 close merge delete

Sort by ยป oldest newest most voted

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.

more

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

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

Thank you!

( 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!

( 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?

( 2017-09-19 09:56:12 -0500 )edit
1

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

( 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.

( 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!

( 2020-10-15 08:50:51 -0500 )edit
1

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

( 2020-10-16 11:42:53 -0500 )edit