asked 2011-09-22 00:31:01 -0500Marco
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 calibrate.py 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?
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.
Asked: 2011-09-22 00:31:01 -0500
Seen: 329 times
Last updated: Sep 23 '11