Program Listing for File voxel.h¶
↰ Return to documentation for file (voxblox/include/voxblox/core/voxel.h
)
#ifndef VOXBLOX_CORE_VOXEL_H_
#define VOXBLOX_CORE_VOXEL_H_
#include <cstdint>
#include <string>
#include "voxblox/core/color.h"
#include "voxblox/core/common.h"
namespace voxblox {
struct TsdfVoxel {
float distance = 0.0f;
float weight = 0.0f;
Color color;
};
struct EsdfVoxel {
float distance = 0.0f;
bool observed = false;
bool hallucinated = false;
bool in_queue = false;
bool fixed = false;
Eigen::Vector3i parent = Eigen::Vector3i::Zero();
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
};
struct OccupancyVoxel {
float probability_log = 0.0f;
bool observed = false;
};
struct IntensityVoxel {
float intensity = 0.0f;
float weight = 0.0f;
};
namespace voxel_types {
const std::string kNotSerializable = "not_serializable";
const std::string kTsdf = "tsdf";
const std::string kEsdf = "esdf";
const std::string kOccupancy = "occupancy";
const std::string kIntensity = "intensity";
} // namespace voxel_types
template <typename Type>
std::string getVoxelType() {
return voxel_types::kNotSerializable;
}
template <>
inline std::string getVoxelType<TsdfVoxel>() {
return voxel_types::kTsdf;
}
template <>
inline std::string getVoxelType<EsdfVoxel>() {
return voxel_types::kEsdf;
}
template <>
inline std::string getVoxelType<OccupancyVoxel>() {
return voxel_types::kOccupancy;
}
template <>
inline std::string getVoxelType<IntensityVoxel>() {
return voxel_types::kIntensity;
}
} // namespace voxblox
#endif // VOXBLOX_CORE_VOXEL_H_