9#include <gtsam_points/types/offloadable.hpp>
10#include <gtsam_points/types/gaussian_voxelmap.hpp>
15namespace gtsam_points {
31 Eigen::Vector3i first;
40 using Ptr = std::shared_ptr<GaussianVoxelMapGPU>;
41 using ConstPtr = std::shared_ptr<const GaussianVoxelMapGPU>;
54 int max_bucket_scan_count = 10,
56 CUstream_st* stream = 0);
76 static GaussianVoxelMapGPU::Ptr
load(
const std::string& path);
85 void create_bucket_table(CUstream_st* stream,
const PointCloud& frame);
110std::vector<VoxelBucket> download_buckets(
const GaussianVoxelMapGPU& voxelmap, CUstream_st* stream =
nullptr);
111std::vector<int> download_voxel_num_points(
const GaussianVoxelMapGPU& voxelmap, CUstream_st* stream =
nullptr);
112std::vector<Eigen::Vector3f> download_voxel_means(
const GaussianVoxelMapGPU& voxelmap, CUstream_st* stream =
nullptr);
113std::vector<Eigen::Matrix3f> download_voxel_covs(
const GaussianVoxelMapGPU& voxelmap, CUstream_st* stream =
nullptr);
114std::vector<float> download_voxel_intensities(
const GaussianVoxelMapGPU& vm, CUstream_st* stream =
nullptr);
Gaussian distribution voxelmap on GPU.
Definition gaussian_voxelmap_gpu.hpp:38
VoxelMapInfo * voxelmap_info_ptr
Voxelmap information on GPU memory.
Definition gaussian_voxelmap_gpu.hpp:93
VoxelBucket * buckets
Voxel buckets for hashing.
Definition gaussian_voxelmap_gpu.hpp:95
bool offload_gpu(CUstream_st *stream=0) override
Offload data from GPU to CPU.
GaussianVoxelMapGPU(float resolution, int init_num_buckets=8192 *2, int max_bucket_scan_count=10, double target_points_drop_rate=1e-3, CUstream_st *stream=0)
const int init_num_buckets
Initial number of buckets.
Definition gaussian_voxelmap_gpu.hpp:90
bool reload_gpu(CUstream_st *stream=0) override
Reload data from CPU to GPU.
size_t memory_usage_gpu() const override
Memory usage in bytes on the GPU.
const double target_points_drop_rate
Allowable points drop rate.
Definition gaussian_voxelmap_gpu.hpp:91
virtual void insert(const PointCloud &frame) override
std::vector< int > offloaded_num_points
Offloaded number of points.
Definition gaussian_voxelmap_gpu.hpp:105
VoxelMapInfo voxelmap_info
Voxelmap information.
Definition gaussian_voxelmap_gpu.hpp:92
void save_compact(const std::string &path) const override
Save the voxelmap.
Eigen::Vector3f * voxel_means
Voxel means.
Definition gaussian_voxelmap_gpu.hpp:99
float * voxel_intensities
Voxel intentisities.
Definition gaussian_voxelmap_gpu.hpp:101
bool loaded_on_gpu() const override
Check if the data is loaded on the GPU.
static GaussianVoxelMapGPU::Ptr load(const std::string &path)
Load a voxelmap from a file.
std::vector< VoxelBucket > offloaded_buckets
Offloaded buckets.
Definition gaussian_voxelmap_gpu.hpp:104
std::vector< Eigen::Matrix3f > offloaded_voxel_covs
Offloaded voxel covariances.
Definition gaussian_voxelmap_gpu.hpp:107
std::vector< Eigen::Vector3f > offloaded_voxel_means
Offloaded voxel means.
Definition gaussian_voxelmap_gpu.hpp:106
virtual double voxel_resolution() const override
Voxel resolution.
Definition gaussian_voxelmap_gpu.hpp:60
Eigen::Matrix3f * voxel_covs
Voxel covariances.
Definition gaussian_voxelmap_gpu.hpp:100
int * num_points
Number of points in eac voxel.
Definition gaussian_voxelmap_gpu.hpp:98
Gaussian distribution voxelmap.
Definition gaussian_voxelmap.hpp:16
An interface class for offloading data from GPU to CPU.
Definition offloadable.hpp:19
Standard point cloud class that holds only pointers to point attributes.
Definition point_cloud.hpp:19
Voxel bucket (avoid using thrust::pair for CUDA compatibility)
Definition gaussian_voxelmap_gpu.hpp:30
Voxel hashmap information.
Definition gaussian_voxelmap_gpu.hpp:20
int num_voxels
Number of voxels.
Definition gaussian_voxelmap_gpu.hpp:21
int num_buckets
Number of buckets.
Definition gaussian_voxelmap_gpu.hpp:22
int max_bucket_scan_count
Maximum bucket search count.
Definition gaussian_voxelmap_gpu.hpp:23
float voxel_resolution
Voxel resolution.
Definition gaussian_voxelmap_gpu.hpp:24