[ros-users] iRobot - Roomba vs Create

Gonçalo Cabrita goncabrita at gmail.com
Wed Nov 9 18:21:23 UTC 2011


Hi Máté,

You are correct, I did find that some Roombas have weird odometry
problems. What happens is that the encoder pulses only increase, and
never decrease, usually they should increase when the motor moves fwd
and decrease when the motor move back. A quick fix I did was using the
speed that was being sent to the motors to assume the turning
direction of the motor and together with the one-way pulses calculate
the odometry.

Still, even if the odometry is working as expected, if you push the
Roomba around you might get bad readings from the odometry, so you
should let it move on its own.

So why does this happen?

I opened up a Roomba and found out that the encoders (hall sensor)
have only 1 channel and a very small number of steps (before the
gearbox). This might explain the strange behavior of Roomba's
odometry. I'm guessing that the Roombas with the not-so-bad odometry
use the motor direction together with the 1 channel encoder to
calculate the odometry, depending on the firmware they might just send
the pulses as they increment.

I contacted iRobot to get more info on this matter but they would not
provide any insight on this matter since it is related to the way the
Roomba works internally, it also seems it is not possible to change
the firmware of the Roomba.

If you need help changing the roomba driver for your odometry let me
know. After you get it running you should also calibrate it.

Gonçalo Cabrita
ISR University of Coimbra
Portugal


