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

Revision history [back]

Imagine that your pose estimate is derived from fused GPS, wheel odometry, and IMU data. You tell your robot, whose position is (0, 0) in your world frame, to move to (10, 10), and it starts to move there. Along the way, the GPS jumps to (11, 11), and the robot suddenly thinks it's on the other side of the goal, so it tries to turn around. Then it jumps back to (9, 9), and it turns around again. The issue is that controlling your robot in a discontinuous frame can be a problem. Note that this isn't limited to GPS data: nodes that do actual localization (e.g. amcl) may undergo very small jumps in pose, but those may be enough to upset the control of the robot. One can imagine a situation where the threshold on your waypoint satisfaction is N radians, but the localization system produces measurements with error > N, and under-reports its covariance. In that instance, you may never "reach" the goal.

In this case, it isn't just the EKF parameters that need to be tuned, but the covariance matrices in the measurements themselves. If the measurement covariance is overconfident, then the filter output will have discrete jumps that match the input. Unfortunately, this is a common occurrence with drivers and localization packages.

Furthermore, REP-105 is a standard that applies to all ROS nodes, and not just those that perform fusion. You can simply run a robot controller that produces odometry in the odom frame and a localization node (e.g., amcl) that produces pose estimate in the map frame, and not bother with any sensor fusion packages like robot_localization. In that case, no fusion is occurring, so if you want to control your robot, you'll want to do so in the odom frame, as the map frame data is subject to discontinuities.

In any case, you are correct that with proper error management, you can mitigate these effects and work with a single frame. Some companies have localization solutions that are so good that they can control their robot in the map frame (i.e., fusing the localization data) and not ever run into trouble with discontinuities.