ethz-asl / voxblox

A library for flexible voxel-based mapping, mainly focusing on truncated and Euclidean signed distance fields.
BSD 3-Clause "New" or "Revised" License
1.38k stars 358 forks source link

Using Voxblox in planners that do not support ESDF #181

Open dario-ljubic opened 6 years ago

dario-ljubic commented 6 years ago

Hello, first of all, thank you on making this excellent code public!

I am currently experimenting with the Voxblox and looking into its possibilities. The recent change on the possibility of local scene reconstruction looks and works great. Now, I would also like to use it in my planner, but it does not operate with ESDF. I have tried taking surface point cloud from TSDF and using point cloud to laser scan converter which is able to create a 2D-like scan that I can use in my planner.

However, with the frequency of ~10 Hz, it is too slow. I was wondering do You maybe have an advice on what is the best way to convert TSDF/ESDF to laser scan or to obtain something like laser scan?

Thank You in advance!

ZacharyTaylor commented 6 years ago

Thanks for the interest in the code. If "publish_tsdf_info" is set to true, then voxblox should output the surface pointcloud whenever the TSDF changes.

So if you are only seeing output at 10 Hz there are four possibilities

For getting a laser like output your best options are either the surface pointcloud or the mesh_pcl topic. Why are you not just directly using the lidar output, is voxblox needed to denoise or downsample the data?

dario-ljubic commented 6 years ago

Thank You for the reply!

Whenever I enable "publish_tsdf_info" it slows down everything quite a bit. Following your advices I have found out that the "voxel_size" was the problem. Now, combining "voxel_size" and "max_block_distance_from_body" I get the frequency above 15 Hz.

Yes, that was the idea - to denoise and downsample data and to have a good reconstruction quality on the way. Also, I have seen the "mesh_pcl" topic you mentioned, but when I try to find "output_mesh_as_pcl_mesh" I only find it in readme files.