Re: Angles and axes velocity informations from rgbd_odometry node
Posted by
matlabbe on
URL: http://official-rtab-map-forum.206.s1.nabble.com/Angles-and-axes-velocity-informations-from-rgbd-odometry-node-tp924p949.html
Yes, lower quality means higher variance. I could copy the pose covariance in the twist covariance, but I am not sure what an external system really needs about the twist covariance. Even for the pose covariance, there are two approaches to set it in rtabmap odometry:
*
Odom/VarianceFromInliersCount: (default false) Set variance as the inverse of the number of inliers. Otherwise, the variance is computed as the average 3D position error of the inliers.
You will get (if false (absolute):
v = "xyz variance between 3D point inliers", if true (relative):
v = "1/inliers")
Cov(x,y,z,roll,pitch,yaw) = [v 0 0 0 0 0;
0 v 0 0 0 0;
0 0 v 0 0 0;
0 0 0 v 0 0;
0 0 0 0 v 0;
0 0 0 0 0 v]
There could be a third "relative" approach based on reprojection error. In both approaches, the same variance is set to all components (only diagonal though). Well, with the first approach, I could be more specific by computing a variance for each x-y-z component (but not for roll-pitch-yaw).
For graph optimization, TORO is using only the highest variance of x-y-z for the translation variance and highest variance of roll-pitch-yaw for the rotation variance. I think g2o and GTSAM use all components (the whole covariance matrix instead of only the diagonal).
For packages like
robot_pose_ekf or
robot_localization, it would be good to know exactly which kind of covariance they want, relative (variance can be any scale, but should be consistent between odometry messages to tell if one is better than other) or absolute (in meters and radians for example). viso2
sets a fixed pose and twist covariances. fovis
computes the covariance using a Jacobian, then
sets only twist covariance.
cheers,
Mathieu