0
$\begingroup$

Rosanswers logo

Hello,

I have a roomba 531 and a kinect. I would like to use the navigation stack to build a map and navigate in that map afterwards.

I am currently using the roomba560_node to drive my robot. In the TurtleBot tutorials the turtlebot_node is used which publishes imu data. The roomba560_node, as I understand, does not. Does the roomba 531 have an imu, and is it supported somewhere?

I tried to build a map without using robot_pose_ekf, only using the odom from roomba560_node. I had to publish a static transform odom->base_link. But the map was not usable at all. Do I require an imu to build a map?

Am I missing important components?

Many thanks in advance!


Originally posted by rimesime on ROS Answers with karma: 11 on 2011-09-22

Post score: 1


Original comments

Comment by rimesime on 2011-09-25:
It seems i misunderstood the configuration needed for the nav stack to run. For a correct localization with odometry data, the relation between odom and base_footprint has to be published properly. Now I subscribe to odometry msgs and publish a tf between both frames with x,y,th from these msgs.

Comment by 130s on 2012-04-18:
@rimesime So just out of curiosity, were you able to create a good-enough map only without adding extra sensors?

$\endgroup$

2 Answers 2

0
$\begingroup$

Rosanswers logo

The Roomba 531 does not have an IMU inside.

You can calibrate the Roomba to improve your odometry. You'll find a define for ROOMBA_PULSES_TO_M in the OpenInterface.h file inside the include folder in the roomba_500_series pkg. You can also tweak ROOMBA_AXLE_LENGTH on the same file which will also influence your odometry.

Still your odometry would greatly improve should you purchase an IMU. As noted earlier the IMU used by the Create cannot be directly connected to the Roomba, you would need to use something like an Arduino to read the values and send them to the host computer. This would also mean a pkg should be created to receive the data in ROS.

Hope this helps!


Originally posted by Gonçalo Cabrita with karma: 591 on 2011-09-22

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by Gonçalo Cabrita on 2011-11-07:
I guess using any gyro would help, I don't see any reason for an android device with a gyro not to work, however I'm guessing with all the work involved it would be easier to purchase a analog or I2C/SPI gyro and connect it to an Arduino.

Comment by rimesime on 2011-09-23:
Could I use an android device (for example galaxy s2) attached to the roomba to publish its gyroscope data? Would that be sufficient to actually improve odometry?

$\endgroup$
0
$\begingroup$

Rosanswers logo

The turtlebot uses an external IMU (really its just a gyro), described here. It's used to help correct for rotational errors in the Create's odometry (which are quite bad). So that really depends on how poor the 531's rotational component of its odometry is. You should be able to characterize the error by marking a known position on the floor and commanding your roomba to start and end at that marking through the cmd_vel topic and observing on the odom topic where the roomba thinks it is.

The Create has an ADC onboard to convert the analog signal from the ADXRS613 rate gyro (IMU) used on the turtlebot into a digital signal read from inside the turtlebot_node driver. I'm assuming that the 531 does not have an ADC, so you'd need to buy an off the shelf IMU instead of going through an ADC with a ADXRS613 (unless you felt ambitious and had a arduino handy). Once you had something publishing imu data, you'd then use robot_pose_ekf much in the same way that turtelbot does.


Originally posted by JeffRousseau with karma: 1607 on 2011-09-22

This answer was NOT ACCEPTED on the original site

Post score: 1

$\endgroup$

Your Answer

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