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

Odometry Information Source

asked 2012-01-24 00:14:35 -0600

Cav gravatar image

updated 2016-10-24 08:59:39 -0600

ngrennan gravatar image


I'm trying to generate odometry information following this tutorial. I am using a robot like this one - build with phidgets and with a Kinect mounted.

My problem is that I don't have a speed-source for the robot. It does not have a stepper motor or encoder and the actual speed depends on many factors (laptop weight, floor type, battery state, ...). Seems like this is my best shot for now (Obtaining nav_msgs/Odometry from a laser_scan (eg. with laser_scan_matcher)). Is vslam worth trying with kinect? Is there any other possibility? Am I missing something?

Edit: it's quite pointless. I can say that the robot moves with fixed speed x and it kind of works but the next issue is the yaw angle - I don't have a gyro and laser_scan_matcher estimations are not very accurate.

For me it means: gmapping won't work without a good odometry source.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2012-01-24 00:48:40 -0600

DimitriProsser gravatar image

I believe that this is what you're looking for. You can then use laser_scan_matcher to compute odometry information.

edit flag offensive delete link more


This is what was in the answer I mentioned (Obtaining nav_msgs/Odometry from a laser_scan), too, but in order to make it work I would have to modify laser_scan_matcher pkg, if I understood it correctly. Is there no other option? FYI I am quite new to ROS :)
Cav gravatar image Cav  ( 2012-01-24 02:10:27 -0600 )edit
Why would you have to modify laser_scan_matcher?
DimitriProsser gravatar image DimitriProsser  ( 2012-01-24 02:16:15 -0600 )edit
Why do you need the velocity information specifically? Usually the velocity information is integrated to help inform the position. The laser scan matching goes directly to positional which is usually what you care about.
tfoote gravatar image tfoote  ( 2012-01-24 03:50:56 -0600 )edit
@DimitriProsser: laser_scan_matcher is publishing the information as geometry_msgs/Pose2D so I would have to modify it to obtain the needed nav_msgs/Odometry and publish it to the odom topic, right?
Cav gravatar image Cav  ( 2012-01-25 20:15:58 -0600 )edit
@tfoote: I was following the Odom-tutorial and using the code from it - I need the vx, vy, vth to compute the odometry. laser_scan_matcher is giving me the position already but to be able to publish nav_msgs/Odometry I still need the speed.
Cav gravatar image Cav  ( 2012-01-25 20:17:28 -0600 )edit

The scan matcher algorithm is inherently discrete. Whatever you do you will need to therefore differentiate the signal. Thus you could simply write a node which computes the velocity based on the sequence of pose messages. Then you don't have to modify the node.

tfoote gravatar image tfoote  ( 2012-02-22 19:57:57 -0600 )edit

yes but in my case it does not work too good (movement in a corridor is not being recognized with laser_scan_matcher only). if anyone is interested, tom did some modifications already, links are here:

Cav gravatar image Cav  ( 2012-02-22 22:12:36 -0600 )edit

If you still need it we have a node to transform several kind of messages to odometry In this case would be "pose2d_to_odom"

martimorta gravatar image martimorta  ( 2012-07-31 21:34:48 -0600 )edit

Question Tools

1 follower


Asked: 2012-01-24 00:14:35 -0600

Seen: 2,060 times

Last updated: Feb 21 '12