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

Creating a 3D map with Velodyne data

asked 2016-09-06 12:23:12 -0600

JohnMMeyer gravatar image

Hello, I am very new to ROS so excuse my simplicity. I have Velodyne Puck point cloud data that I would like to use to create a 3D map. My issue was that I was moving the puck as I collected the data and I have no odometer data. Would I use a ICP program? And if so any recommendations? I saw that Willow Garage has one, I assume that it is a good package.

Thank you so much. John

edit retag flag offensive close merge delete


Hi did you get any solution for that, I am trying the same with velodyne data. I want to create an 3D point cloud with velodyne data, i also use blam but its speed is slow so i am searching for better option,did you have any suggestion on that?? thank you

Nikka gravatar image Nikka  ( 2016-12-27 00:31:39 -0600 )edit

Hello Nikka, Sorry for the late response, I was away for the holidays. I have been trying to use BLAM, I am not getting good results at all. The successive point clouds are not registering properly. I am going to try and adjust the number of iterations that ICP algorithm takes, hope that will help.

JohnMMeyer gravatar image JohnMMeyer  ( 2017-01-04 14:12:16 -0600 )edit

Hello Kailegh, Have you found something that worked better than BLAM! ? John

JohnMMeyer gravatar image JohnMMeyer  ( 2017-03-24 09:41:08 -0600 )edit

I think Google Cartographer has gotten really impressive results

vkee gravatar image vkee  ( 2017-06-28 02:20:22 -0600 )edit

2 Answers

Sort by ┬╗ oldest newest most voted

answered 2016-09-08 01:04:56 -0600

Shay gravatar image

I saw someone use B(erkeley) L(ocalization) A(nd) M(apping), you can try BLAM.

BLAM! is an open-source software package for LiDAR-based real-time 3D localization and mapping. BLAM! is developed by Erik Nelson from the Berkeley AI Research Laboratory (BAIR).

edit flag offensive delete link more


i ve tried it recently, it works but not too accuaretly, i have had some issus, looop closere works a bit bad in my opinion, maybe works welll in close places, but in open and at a reasonible speed is not the better thing i have tried

Kailegh gravatar image Kailegh  ( 2016-09-16 05:05:43 -0600 )edit

Thanks for the input. I have been making some progress. What I need to do at this point is extract the pcap format packets out of the bag file. I am looking around, I will see if I can find a way to do that.

JohnMMeyer gravatar image JohnMMeyer  ( 2016-09-16 17:57:11 -0600 )edit

that is the easiest part man, use velodyne driver, roslaunch velodyne_pointcloud VLP16_points.launch pcap:=PCAP_PATH if you make progress in the 3D map please let me know, I am interesting in testing different methods

Kailegh gravatar image Kailegh  ( 2016-09-20 02:28:37 -0600 )edit

Hello Kailegh, I got sifdetracked but I am back. I have made some progress, I got BLAM! installed (not trivial) and it is working pretty good now. I am trying to select and export a group of points in RVIZ that were created by BLAM! so that is where I am at right now. Have you had any luck?

JohnMMeyer gravatar image JohnMMeyer  ( 2017-03-22 18:05:37 -0600 )edit

i tested blam I did not like the results, I got too many erros from it, odometry was not trustful

Kailegh gravatar image Kailegh  ( 2017-03-24 06:24:09 -0600 )edit

answered 2017-04-04 17:29:25 -0600

M@t gravatar image

updated 2020-04-30 17:42:15 -0600

For anyone reading this at a later date (like me) there are a few other mapping options currently available:


