optimal voxel layer

This commit is contained in:
2026-07-23 11:18:04 +07:00
parent 03b13f6936
commit 28a32ee67c
2 changed files with 85 additions and 1 deletions

View File

@@ -102,15 +102,31 @@ private:
bool clearVoxelRay(double ox, double oy, double oz, double wx, double wy, double wz,
double raytrace_range, unsigned int cell_raytrace_range,
double* min_x, double* min_y, double* max_x, double* max_y);
/// Frees LETHAL cells this layer marked that have not been re-marked within
/// obstacle_decay_time. Handles ghost cells frustum clearing can never
/// reach: cells that left the camera FOV, occlusion shadows, and cells
/// inside the skip band in front of a measured surface.
void decayStaleObstacles(double now_sec, double* min_x, double* min_y,
double* max_x, double* max_y);
bool publish_voxel_;
robot_voxel_grid::VoxelGrid robot_voxel_grid_;
double z_resolution_, origin_z_;
unsigned int unknown_threshold_, mark_threshold_, size_z_;
/// Seconds a marked cell survives without being re-observed before it is
/// freed. <= 0 disables decay (default). Only enable on camera-only
/// costmaps: decay clears obstacles the sensor cannot currently see.
double obstacle_decay_time_{0.0};
/// Clearing rays stop this far [m] before the measured surface. < 0 keeps
/// the legacy 2 * resolution behaviour.
double frustum_skip_distance_{-1.0};
/// Per-cell robot::Time seconds of the last marking; 0 = no valid stamp.
std::vector<double> cell_last_marked_;
robot_sensor_msgs::PointCloud clearing_endpoints_;
std::vector<unsigned char> rolling_costmap_scratch_;
std::vector<unsigned int> rolling_voxel_scratch_;
std::vector<double> rolling_stamp_scratch_;
struct DepthRay
{