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!
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!
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.
Asked: Sep 22 '11
Seen: 219 times
Last updated: Sep 23 '11
ROS Answers is licensed under Creative Commons Attribution 3.0 Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.
@rimesime So just out of curiosity, were you able to create a good-enough map only without adding extra sensors?
IsaacSaito (Apr 18)edit