On Wed, Nov 9, 2011 at 5:33 PM, Máté Wolfram <mate.wolfram at gmail.com> wrote:
> Hi!
>
> We just recently purchased a Roomba 555 + Turtlebot equipment and have
> been asking ourselves why the odometry is so disappointing. A quick
> measurement resulted in an error of +2 meters on a 2 meter run (!).
> Obviously, this renders the robot unable to create usable maps.
>
> Goncalo, you stated in your initial post that you encountered a
> similar problem with a couple of Roombas. Did you manage to solve it?
> Is it likely to be a production failure?
>
> kind regards,
> Máté
>
> 2010/12/5 Jenkins, Odest Chadwicke <odest_jenkins at brown.edu>:
>> I do not really think there is much difference between using the
>> Roomba and the Create.  We have used the Create and a number of
>> variations on the Roomba over the last 5 years.  Translating between
>> the two open interface descriptions is relatively simple.
>>
>> I believe the Create is a better bargain because the Roomba incurs the
>> extra cost (and weight) of a vacuum.  The 25-pin port is also nice for
>> powering onboard computing.  The additional wheel on the back of the
>> Create is useful for keeping the base steady.  All of this said, both
>> platforms have performed well for our needs.
>>
>> It is disappointing that iRobot does not sell the Create in Europe.
>>
>> I think the real question now is using the Create/Roomba versus the
>> Neato and other next gen vacuums:
>>
>>  http://www.engadget.com/2010/11/29/neato-xv-11-robot-vacuum-gets-its-very-own-open-source-lidar-hac/
>>
>> -Chad
>>
>> Date: Sat, 4 Dec 2010 11:22:15 -0800
>> From: Ken Conley <kwc at willowgarage.com>
>> Subject: Re: [ros-users] iRobot - Roomba vs Create
>> To: User discussions <ros-users at code.ros.org>
>> Message-ID:
>>       <AANLkTinxinvGvxmwXCVyL7ocar8VwEwwxFMpUSioJNgi at mail.gmail.com>
>> Content-Type: text/plain; charset=ISO-8859-1
>>
>> FYI: We're starting an effort here at WG to use Creates.  We didn't
>> benchmark against the Roombas, and perhaps some of those will end up
>> in our arsenal as well.  Also, we've noticed Gon?alo's great
>> documentation coming online, so we hope we can build on each other's
>> efforts.  We're using it to integrate some of our main libraries
>> (navigation, OpenCV, PCL) into a low-cost platform.  We've already
>> posted our Kinect + Create tutorial, which is part of this effort.
>>
>> One main difference between the Creates and the 500 series is (IIRC)
>> that you can't read the raw encoder counts off the Create. The Open
>> Interface for the Create only goes up to Packet 42. The 500 Open
>> Interface adds Packets 43-58, which include encoders, light bumper,
>> motor currents, and stasis caster. I assume this means the odometry
>> with the Create will be worse, but, like Gon?alo, I don't have
>> experience with both.
>>
>> Our driver right now is in Python and uses Damon Kohler's PyRobot,
>> plus bits and pieces for other ROS drivers.  The stack is still a work
>> in progress and will move soon, but for now you can find it here:
>> https://code.ros.org/svn/ros-pkg/branches/trunk_cturtle/stacks/create_robot/
>>
>>  - Ken
>>
>> 2010/12/4 Gon?alo Cabrita <goncabrita at gmail.com>:
>>> Hi Alex,
>>> Hope you don't mind I started a new thread for this.
>>>
>>> Buying the Roomba instead of the Create was not an option for us. At first
>>> we were aiming for the Create since it was designed having research in mind,
>>> but the Portuguese iRobot reseller told us we could only acquire the Create
>>> on the United States. So we got a sweet deal on a bunch of Roombas instead.
>>> Let it be clear that I never worked with a Create in my life, so I cannot
>>> make a comparison between both robots.
>>> When we first got the Roombas we had some trouble with the odometry... ok a
>>> lot of trouble! The Roombas have very poor encoders, single channel, 4
>>> pulses per motor shaft turn (I believe direction is determined from the
>>> motor speed, I don't think you can even call this an encoder). Also,
>>> initially we were getting distance travelled and amount turned from the
>>> robot, which resets after each read, so at the speed we were polling the
>>> Roomba (10Hz) and due to the low resolution on these values (1 degree for
>>> the angle for example), we were getting really bad odometry readings. Later
>>> we decided to poll the encoder counts instead, which greatly improved our
>>> odometry (this is how the roomba_500_series package works) however we bumped
>>> into another problem. Usually encoder counts increase as the wheel moves
>>> forward and decrease as the wheel moves backwards. However on some Roombas
>>> encoder counts only increase. You can still make a quick fix using the motor
>>> speeds as an indicator of the wheel direction, but the odometry on these
>>> robots is far worse. Now that i think of it, this should go into the
>>> roomba_500_series troubleshoot section! We recently got a batch of 555, non
>>> of them seem to have this problem. However some of the 530 and 560 we have
>>> suffer from the "crappy" encoder problem.
>>> Globally the Roomba is a very robust platform, it can take a lot of beating.
>>> It also brings a nice package of sensors and actuators. iRobot 's
>>> documentation on the communication protocol is very good, you get access to
>>> pretty much everything the Roomba has. The docking station is very cool, we
>>> love it. The battery usually holds for 2-3 hours pumping juice to the Roomba
>>> and an Hokuyo laser. We run it with the ROS navigation_stack and it moves
>>> without problems
>>> Finally I guess for the money we spent we couldn't expect better, the value
>>> for money is great, specially for us, we have a lot of Roombas for swarm and
>>> multi-robot experiments. You can't compare it to a robot designed
>>> specifically for research though.
>>> Now I guess people who are using the Create could give their opinion on this
>>> matter :)
>>> Hope this helps!
>>> Gon?alo Cabrita
>>> ISR - University of Coimbra
>>> Portugal
>>> On Dec 4, 2010, at 6:01 PM, Alex Bravo wrote:
>>>
>>> Goncalo,
>>>
>>> I've been looking at the package you created for Roomba
>>> 560?http://www.ros.org/wiki/roomba_500_series
>>> and I just wanted to say thank you for such an excellent job!
>>>
>>> We are considering purchase of iRobot and wondering if extra expense of
>>> Roomba 535/560/570 is worth it compared to iRobot Create. We also see that,
>>> say Brown University still uses iRobot Create.
>>>
>>> Considering your experience (if I remeber correctly, you were mentioning
>>> those robots a year ago), what are you thoughts on the
>>> advantages/disadvantages between those models?
>>>
>>> Thank you,
>>> Alex Bravo
>>>
>> _______________________________________________
>> ros-users mailing list
>> ros-users at code.ros.org
>> https://code.ros.org/mailman/listinfo/ros-users
>>
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users
>



More information about the ros-users mailing list