Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Real-time performance for LiDAR use and multiresolution map #277

Closed
vwvw opened this issue Jan 16, 2020 · 2 comments
Closed

Real-time performance for LiDAR use and multiresolution map #277

vwvw opened this issue Jan 16, 2020 · 2 comments
Labels

Comments

@vwvw
Copy link

vwvw commented Jan 16, 2020

I'm looking into OctoMap to create a live map from LiDAR data. My current test consist of creating a OctoTree from a 650'000-points pointcloud. The pointcloud represent an outdoor space that can be contained in a bounding box of 80m x 45m x 15m.

Creating the OctoTree takes a non-negligible amount of time depending on the resolution.

  • Around 40s at a 0.03m resolution
  • Less than a second at a 1m resolution

It seems to be a bit longer than the data reported in the paper concerning the Uni Freiburg Campus map which has similar dimension.

My concerns arise with subsequent update where we add a new pointcloud to the map. Adding 10'000 new points to the map takes around 1s which mean an update time of around 0.1ms per point. This is obviously not sufficient for real-time use with a LiDAR device which usually output > 200'000 points/s.

I looked at the parralelism and as in #243, I did not get a significant speedup. I'll keep an eye on #257 in the following days.

My project reside around a robot which doesn't move a lot. I was therefore contemplating using different resolution for different part of the map. For example, the immediate 10m sphere around my robot could have a resolution of 0.01m while the space further than 30m could have a lower (e.g.g 0.5m) resolution.

If I understand the website correctly, OctoMap should be able to support this.

The map is multi-resolution so that, for instance, a high-level planner is able to use a coarse map, while a local planner may operate using a fine resolution.

I however didn't find anywhere in the code or documentation that described how I could assign a different max_depth or resolution to different part of the map.

I tried to manually expand nodes to get a lower resolution but didn't manage to make it works. Either the node was a tree leaf and therefore the expansion was no possible or the whole graph took the smaller resolution.

Can OctoMap handle my use-case? If yes, pointing to some documentation explaining how it could be done would be greatly appreciated!

Thanks anyway for the great open-source software!

@vwvw vwvw changed the title Real-time performance for LiDAR use Real-time performance for LiDAR use and multiresolution map Jan 16, 2020
@ahornung
Copy link
Member

I however didn't find anywhere in the code or documentation that described how I could assign a different max_depth or resolution to different part of the map.
That multi-resolution property is only available during query-time, so you can e.g. limit the maximum depth of the iterators.

There's no multi-resolution property during creation time implemented right now, though it should be possible to add. You could also think of simply maintaining different OcTrees in parallel, with different resolutions and maximum ranges (bonus: they can be safely parallelized).

With large point clouds like that you can probably expect the biggest gain from sub-sampling the input clouds, e.g. with a voxel grid filter.

@vwvw
Copy link
Author

vwvw commented Jan 21, 2020

Great! We finally also though of handling multiple Octree separately! It comes with the challenge of handling the resolution change when the robot is moving but otherwise fulfill our expectation.

I'll look into the voxel grid filter.

Thanks for the feedback and the great project!

@vwvw vwvw closed this as completed Jan 21, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants