Skip to content

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

@vwvw

Description

@vwvw

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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions