ethz-asl / wavemap

Fast, efficient and accurate multi-resolution, multi-sensor 3D occupancy mapping
https://ethz-asl.github.io/wavemap/
BSD 3-Clause "New" or "Revised" License
457 stars 41 forks source link

Multiresolution scan integration #45

Closed astumpf closed 1 year ago

astumpf commented 1 year ago

Context Currently, wavemap is updated with a fixed min cell size.

Requested feature Scan integration with multiple resolutions depending on the distance of the endpoints. The goal would be to use CPU resources for near field integration while saving on long distance updates as these are less informative and generally less dense/accurate.

(Optional) Suggest a solution Maybe just handle the max tree height for the integrator dynamically?

Additional context

victorreijgwart commented 1 year ago

Hi @astumpf,

To be sure there's no misunderstanding, the settings specify a min_cell_width, but wavemap does not update the map at this fixed maximum resolution everywhere. The update resolution is adapted based on the state of the map and an estimate of the measurement update's worst-case approximation error. I recommend checking our RSS paper for a complete explanation of how this is done. The worst-case error computation for the continuous_beam model, for example, is implemented here.

For LiDAR sensors, however, the (laser) beams are sharp and only very slowly smooth out with range. So unless you use a small min_cell_width (< 5cm) and/or use a high max_range, the resolution will be close to the chosen min_cell_width throughout the entire LiDAR frustum.

If you want to drop the update resolution as the distance to the sensor increases and don't mind losing the guarantee that the update error stays below a threshold, the easiest way to achieve this is probably to modify the return values from ContinuousBeam::computeWorstCaseApproximationError(...). For example, by dividing them by cell_to_sensor_distance.

astumpf commented 1 year ago

Ok, thanks for your comprehensive feedback. I will check the details.

victorreijgwart commented 1 year ago

I'll close this issue assuming it's resolved. Feel free to reopen it if/when you have more questions.