34 const auto sSectCreation =
sect +
"_creationOpts"s;
51 std::ostream&
out)
const 72 obj->insertionOptions = def.insertionOpts;
73 obj->likelihoodOptions = def.likelihoodOpts;
100 double res,
float default_value)
111 const auto def_value =
p2l(default_value);
113 cmin.
x, cmax.
x, cmin.
y, cmax.
y, cmin.
z, cmax.
z, res, res, &def_value);
123 float new_cells_default_value)
127 const auto def_value =
p2l(new_cells_default_value);
128 const double additionalMargin = .0;
130 cmin.
x, cmax.
x, cmin.
y, cmax.
y, cmin.
z, cmax.
z, def_value,
224 const TColorf general_color = gl_obj.
getColor();
225 const TColor general_color_u = general_color.
asTColor();
244 const float inv_dz = 1.0f /
d2f(bbmax.z - bbmin.z + 0.01f);
259 const bool is_occupied = occ > 0.501f;
260 const bool is_free = occ < 0.499f;
268 case COctoMapVoxels::FIXED:
269 vx_color = general_color_u;
271 case COctoMapVoxels::COLOR_FROM_HEIGHT:
272 coefc = 255 * inv_dz *
d2f(z - bbmin.z);
274 f2u8(coefc * general_color.R),
275 f2u8(coefc * general_color.G),
276 f2u8(coefc * general_color.B),
277 f2u8(255 * general_color.A));
280 case COctoMapVoxels::COLOR_FROM_OCCUPANCY:
281 coefc = 240 * (1 - occ) + 15;
283 f2u8(coefc * general_color.R),
284 f2u8(coefc * general_color.G),
285 f2u8(coefc * general_color.B),
286 f2u8(255 * general_color.A));
289 case COctoMapVoxels::TRANSPARENCY_FROM_OCCUPANCY:
290 coeft = 255 - 510 * (1 - occ);
295 vx_color = general_color.asTColor();
299 case COctoMapVoxels::TRANS_AND_COLOR_FROM_OCCUPANCY:
300 coefc = 240 * (1 - occ) + 15;
302 f2u8(coefc * general_color.R),
303 f2u8(coefc * general_color.G),
304 f2u8(coefc * general_color.B), 50);
307 case COctoMapVoxels::MIXED:
308 coefc =
d2f(255 * inv_dz * (z - bbmin.z));
309 coeft =
d2f(255 - 510 * (1 - occ));
315 f2u8(coefc * general_color.R),
316 f2u8(coefc * general_color.G),
317 f2u8(coefc * general_color.B),
318 static_cast<uint8_t>(coeft));
325 const size_t vx_set =
361 outObj->insert(gl_obj);
368 #ifdef OCCUPANCY_GRIDMAP_CELL_SIZE_8BITS 377 #ifdef OCCUPANCY_GRIDMAP_CELL_SIZE_8BITS 380 out.WriteBufferFixEndianness
416 uint8_t bitsPerCellStream;
417 in >> bitsPerCellStream;
419 #ifdef OCCUPANCY_GRIDMAP_CELL_SIZE_8BITS 420 ASSERT_(bitsPerCellStream == 8);
422 ASSERT_(bitsPerCellStream == 16);
428 #ifdef OCCUPANCY_GRIDMAP_CELL_SIZE_8BITS 469 const int8_t version = 0;
471 out << generateGridLines << generateOccupiedVoxels << visibleOccupiedVoxels
472 << generateFreeVoxels << visibleFreeVoxels;
484 in >> generateGridLines >> generateOccupiedVoxels >>
485 visibleOccupiedVoxels >> generateFreeVoxels >>
495 const std::string& filNamePrefix)
const 498 const auto fil = filNamePrefix +
".txt";
TLikelihoodOptions likelihoodOptions
void showVoxels(unsigned int voxel_set, bool show)
Shows/hides the voxels (voxel_set is a 0-based index for the set of voxels to modify, e.g.
Virtual base for specifying the kind and parameters of one map (normally, to be inserted into mrpt::m...
Parameters for CMetricMap::compute3DMatchingRatio()
void reserveVoxels(const size_t set_index, const size_t nVoxels)
TRenderingOptions renderingOptions
void getAs3DObject(mrpt::opengl::CSetOfObjects::Ptr &outObj) const override
Returns a 3D object representing the map.
void loadFromConfigFile(const mrpt::config::CConfigFileBase &source, const std::string §ion) override
This method load the options from a ".ini" file.
uint32_t LF_decimation
[LikelihoodField] The decimation of the points in a scan, default=1 == no decimation ...
void determineMatching2D(const mrpt::maps::CMetricMap *otherMap, const mrpt::poses::CPose2D &otherMapPose, mrpt::tfest::TMatchingPairList &correspondences, const TMatchingParams ¶ms, TMatchingExtraResults &extraResults) const override
See docs in base class: in this class this always returns 0.
#define THROW_EXCEPTION(msg)
static CLogOddsGridMapLUT< COccupancyGridMap3D::voxelType > logodd_lut
#define IMPLEMENTS_SERIALIZABLE(class_name, base, NameSpace)
To be added to all CSerializable-classes implementation files.
void dyngridcommon_writeToStream(ARCHIVE &out) const
Serialization of all parameters, except the contents of each voxel (responsability of the derived cla...
void fill(const T &value)
Fills all the cells with the same value.
float getCellFreeness(unsigned int cx, unsigned int cy, unsigned int cz) const
Read the real valued [0,1] (0:occupied, 1:free) contents of a voxel, given its index.
static CLogOddsGridMapLUT< voxelType > & get_logodd_lut()
Lookup tables for log-odds.
uint16_t decimation
Decimation for insertPointCloud() or 2D range scans (Default: 1)
void setBoundingBox(const mrpt::math::TPoint3D &bb_min, const mrpt::math::TPoint3D &bb_max)
Manually changes the bounding box (normally the user doesn't need to call this)
void reserveGridCubes(const size_t nCubes)
void loadFromConfigFile_map_specific(const mrpt::config::CConfigFileBase &source, const std::string §ionNamePrefix) override
Load all map-specific params.
mrpt::vision::TStereoCalibParams params
float LF_stdHit
[LikelihoodField] The laser range "sigma" used in computations; Default value = 0.35
float LF_maxCorrsDistance
[LikelihoodField] The max.
coord_t idx2x(int cx) const
Transform a voxel index into a coordinate value of the voxel central point.
void loadFromConfigFile(const mrpt::config::CConfigFileBase &source, const std::string §ion) override
This method load the options from a ".ini" file.
void clear()
Clears everything.
mrpt::maps::COccupancyGridMap3D::TInsertionOptions insertionOpts
Observations insertion options.
uint16_t decimation_3d_range
Specify the decimation of 3D range scans.
TInsertionOptions insertionOptions
With this struct options are provided to the observation insertion process.
void writeToStream(mrpt::serialization::CArchive &out) const
Binary dump to stream.
void setSize(const mrpt::math::TPoint3D &corner_min, const mrpt::math::TPoint3D &corner_max, double resolution, float default_value=0.5f)
Change the size of gridmap, erasing all its previous contents.
bool LF_useSquareDist
[LikelihoodField] (Default:false) Use exp(dist^2/std^2) instead of exp(dist^2/std^2) ...
mrpt::maps::TMapGenericParams genericMapParams
Common params for all maps: These are automatically set in TMetricMapTypesRegistry::factoryMapObjectF...
#define MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION(__V)
For use in CSerializable implementations.
A flexible renderer of voxels, typically from a 3D octo map (see mrpt::maps::COctoMap).
#define ASSERT_(f)
Defines an assertion mechanism.
float d2f(const double d)
shortcut for static_cast<float>(double)
void push_back_GridCube(const TGridCube &c)
This class allows loading and storing values and vectors of different types from a configuration text...
OccGridCellTraits::cellType cell_t
The type of cells.
void ReadAsAndCastTo(CAST_TO_TYPE &read_here)
Read a value from a stream stored in a type different of the target variable, making the conversion v...
virtual void resize(coord_t new_x_min, coord_t new_x_max, coord_t new_y_min, coord_t new_y_max, coord_t new_z_min, coord_t new_z_max, const T &defaultValueNewCells, coord_t additionalMarginMeters=2)
Changes the size of the grid, maintaining previous contents.
bool isOutOfBounds(const int cx, const int cy, const int cz) const
void updateCell(int cx_idx, int cy_idx, int cz_idx, float v)
Performs the Bayesian fusion of a new observation of a cell.
float maxDistanceInsertion
Largest distance at which voxels are updated (Default: 15 meters)
bool generateOccupiedVoxels
Generate voxels for the occupied volumes (Default=true)
void readFromStream(mrpt::serialization::CArchive &in)
Binary dump to stream.
int32_t rayTracing_decimation
[rayTracing] One out of "rayTracing_decimation" rays will be simulated and compared only: set to 1 to...
bool visibleOccupiedVoxels
Set occupied voxels visible (requires generateOccupiedVoxels=true) (Default=true) ...
float compute3DMatchingRatio(const mrpt::maps::CMetricMap *otherMap, const mrpt::poses::CPose3D &otherMapPose, const TMatchingRatioParams ¶ms) const override
See docs in base class: in this class this always returns 0.
void internal_clear() override
Clear the map: It set all voxels to their default occupancy value (0.5), without changing the resolut...
T * cellByIndex(unsigned int cx, unsigned int cy, unsigned int cz)
Returns a pointer to the contents of a voxel given by its voxel indexes, or nullptr if it is out of t...
bool m_is_empty
True upon construction; used by isEmpty()
coord_t getResolutionZ() const
void resizeGrid(const mrpt::math::TPoint3D &corner_min, const mrpt::math::TPoint3D &corner_max, float new_voxels_default_value=0.5f)
Change the size of gridmap, maintaining previous contents.
void serializeTo(mrpt::serialization::CArchive &out) const override
Pure virtual method for writing (serializing) to an abstract archive.
coord_t idx2z(int cz) const
virtual void dumpToTextStream(std::ostream &out) const
This method should clearly display all the contents of the structure in textual form, sending it to a std::ostream.
static Ptr Create(Args &&... args)
static mrpt::maps::CMetricMap * internal_CreateFromMapDefinition(const mrpt::maps::TMetricMapInitializer &def)
#define ASSERT_ABOVEEQ_(__A, __B)
coord_t idx2y(int cy) const
void getAsOctoMapVoxels(mrpt::opengl::COctoMapVoxels &gl_obj) const
float LF_zHit
[LikelihoodField]
mrpt::maps::COccupancyGridMap3D::TLikelihoodOptions likelihoodOpts
Probabilistic observation likelihood options.
The info of each grid block.
void push_back_Voxel(const size_t set_index, const TVoxel &v)
#define LOADABLEOPTS_DUMP_VAR(variableName, variableType)
Macro for dumping a variable to a stream, within the method "dumpToTextStream(out)" (Variable types a...
float maxFreenessUpdateCertainty
A value in the range [0.5,1] for updating a free voxel.
A 3D occupancy grid map with a regular, even distribution of voxels.
void serializeFrom(mrpt::serialization::CArchive &in, uint8_t serial_version) override
Pure virtual method for reading (deserializing) from an abstract archive.
#define MRPT_LOAD_CONFIG_VAR( variableName, variableType, configFileObject, sectionNameStr)
An useful macro for loading variables stored in a INI-like file under a key with the same name that t...
bool visibleFreeVoxels
Set free voxels visible (requires generateFreeVoxels=true) (Default=true)
The info of each of the voxels.
uint8_t f2u8(const float f)
converts a float [0,1] into an uint8_t [0,255] (without checking for out of bounds) ...
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
#define MAP_DEFINITION_REGISTER(_CLASSNAME_STRINGS, _CLASSNAME_WITH_NS)
Registers one map class into TMetricMapInitializer factory.
TLikelihoodMethod
The type for selecting a likelihood computation method.
Virtual base class for "archives": classes abstracting I/O streams.
uint8_t serializeGetVersion() const override
Must return the current versioning number of the object.
Declares a virtual base class for all metric maps storage classes.
A class used to store a 2D pose, including the 2D coordinate point and a heading (phi) angle...
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
mrpt::vision::TStereoCalibResults out
void resizeVoxelSets(const size_t nVoxelSets)
void fill(float default_value=0.5f)
Fills all the voxels with a default value.
bool isEmpty() const override
Returns true upon map construction or after calling clear(), the return changes to false upon success...
float maxOccupancyUpdateCertainty
A value in the range [0.5,1] used for updating voxel with a Bayesian approach (default 0...
bool generateGridLines
Generate grid lines for all octree nodes, useful to draw the "structure" of the octree, but computationally costly (Default: false)
#define ASSERT_ABOVE_(__A, __B)
mrpt::img::TColorf getColor() const
Returns the object color property as a TColorf.
An RGBA color - floats in the range [0,1].
visualization_mode_t getVisualizationMode() const
COccupancyGridMap3D(const mrpt::math::TPoint3D &corner_min={-5.0f, -5.0f, -5.0f}, const mrpt::math::TPoint3D &corner_max={5.0f, 5.0f, 5.0f}, float resolution=0.25f)
Constructor.
TLikelihoodMethod likelihoodMethod
The selected method to compute an observation likelihood.
The namespace for 3D scene representation and rendering.
float LF_maxRange
[LikelihoodField] The max.
float min_x
See COccupancyGridMap3D::COccupancyGridMap3D.
virtual void setSize(const coord_t x_min, const coord_t x_max, const coord_t y_min, const coord_t y_max, const coord_t z_min, const coord_t z_max, const coord_t resolution_xy, const coord_t resolution_z_=-1.0, const T *fill_value=nullptr)
Changes the size of the grid, ERASING all previous contents.
size_t ReadBuffer(void *Buffer, size_t Count)
Reads a block of bytes from the stream into Buffer.
A generic provider of log-odds grid-map maintainance functions.
grid_t m_grid
The actual 3D voxels container.
static voxelType p2l(const float p)
Scales a real valued probability in [0,1] to an integer representation of: log(p)-log(1-p) in the val...
void saveMetricMapRepresentationToFile(const std::string &f) const override
This virtual method saves the map to a file "filNamePrefix"+< some_file_extension >...
TColor asTColor() const
Returns the 0-255 integer version of this color: RGBA_u8.
#define ASSERT_BELOWEQ_(__A, __B)
float rayTracing_stdHit
[rayTracing] The laser range sigma.
Parameters for the determination of matchings between point clouds, etc.
size_t ReadBufferFixEndianness(T *ptr, size_t ElementCount)
Reads a sequence of elemental datatypes, taking care of reordering their bytes from the MRPT stream s...
bool isCubeTransparencyEnabled() const
void dyngridcommon_readFromStream(ARCHIVE &in)
Serialization of all parameters, except the contents of each voxel (responsability of the derived cla...
OccGridCellTraits::cellType voxelType
The type of the map voxels:
coord_t getResolutionXY() const
void dumpToTextStream_map_specific(std::ostream &out) const override
One static instance of this struct should exist in any class implementing CLogOddsGridMap2D to hold t...
bool generateFreeVoxels
Generate voxels for the freespace (Default=true)
int round(const T value)
Returns the closer integer (int) to x.