Create Odometry Bug

From Tekkotsu Wiki

Jump to: navigation, search

The iRobot Create's built-in odometry works reasonably well for forward motion, but does not register rotations slower than around 30 degrees per second. This appears to be due to a roundoff problem, and might possibly be mitigated by querying the odometry values less frequently so that the accumulator does not get reset as often. Further experiments are required to test this hypothesis.

Currently, Tekkotsu is asking the Create to send updates at its maximum rate, so odometry information is not reliable for low speed turns. This is a problem for applications that rely on Tekkotsu's built-in particle filter for localization. For this reason, the FourCorners Demo provides keyboard commands that cause left and right turns to be made at a fixed speed for which the odometry provides good results.

User programs that make use of the particle filter (e.g., anything using a LocalizationNode) can avoid the bug by not moving forward and turning at the same time. The WalkMC::setTargetDisplacement method for the Create recognizes when the robot is turning in place and sets an optimal velocity for maintaining good odometry.

To demonstrate the odometry bug for yourself, go to Root Control > Status Reports > Sensor Observer, select the Sensors menu and check the boxes for Angle and Distance. Then go back to the main Sensor Observer menu and click on Real Time View. Use the Walk Remote Control to move the robot, and you'll see that the Angle value does not change for low speed turns, but does change for turns at moderate to high speeds.