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

Revision history [back]

click to hide/show revision 1
initial version

A few clarifications first off: The EKF will produce the motion of the robot according to the robot, which is expressed in the odom->base_link transform. This will typically drift, even in well balanced systems. To combat this drift, an additional transform is introduced, map->odom, which compensates this drift* through techniques like mapping and loop closing. The ZED is capable of calculating both map->odom and odom->base_link transforms, although I would be careful about having one sensor do both. Currently, your ZED publishes odom->base_link (publish_tf: true). Turn that off to isolate any error to the EKF alone.

Now, if you still have drift, turn off all inputs to the EKF and restart. Make sure you have no drift here. Turn on one variable at a time (for instance, listen to just x position) and make sure that works and is stable - in this state, the position of the robot in the odom . Then, work up to the full suite of variables you intend to listen on. I would recommend to keep the number of inputs to the EKF down to a minimum.

  • The robot always starts in the odom origin, so if the robot has a map localization, the map->odom can also place the robot in a map.