42 #include <pcl/gpu/containers/device_array.h>
44 #include <pcl/point_cloud.h>
48 #include <pcl/gpu/kinfu_large_scale/tsdf_buffer.h>
50 #include <pcl/gpu/kinfu_large_scale/point_intensity.h>
65 using Ptr = shared_ptr<TsdfVolume>;
82 volume_element_size (sizeof(float)),
83 weights_element_size (sizeof(short))
86 Header (
const Eigen::Vector3i &res,
const Eigen::Vector3f &size)
89 volume_element_size (sizeof(float)),
90 weights_element_size (sizeof(short))
95 getVolumeSize ()
const {
return resolution[0] * resolution[1] * resolution[2]; };
97 friend inline std::ostream&
100 os <<
"(resolution = " << h.
resolution.transpose() <<
", volume size = " << h.
volume_size.transpose() <<
")";
109 enum { DEFAULT_CLOUD_BUFFER_SIZE = 10 * 1000 * 1000 };
114 TsdfVolume (
const Eigen::Vector3i& resolution);
120 setSize (
const Eigen::Vector3f& size);
133 const Eigen::Vector3f&
137 const Eigen::Vector3i&
138 getResolution()
const;
141 const Eigen::Vector3f
142 getVoxelSize ()
const;
146 getTsdfTruncDist ()
const;
211 downloadTsdf (std::vector<float>& tsdf)
const;
215 downloadTsdfLocal ()
const;
222 downloadTsdfAndWeights (std::vector<float>& tsdf, std::vector<short>& weights)
const;
226 downloadTsdfAndWeightsLocal ()
const;
231 void print_warn(
const char* arg1, std::size_t size);
235 setHeader (
const Eigen::Vector3i& resolution,
const Eigen::Vector3f& volume_size) {
236 header_ =
Header (resolution, volume_size);
237 if (volume_host_->size() != this->size())
238 pcl::console::print_warn (
"[TSDFVolume::setHeader] Header volume size (%d) doesn't fit underlying data size (%d)", volume_host_->size(), size());
244 return header_.getVolumeSize ();
253 const unsigned step = 2)
const;
256 inline const Eigen::Vector3i &
261 save (
const std::string &filename =
"tsdf_volume.dat",
bool binary =
true)
const;
265 load (
const std::string &filename,
bool binary =
true);
269 Eigen::Vector3f size_;
272 Eigen::Vector3i resolution_;
281 using VolumePtr = shared_ptr<std::vector<float> >;
282 using WeightsPtr = shared_ptr<std::vector<short> >;
285 VolumePtr volume_host_;
286 WeightsPtr weights_host_;