0
$\begingroup$

Rosanswers logo

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

  opt/ros/kinetic/include/create/util.h 

and change the

V3_ticks_per_rev 

like what it said here: https://github.com/AutonomyLab/create_autonomy/issues/32

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!


Originally posted by Usui on ROS Answers with karma: 21 on 2019-06-23

Post score: 0


Original comments

Comment by Geoff on 2019-06-23:
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?

Comment by Usui on 2019-06-24:
@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.

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

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.


Originally posted by Geoff with karma: 4203 on 2019-06-24

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by Usui on 2019-06-24:
But here: https://github.com/AutonomyLab/create_autonomy/issues/32

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.

Comment by Usui on 2019-06-24:
@Geoff Actually I did use use a hokuyo laser but the problem was: http://answers.ros.org/question/326213/amcl-localizing-offset-problem/ that's why I wanted to make sure odometry was as accurate as possible

Comment by gvdhoorn on 2019-06-25:\

I tried to go into

opt/ros/kinetic/include/create/util.h

and change the

V3_ticks_per_rev

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.

Comment by Usui on 2019-06-25:
@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.

Comment by gvdhoorn on 2019-06-25:
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.

Comment by Usui on 2019-06-25:
Sorry I am unfamiliar with those method. Could you elaborate a little more a catkin_tools/catkin_make_isolated to build everything? Thank you!

Comment by gvdhoorn on 2019-06-26:
These should help:

Comment by Usui on 2019-06-26:
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?

Comment by Usui on 2019-07-17:
@gvdhoorn okay so I successfully catkinn_make_isolate it. Now I have another question: https://answers.ros.org/question/328789/intergrate-libcreate-into-create_autonomy/

$\endgroup$

Your Answer

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