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

2D mapping

asked 2013-03-27 08:01:21 -0500

beto.leonardo gravatar image

Is there a way (or any example) to build a 2D map from Laser sensor and odometry_msgs without using SLAM? I have found only SLAM references.

Thank you

edit retag flag offensive close merge delete


SLAM stands for Simultaneous Localization and Mapping. What do you want that is different?

joq gravatar image joq  ( 2013-03-27 17:19:34 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2013-03-27 17:25:57 -0500

I believe octomap_server may do what you're looking for. This package does not try to do the localization portion of SLAM -- it only builds maps based on incoming scan data.

  • Octomap_server requires you to publish a tf transform between the static world frame and your sensor frame. So, you might need to write a node to re-publish your odometry messages as tf transforms, if you really only have raw odometry messages.

  • You may also need to create a node to convert raw laser_scan data into 3D point_cloud data for octomap_server. The laser_pipeline package provides some good tutorials on how to do this. In particular, the scan_to_cloud_filter_chain node may provide what you need out-of-the-box.

Once running, octomap_server should build a 3D map from the laser scan data. If you only want 2D maps, you can pull those out using the projected_map topic.

Keep in mind that raw odometry data (e.g. from wheel encoders or IMUs) often has a tendency to drift or slip over time. That's why many mapping solutions use SLAM to correct for errors in the raw odometry data during the mapping process. However, if you have a good source of odometry data, then full SLAM may be overkill and the octomap_server may be just what you're looking for!

edit flag offensive delete link more

Question Tools


Asked: 2013-03-27 08:01:21 -0500

Seen: 1,440 times

Last updated: Mar 27 '13