Rosanswers logo


I'm currently trying to "fix" the localization on a known map with my car-like robot. I don't need it to be very accurate, "in about" will do. My current settings are as follows:

<param name="odom_alpha1" value="0.2"/>
<param name="odom_alpha2" value="0.3"/>
<param name="odom_alpha3" value="0.6"/>
<param name="odom_alpha4" value="0.4"/>

but since I'm not a robotics pro I have a hard time understanding what I need to tune in my case. Some info about my robot:

  • car-like robot, 4 wheels
  • I can control 2 wheels at a time (so either the left or the right side), making a turn means turning the left and the right side in opposite directions
  • the speed of the left and right side is usually a bit different, this means that the robot is not going straight forward but driving a small curve
  • I have a gyro that works pretty good, so that I can calculate yaw, BUT the speed is just an estimated value

If I understood it correctly odom_alpha1 is not very important for me, since the gyro gives me pretty good values.

odom_alpha2 whould "take care" of the drift mentioned in the 3rd bullet point, right?

odom_alpha3 corrects the forward movement?

and odom_alpha4 corrects the forward/backward movement, when making a turn.

Did I get it right? Which parameters I should work with, since my robot is still getting lost pretty often.

Originally posted by Cav on ROS Answers with karma: 345 on 2012-04-29

Post score: 0


1 Answer 1


Rosanswers logo

I think you got the interpretation of the values right.

First of all, you should tune the parameters using a bag file, since you can not do anything repeatable on a live system. Record the sensors and the odometry and watch what's happening in rviz playing the bag with amcl running.

Closely look at what happens to your PoseArray and see where and how the robot gets lost. If there is a displacement when the robot turns, it's odom_alpha4 etc.

"Too high" values are usually not a big problem since this will spread out the samples more and you still have a good one in the sampleset. If the values are too low, however, the actual pose of the robot will often not be reflected anymore by any of the samples. (never underestimate the error!)

So when in doubt, raise the values. On the PR2 for example the robot will still localize quite well when going from values between 0-1 to values around 10. It could use more up computation time though, since more samples will be used.

Originally posted by TomTUM with karma: 481 on 2012-04-30

This answer was ACCEPTED on the original site

Post score: 8


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.