Discussion:
Q about covariance matrices in nav_msgs/Odometry
Anh Nguyen
2010-11-13 23:19:38 UTC
Permalink
Hi,

I am trying to create a nav_msgs/Odometry publisher, to be used by
the robot_pose_ekf node. My robot only give me 3 numbers: x,y and theta
while the nav_msgs/Odometry message needs covariance and many other data.

My question is what variables correspond to the covariance matrices
in nav_msgs/Odometry? how should I go about calculating the matrices from
what I have. Any pointer to more reading materials would be appreciated.

Thanks,

-Andy
Wim Meeussen
2010-11-16 21:09:09 UTC
Permalink
Andy,
I am trying to create a nav_msgs/Odometry publisher, to be used by
the robot_pose_ekf  node.  My robot only give me 3 numbers: x,y and theta
while the nav_msgs/Odometry message needs covariance and many other data.
My question is what variables correspond to the covariance matrices
in nav_msgs/Odometry?
Check out the message documentation here:
<http://www.ros.org/doc/api/geometry_msgs/html/msg/PoseWithCovariance.html>.
You'll basically need a 6x6 matrix to represent the Gaussian
uncertainty on your robot pose. If you only have 3 values from your
odometry, you probably want to use high covariance values
corresponding to the other 3 values in the robot pose. If you want to
see an example, you can start up a pr2 robot in Gazebo, and do a
rostopic echo on the output of the base_odometry controller.

Hope this helps,

Wim
--
--
Wim Meeussen
Willow Garage Inc.
<http://www.willowgarage.com)
Anh Nguyen
2010-11-17 04:28:40 UTC
Permalink
Thanks Wim,

A bit more research shows that something like below would work since my
robot only move along xy plane and rotate around z axis. But I am still
totally lost on what cov_x, cov_y and rcov_z really mean and how to compute
them. Any suggestion / pointer will be appreciated.

msg.pose.covariance = {cov_x, 0, 0, 0, 0, 0,
0, cov_y, 0, 0, 0, 0,
0, 0, 99999, 0, 0, 0,
0, 0, 0, 99999, 0, 0,
0, 0, 0, 0, 99999, 0,
0, 0, 0, 0, 0, rcov_z}

Best,

-Andy
Konrad Banachowicz
2010-11-17 09:05:48 UTC
Permalink
Hi,
I think this paper describe what you want : http://
infoscience.epfl.ch/record/97432/files/Martinelli_ifacnolcos.pdf
Pozdrawiam
Konrad Banachowicz
Post by Anh Nguyen
Thanks Wim,
A bit more research shows that something like below would work since my
robot only move along xy plane and rotate around z axis. But I am still
totally lost on what cov_x, cov_y and rcov_z really mean and how to compute
them. Any suggestion / pointer will be appreciated.
msg.pose.covariance = {cov_x, 0, 0, 0, 0, 0,
0, cov_y, 0, 0, 0, 0,
0, 0, 99999, 0, 0, 0,
0, 0, 0, 99999, 0, 0,
0, 0, 0, 0, 99999, 0,
0, 0, 0, 0, 0, rcov_z}
Best,
-Andy
_______________________________________________
ros-users mailing list
https://code.ros.org/mailman/listinfo/ros-users
Anh Nguyen
2010-11-18 10:16:35 UTC
Permalink
Yes. Thanks a lot. This is what I need :)

I also found a few other papers about the topic. Most of them are ~20 years
old. I list them below. Hopefully they will be helpful for other people who
want to find out more about the topic in the future:


- On the Representation and Estimation of Spatial Uncertainty
- LOCATION ESTIMATION AND UNCERTAINTY ANALYSIS FOR MOBILE ROBOTS
- Modelling and estimating the odometry error of a mobile robot
- Experimental results from internal odometry error correction with the
OmniMate mobile robot


Regards,

-Andy

Loading...