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

iRobot Create odometry problem

asked 2019-06-23 21:05:08 -0500

Usui gravatar image

updated 2019-06-23 23:02:51 -0500

So I am using an iRobot Create 2 with create_autonomy package from github. However, the odometry is wrong. Every time I go 1 meter, it only goes .9 meter. I tried to go into


and change the


like what it said here:

but it doesn't matter what I change it to it's still the same. I am pretty sure the diameter is right so I am wondering how I could fix this. Any help is appreciated!

edit retag flag offensive close merge delete


Does it go exactly 0.9 metres every time you move it exactly 1 metre? How do you determine that it has moved 1 metre, or are you actually referring to the command you sent it rather than a distance on the floor that you have measured?

Geoff gravatar image Geoff  ( 2019-06-23 22:13:27 -0500 )edit

@Geoff It goes around 0.9 depending on the speed that I set. And yes I set up a line and marked values up to 1 meter and wrote a cmd_vel node for it to go 1 meter (1,0). I set the error range to be 3 meter since robot could never go to the exact spot.

Usui gravatar image Usui  ( 2019-06-24 11:58:36 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2019-06-24 19:53:07 -0500

Geoff gravatar image

With wheel odometry, especially on the iRobot Create which is somewhat famous for having poor-quality odometry, I think that getting within 10 cm of the goal is about the best you can hope for. If you want greater accuracy you will need to use a more accurate localisation method, such as LiDAR-based localisation or an external localisation system using markers, and also improve the motion controller so it tries to get closer to the goal through such methods as slowing down significantly prior to the goal and wiggling towards it. Although there is a limit to how close you can get with the rough motors of a Create, it is capable of reasonable accuracy.

edit flag offensive delete link more


But here:

they were able to change how much it goes by change the V_3_ticks_per_rev, but no matter what I changed it goes the same distance.

Usui gravatar image Usui  ( 2019-06-24 20:25:21 -0500 )edit

@Geoff Actually I did use use a hokuyo laser but the problem was: that's why I wanted to make sure odometry was as accurate as possible

Usui gravatar image Usui  ( 2019-06-24 20:27:39 -0500 )edit

I tried to go into


and change the


changing a header file (only used at compile time) in a non-world-writable location is not going to help.

If you really must change that value (instead of using a configuration parameter somewhere), you'll have to build the create library from source in your workspace somewhere.

gvdhoorn gravatar image gvdhoorn  ( 2019-06-25 01:52:55 -0500 )edit

@gvdhoorn but the libcreate is created from c++ so if I clone it into my catkin_ws, catkin_make won't work. Also I am unsure of how to link the libcreate with the create_autonomy.

Usui gravatar image Usui  ( 2019-06-25 12:36:47 -0500 )edit

You have two options:

  1. create an underlay workspace that you compile with catkin_make_isolated. source that and then build your the workspace with create_autonomy.
  2. use catkin_make_isolated (or catkin_tools) to build everything.
gvdhoorn gravatar image gvdhoorn  ( 2019-06-25 13:07:03 -0500 )edit

Sorry I am unfamiliar with those method. Could you elaborate a little more a catkin_tools/catkin_make_isolated to build everything? Thank you!

Usui gravatar image Usui  ( 2019-06-25 13:14:14 -0500 )edit
gvdhoorn gravatar image gvdhoorn  ( 2019-06-26 01:52:07 -0500 )edit

Thanks but I don't know if what I am doing is right. Do I just do everything it said in the overlaying with catkinworkspaces tutorial with git clone libcreate instead of ros-tutorial?

Usui gravatar image Usui  ( 2019-06-26 11:54:52 -0500 )edit

Question Tools



Asked: 2019-06-23 21:05:08 -0500

Seen: 511 times

Last updated: Jun 24 '19