If you want to map your environment and you need a 3D map, you're often wanting to localize your laser scanner or robot at the same time - i.e. Simultaneous Localization and Mapping (SLAM) Below are some ROS-compatible options.

  • Google Cartographer Google very recently released this 2D/3D SLAM package that will take laser and/or point cloud data and give you an occupancy map. You can find ROS integration here and Github code here. Not sure how they represent the map internally. Cartographer includes loop-closure.
  • Berkley Localization and Mapping (BLAM) is another 3D LiDAR SLAM package. This doesn't have any papers on it that I am aware of, and it isn't being maintained (last commit was over two years ago). This uses the open-source and ROS-compatible Point Cloud Library for some of it's processing. Also does loop-closure
  • Laser Odometry and Mapping (LOAM) is another 3D LiDAR SLAM package written by a PhD student. The source code is old and outdated because the student went on to commercialize their code with the company Kaarta. You can find a (somewhat) working version of the LOAM source code here. Does not perform any loop closure, so it's long-term use is quite limited.
  • hector_slam/hector_mapping gives you LiDAR-based SLAM for systems with poor/no odometry (may suit you since you don't have wheel encoders). Also outputs an occupancy map. From memory I think this uses an elevation map (someone correct me If I'm wrong)
  • rtabmap This is a Graph-based SLAM package that's evolved quite a bit over the years. It has a ROS-wrapper but can also operate as a stand-alone package. See the external website here for full details.

Of these options, I've played with Cartographer, BLAM and LOAM. Cartographer is quite hard to setup, tune and use. BLAM and LOAM are no longer maintained so I wouldn't recommend them now. Rtabmap seems to received a lot of attention and use recently so I'd start with that.

Mapping only

There are some packages that don't do SLAM and are only used for pure mapping (i.e. you'll have to use something else to localize the laser scanner or robot)

  • Libpointmatcher While not strictly part of the ROS ecosystem, you can export clouds to a format LPM can then read. LPM is developed and maintained by a group working out of ETH Zurich. The developers have produced a decent number of papers on LPM, so you can get a good idea of what it is capable of by reading those (start with papers by Fran├žois Pomerleau).
  • Point Cloud Library PCL is not a mapping program. It is a collection of libraries for point cloud processing. But it includes many functions for positioning and registering (matching) LiDAR scans. PCL works well with ROS (it started life as a ROS library IIRC) and ...
edit flag offensive delete link more


Which system has given you the best performance?

vkee gravatar image vkee  ( 2017-06-27 04:53:25 -0600 )edit

@vkee I'm currently trying to implement Cartographer, but my LiDAR unit is giving me grief so I haven't been able to collect any data yet. Your best option may be to read the papers associated with each package and use that as an indication.

M@t gravatar image M@t  ( 2017-06-27 23:44:39 -0600 )edit

@M@t There are many datasets Google released with Cartographer ( http://google-cartographer-ros.readth... ) so you could use those to test it. I am looking into adding odometry info into Cartographer.

vkee gravatar image vkee  ( 2017-06-28 02:14:31 -0600 )edit

Isn't RTAB a SLAM mapping technique according to their website?

Stigma gravatar image Stigma  ( 2020-04-30 16:39:42 -0600 )edit

Looks like the developers have updated it quite a bit since I last looked at it. Moved it to the SLAM section. Thanks for picking up on that Stigma.

M@t gravatar image M@t  ( 2020-04-30 17:33:18 -0600 )edit

@M@t I am trying to localize a robot.

The prior used for localization is osm map with waypoints (or nodes) and line segments connecting them ( or edges). This information is extracted from the map.

For correction part of localization I have 3d point cloud from lidar data.

Currently I am just working on 5 seconds of initial data from rosbag containing the point cloud information. ( I am using ROS melodic)

I fit a model to the ground plane using Ransac.

I need to detect waypoints and line segments connecting the waypoints(edges) from the point cloud now.

If you have any idea on how I should approach the problem or if you know of any resources (or papers) I can look into, please let me know.

Thank you.

santK gravatar image santK  ( 2021-12-03 10:17:23 -0600 )edit

Hi @santK, the comments section really isn't a good place to ask questions. You should create a new question thread, following the posting guidelines, and that way more people can see your question and help you.

M@t gravatar image M@t  ( 2022-02-28 19:17:33 -0600 )edit

Question Tools



Asked: 2016-09-06 12:23:12 -0600

Seen: 10,721 times

Last updated: Apr 30 '20