Rosanswers logo

I using Ububtu 14.04 and ros-indigo-devel for robot_localization

This my ukf.yaml

frequency: 30 sensor_timeout: 0.1 transform_time_offset: 0.0 two_d_mode: true print_diagnostics: true map_frame: map odom_frame: odom base_link_frame: base_link world_frame: odom alpha: 0.001 kappa: 0 beta: 2 odom0: /odom odom0_config: [false,false,false, false, false, false, true, false, false, false, false, false, false, false, false] odom0_differential: false odom0_relative: false odom0_queue_size: 50 odom0_nodelay: false

I confirm the position.z is zero in /odom messages.

I start 2d pose estimate using ukf and pose_z is non-zero value.

I try track it and find out when computing sigma point , the position.z provide non-zero value. sigmaPoints_[sigmaInd + 1] = transferFunction_ * (state_ + weightedCovarSqrt_.col(sigmaInd)); in ukf.cpp

Is it OK ?

By the way , I using EKF to estimate pose and position.z is always zero.

Sample input is from odom

image description http://blackdragonyu.no-ip.org/web_images/2016-10-24_181611.png

The attachments are my UKF and EKF yaml


The output please see these images:

image description http://blackdragonyu.no-ip.org/web_images/2016-10-24_191341.png

image description http://blackdragonyu.no-ip.org/web_images/2016-10-24_191433.png

Update 1 :

The following is my log. Please reference

  1. When starting UKF localization , I found create sigma points that just provide non-zero for z-position of robot's pose image description http://blackdragonyu.no-ip.org/web_images/ukf2.png

  2. Because all sigma point are not zero , the z-position of robot's pose is not zero also. image description http://blackdragonyu.no-ip.org/web_images/ukf.png

Originally posted by sai5555 on ROS Answers with karma: 1 on 2016-10-19

Post score: 0

Original comments

Comment by Tom Moore on 2016-10-24:
Can you please clean up the .yaml printout and also post sample inputs from every message? Thank you.

Comment by Tom Moore on 2016-10-24:
Also, have you tried using the EKF to see if it behaves the same way?

Comment by sai5555 on 2016-10-24:
Yes , I tried EKF using same yaml and EKF dont have this problem

Comment by Tom Moore on 2016-11-01:
1e-18 is effectively 0. Does it ever become larger, or does it stay around there?

Comment by sai5555 on 2016-11-07:
About le-18~le-20


1 Answer 1


Rosanswers logo

The UKF has a prediction and correction step. The prediction step uses the sigma points to project the state forward. The sigma points are based on the state's covariance matrix, and the Z value will never be exactly 0 (in fact, it can't be). Note that this differs from the EKF, which projects the state forward using only the motion model. When you see non-zero values from the UKF, it may be due to a cycle that had a prediction step with no correction.

However, please note that the Z values you are posting are effectively 0. In the example you posted above, 3.87298e-06 is 0.00000387298. If your system is sensitive to that level of error, you may want to stick with the EKF.

Originally posted by Tom Moore with karma: 13689 on 2016-11-08

This answer was ACCEPTED on the original site

Post score: 0

Original comments

Comment by sai5555 on 2016-11-10:
OK , so it is normal ?

Comment by Tom Moore on 2016-11-10:
Yes. I was explaining how the UKF works to make it clear why you're seeing the values.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.