33 const auto sSectCreation = sect +
"_creationOpts"s;
50 std::ostream& out)
const 71 obj->insertionOptions = def.insertionOpts;
72 obj->likelihoodOptions = def.likelihoodOpts;
99 float res,
float default_value)
110 const auto def_value =
p2l(default_value);
112 cmin.
x, cmax.
x, cmin.
y, cmax.
y, cmin.
z, cmax.
z,
res,
res, &def_value);
122 float new_cells_default_value)
126 const auto def_value =
p2l(new_cells_default_value);
127 const double additionalMargin = .0;
129 cmin.
x, cmax.
x, cmin.
y, cmax.
y, cmin.
z, cmax.
z, def_value,
226 const TColorf general_color = gl_obj.
getColor();
227 const TColor general_color_u(
228 general_color.R * 255, general_color.G * 255, general_color.B * 255,
229 general_color.A * 255);
248 const auto inv_dz = 1.0 / (bbmax.z - bbmin.z + 0.01);
263 const bool is_occupied = occ > 0.501f;
264 const bool is_free = occ < 0.499f;
272 case COctoMapVoxels::FIXED:
273 vx_color = general_color_u;
275 case COctoMapVoxels::COLOR_FROM_HEIGHT:
276 coefc = 255 * inv_dz * (
z - bbmin.z);
278 coefc * general_color.R,
279 coefc * general_color.G,
280 coefc * general_color.B,
281 255.0 * general_color.A);
284 case COctoMapVoxels::COLOR_FROM_OCCUPANCY:
285 coefc = 240 * (1 - occ) + 15;
287 coefc * general_color.R,
288 coefc * general_color.G,
289 coefc * general_color.B,
290 255.0 * general_color.A);
293 case COctoMapVoxels::TRANSPARENCY_FROM_OCCUPANCY:
294 coeft = 255 - 510 * (1 - occ);
300 255 * general_color.R, 255 * general_color.G,
301 255 * general_color.B, coeft);
304 case COctoMapVoxels::TRANS_AND_COLOR_FROM_OCCUPANCY:
305 coefc = 240 * (1 - occ) + 15;
307 coefc * general_color.R,
308 coefc * general_color.G,
309 coefc * general_color.B, 50);
312 case COctoMapVoxels::MIXED:
313 coefc = 255 * inv_dz * (
z - bbmin.z);
314 coeft = 255 - 510 * (1 - occ);
320 coefc * general_color.R,
321 coefc * general_color.G,
322 coefc * general_color.B, coeft);
329 const size_t vx_set =
365 outObj->insert(gl_obj);
372 #ifdef OCCUPANCY_GRIDMAP_CELL_SIZE_8BITS 381 #ifdef OCCUPANCY_GRIDMAP_CELL_SIZE_8BITS 421 in >> bitsPerCellStream;
423 #ifdef OCCUPANCY_GRIDMAP_CELL_SIZE_8BITS 424 ASSERT_(bitsPerCellStream == 8);
426 ASSERT_(bitsPerCellStream == 16);
432 #ifdef OCCUPANCY_GRIDMAP_CELL_SIZE_8BITS 435 in.ReadBufferFixEndianness
475 out << generateGridLines << generateOccupiedVoxels << visibleOccupiedVoxels
476 << generateFreeVoxels << visibleFreeVoxels;
488 in >> generateGridLines >> generateOccupiedVoxels >>
489 visibleOccupiedVoxels >> generateFreeVoxels >>
502 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
double x
X,Y,Z coordinates.
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 WriteBufferFixEndianness(const T *ptr, size_t ElementCount)
Writes a sequence of elemental datatypes, taking care of reordering their bytes from the running arch...
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.
void WriteAs(const TYPE_FROM_ACTUAL &value)
float LF_stdHit
[LikelihoodField] The laser range "sigma" used in computations; Default value = 0.35
void WriteBuffer(const void *Buffer, size_t Count)
Writes a block of bytes to the stream from Buffer.
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.
GLsizei GLsizei GLuint * obj
void writeToStream(mrpt::serialization::CArchive &out) const
Binary dump to stream.
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.
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.
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)
GLsizei const GLchar ** string
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.
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).
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.
A RGB 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.
GLsizei GLsizei GLchar * source
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.
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 >...
#define ASSERT_BELOWEQ_(__A, __B)
float rayTracing_stdHit
[rayTracing] The laser range sigma.
Parameters for the determination of matchings between point clouds, etc.
void setSize(const mrpt::math::TPoint3D &corner_min, const mrpt::math::TPoint3D &corner_max, float resolution, float default_value=0.5f)
Change the size of gridmap, erasing all its previous contents.
bool isCubeTransparencyEnabled() const
GLenum const GLfloat * params
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)
#define MRPT_UNUSED_PARAM(a)
Determines whether this is an X86 or AMD64 platform.