SteveMacenski / spatio_temporal_voxel_layer

A new voxel layer leveraging modern 3D graphics tools to modernize navigation environmental representations
http://wiki.ros.org/spatio_temporal_voxel_layer
GNU Lesser General Public License v2.1
620 stars 184 forks source link

depth offset parameter? #234

Open tomy983 opened 2 years ago

tomy983 commented 2 years ago

Hi, I was wondering if there is a way to offset the depth voxels. I have a robot where the depth cloud actually corresponds to what I measure, but the voxels are closer and this way the costmap (resolution 0.04) will show presence of obstacle about 0.1m closer than they actually are.

rgbd_obstacle_layer:
  enabled:                  true
  voxel_decay:              1    # seconds if linear, e^n if exponential
  decay_model:              -1     # 0=linear, 1=exponential, -1=persistent
  voxel_size:               0.04  # meters
  track_unknown_space:      true  # default space is known
  observation_persistence:  0.0 
  max_obstacle_height:      0.4   # meters
  unknown_threshold:        15    # voxel height
  mark_threshold:           0     # voxel height
  update_footprint_enabled: true
  combination_method:       1     # 1=max, 0=override
  obstacle_range:           2.5   # meters
  origin_z:                 0.0   # meters
  publish_voxel_map:        true # default off
  transform_tolerance:      0.3   # seconds
  mapping_mode:             false # default off, saves map not for navigation
  map_save_duration:        60    # default 60s, how often to autosave
  observation_sources:      rgbd1_mark rgbd1_clear
  rgbd1_mark:
    data_type: PointCloud2
    topic: /camera/depth/color/points
    marking: true
    clearing: false
    min_obstacle_height: 0.06     # default 0, meters
    max_obstacle_height: 0.4     # default 3, meters
    expected_update_rate: 0.0    # default 0, if not updating at this rate at least, remove from buffer
    observation_persistence: 0.0 # default 0, use all measurements taken during now-value, 0=latest
    inf_is_valid: false          # default false, for laser scans
    filter: "passthrough"        # default passthrough, apply "voxel", "passthrough", or no filter to sensor data, recommend on
    voxel_min_points: 2          # default 0, minimum points per voxel for voxel filter
    clear_after_reading: false    # default false, clear the buffer after the layer gets readings from it
  rgbd1_clear:
    data_type: PointCloud2
    topic: /camera/depth/color/points
    marking: false
    clearing: true
    max_z: 6.0                  # default 0, meters
    min_z: 0.0                  # default 10, meters
    vertical_fov_angle: 1
    horizontal_fov_angle: 1.5
    decay_acceleration: 15.0    # default 0, 1/s^2. If laser scanner MUST be 0
    model_type: 0                # default 0, model type for frustum. 0=depth camera, 1=3d lidar like VLP16 or similar

Immagine 2022-07-10 162029 Immagine 2022-07-10 162111 Immagine 2022-07-10 162138 ` Lowering the resolution for both stvl and local costmap solved the problem, so it probably is just the size of the grid that matters. But unfotunately my raspberry pi is already pushing hard and lowering the resolution creates too much lag. Is there a way to add an offset to the depth? Something like a negative inflation? Thank you