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

Turtlebot odometry/imu calibration fails with Kinect mounted upside down

asked 2011-09-21 19:31:01 -0500

Marco gravatar image

updated 2011-09-22 05:42:59 -0500

tfoote gravatar image

Hi all!

I recently added an adxrs613 gyro to my setup and am trying to calibrate the odometry. Because my kinect is mounted upside down on my robot I expected that some small changed in the code of are needed for everything to function correctly. I expected that the change in calibrate from

scan_delta = 2*pi + normalize_angle(scan_end_angle - scan_start_angle)


scan_delta = 2*pi - normalize_angle(scan_end_angle - scan_start_angle)

and in align from

angle = self.scan_angle


angle = - self.scan_angle

would suffice to fix this?

However my problem is that, during the calibration run, I notice that especially at the lowest speed (first calibration rotation) the turtlebot rotates much too far (about 1.5x). I guess because the bot rotates way too far, it is not able to find the straight wall anymore and the next calibration run starts off at a wrong position. These higher speed calibration rotations do however seem to rotate approximately 360 degrees, but then of course also end up facing away from the wall and thus not finding it correctly. I checked if the data coming from odometry and imu is making sense by echoing when using keyboard_teleop and it does.

Any suggestions on what's going wrong and how to fix it?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2011-09-23 10:00:17 -0500

mmwise gravatar image

You need to change your urdf to account for the fact that the optical frames are now all upside down, which will fix the sign problem.

The calibration tells you that if it can't find the wall start by lowering the default calibration so that it will find the wall.

If the TurtleBot does not successfully return to facing the wall before executing
the next rotation the data will be incorrect. This can be caused by too big of an 
error in the existing parameters. If it under rotates, increase the odom parameter and 
retry. If it overrotates lower the odom_parameter and retry.
edit flag offensive delete link more

Question Tools


Asked: 2011-09-21 19:31:01 -0500

Seen: 707 times

Last updated: Sep 23 '11