39 virtual void reserve(
size_t newLength)
override;
40 virtual void resize(
size_t newLength)
override;
41 virtual void setSize(
size_t newLength)
override;
66 const size_t index, std::vector<float>& point_data)
const override
83 const size_t index,
const std::vector<float>& point_data)
override
107 const CPointsMap& anotherMap,
const size_t nPreviousPoints)
override;
110 template <
class Derived>
112 template <
class Derived>
129 size_t index,
float x,
float y,
float z,
float R,
float G,
155 float x,
float y,
float z,
float R,
float G,
float B)
override;
159 template <
typename POINT_T>
187 size_t index,
float&
x,
float&
y,
float&
z,
float&
R,
float&
G,
188 float& B)
const override;
198 size_t index,
float&
R,
float&
G,
float& B)
const
246 std::ostream& out)
const override;
266 const std::string& filename,
bool save_as_binary)
const override;
279 template <
class POINTCLOUD>
282 const size_t N = cloud.points.size();
285 const float f = 1.0f / 255.0f;
286 for (
size_t i = 0; i < N; ++i)
288 cloud.points[i].x, cloud.points[i].y, cloud.points[i].z,
289 cloud.points[i].r * f, cloud.points[i].g * f,
290 cloud.points[i].b * f);
294 template <
class POINTCLOUD>
297 const size_t nThis = this->
size();
300 for (
size_t i = 0; i < nThis; ++i)
304 cloud.points[i].r =
static_cast<uint8_t>(
R * 255);
305 cloud.points[i].g =
static_cast<uint8_t>(
G * 255);
306 cloud.points[i].b =
static_cast<uint8_t>(B * 255);
354 #include <mrpt/opengl/pointcloud_adapters.h>
370 static const int HAS_RGB = 1;
372 static const int HAS_RGBf = 1;
374 static const int HAS_RGBu8 = 0;
378 : m_obj(*const_cast<
mrpt::maps::CColouredPointsMap*>(&
obj))
382 inline size_t size()
const {
return m_obj.
size(); }
390 template <
typename T>
403 template <
typename T>
405 const size_t idx, T&
x, T&
y, T&
z,
float&
r,
float&
g,
float&
b)
const
412 const float r,
const float g,
const float b)
418 template <
typename T>
439 const size_t idx,
float&
r,
float&
g,
float&
b)
const
445 const size_t idx,
const float r,
const float g,
const float b)
473 mrpt::maps::CColouredPointsMap::TColouringMethod,
474 cmFromHeightRelativeToSensor);
476 mrpt::maps::CColouredPointsMap::TColouringMethod,
477 cmFromHeightRelativeToSensorJet);
479 mrpt::maps::CColouredPointsMap::TColouringMethod,
480 cmFromHeightRelativeToSensorGray);
482 mrpt::maps::CColouredPointsMap::TColouringMethod, cmFromIntensityImage);
MRPT_FILL_ENUM_MEMBER(mrpt::maps::CColouredPointsMap::TColouringMethod, cmFromHeightRelativeToSensor)
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
#define MRPT_ENUM_TYPE_END()
#define MRPT_ENUM_TYPE_BEGIN(_ENUM_TYPE_WITH_NS)
#define MAP_DEFINITION_END(_CLASS_NAME_)
#define MAP_DEFINITION_START(_CLASS_NAME_)
Add a MAP_DEFINITION_START() ...
This class allows loading and storing values and vectors of different types from a configuration text...
This is a virtual base class for sets of options than can be loaded from and/or saved to configuratio...
A map of 2D/3D points with individual colours (RGB).
mrpt::aligned_std_vector< float > m_color_G
void insertPoint(float x, float y, float z)
This is an overloaded member function, provided for convenience. It differs from the above function o...
virtual bool savePCDFile(const std::string &filename, bool save_as_binary) const override
Save the point cloud as a PCL PCD file, in either ASCII or binary format.
bool save3D_and_colour_to_text_file(const std::string &file) const
Save to a text file.
void setFromPCLPointCloudRGB(const POINTCLOUD &cloud)
Loads a PCL point cloud (WITH RGB information) into this MRPT class (for clouds without RGB data,...
virtual void reserve(size_t newLength) override
Reserves memory for a given number of points: the size of the map does not change,...
bool colourFromObservation(const mrpt::obs::CObservationImage &obs, const mrpt::poses::CPose3D &robotPose)
Colour a set of points from a CObservationImage and the global pose of the robot.
virtual void getPoint(size_t index, float &x, float &y, float &z, float &R, float &G, float &B) const override
Retrieves a point and its color (colors range is [0,1])
mrpt::aligned_std_vector< float > m_color_B
virtual void addFrom_classSpecific(const CPointsMap &anotherMap, const size_t nPreviousPoints) override
Auxiliary method called from within addFrom() automatically, to finish the copying of class-specific ...
virtual void copyFrom(const CPointsMap &obj) override
Virtual assignment operator, to be implemented in derived classes
virtual void getPointAllFieldsFast(const size_t index, std::vector< float > &point_data) const override
Get all the data fields for one point as a vector: [X Y Z R G B] Unlike getPointAllFields(),...
virtual void setSize(size_t newLength) override
Resizes all point buffers so they can hold the given number of points, erasing all previous contents ...
void setPoint(size_t index, mrpt::math::TPoint3Df &p)
This is an overloaded member function, provided for convenience. It differs from the above function o...
TColouringMethod
The choices for coloring schemes:
@ cmFromHeightRelativeToSensor
@ cmFromHeightRelativeToSensorGray
@ cmFromHeightRelativeToSensorJet
virtual void internal_clear() override
Minimum distance from where the points have been seen.
void setPoint(size_t index, float x, float y)
This is an overloaded member function, provided for convenience. It differs from the above function o...
virtual void loadFromRangeScan(const mrpt::obs::CObservation2DRangeScan &rangeScan, const mrpt::poses::CPose3D *robotPose=nullptr) override
See CPointsMap::loadFromRangeScan()
virtual void setPointAllFieldsFast(const size_t index, const std::vector< float > &point_data) override
Set all the data fields for one point as a vector: [X Y Z R G B] Unlike setPointAllFields(),...
virtual void insertPoint(float x, float y, float z, float R, float G, float B) override
Adds a new point given its coordinates and color (colors range is [0,1])
void getPointColor_fast(size_t index, float &R, float &G, float &B) const
Like getPointColor but without checking for out-of-index erors.
void setPointColor(size_t index, float R, float G, float B)
Changes just the color of a given point from the map.
virtual void setPointFast(size_t index, float x, float y, float z) override
Changes the coordinates of the given point (0-based index), without checking for out-of-bounds and wi...
void insertPoint(const POINT_T &p)
This is an overloaded member function, provided for convenience. It differs from the above function o...
void setPoint(size_t index, float x, float y, float z)
This is an overloaded member function, provided for convenience. It differs from the above function o...
void PLY_export_get_vertex(const size_t idx, mrpt::math::TPoint3Df &pt, bool &pt_has_color, mrpt::img::TColorf &pt_color) const override
In a base class, will be called after PLY_export_get_vertex_count() once for each exported point.
void getPCLPointCloudXYZRGB(POINTCLOUD &cloud) const
Like CPointsMap::getPCLPointCloud() but for PointCloud<PointXYZRGB>
virtual void insertPointFast(float x, float y, float z=0) override
The virtual method for insertPoint() without calling mark_as_modified()
virtual void PLY_import_set_vertex(const size_t idx, const mrpt::math::TPoint3Df &pt, const mrpt::img::TColorf *pt_color=nullptr) override
In a base class, will be called after PLY_import_set_vertex_count() once for each loaded point.
virtual void getAs3DObject(mrpt::opengl::CSetOfObjects::Ptr &outObj) const override
Override of the default 3D scene builder to account for the individual points' color.
virtual void setPoint(size_t index, float x, float y, float z, float R, float G, float B) override
Changes a given point from map.
void resetPointsMinDist(float defValue=2000.0f)
Reset the minimum-observed-distance buffer for all the points to a predefined value.
TColourOptions colorScheme
The options employed when inserting laser scans in the map.
virtual void PLY_import_set_vertex_count(const size_t N) override
In a base class, reserve memory to prepare subsequent calls to PLY_import_set_vertex.
void setPointColor_fast(size_t index, float R, float G, float B)
Like setPointColor but without checking for out-of-index erors.
mrpt::aligned_std_vector< float > m_color_R
The color data.
virtual void resize(size_t newLength) override
Resizes all point buffers so they can hold the given number of points: newly created points are set t...
void getPointColor(size_t index, float &R, float &G, float &B) const
Retrieves a point color (colors range is [0,1])
virtual bool hasColorPoints() const override
Returns true if the point map has a color field for each point.
void clear()
Erase all the contents of the map.
A cloud of points in 2D or 3D, which can be built from a sequence of laser scans or other sensors.
void getPointFast(size_t index, float &x, float &y, float &z) const
Just like getPoint() but without checking out-of-bound index and without returning the point weight,...
void mark_as_modified() const
Users normally don't need to call this.
mrpt::aligned_std_vector< float > m_x
The point coordinates.
mrpt::aligned_std_vector< float > m_y
void getPCLPointCloud(POINTCLOUD &cloud) const
Use to convert this MRPT point cloud object into a PCL point cloud object (PointCloud<PointXYZ>).
size_t size() const
Returns the number of stored points in the map.
mrpt::aligned_std_vector< float > m_z
A "CObservation"-derived class that represents a 2D range scan measurement (typically from a laser sc...
Declares a class derived from "CObservation" that encapsules a 3D range scan measurement,...
Declares a class derived from "CObservation" that encapsules an image from a camera,...
std::shared_ptr< CSetOfObjects > Ptr
void getPointRGBu8(const size_t idx, uint8_t &r, uint8_t &g, uint8_t &b) const
Get RGBu8 color of i'th point.
void setDimensions(const size_t &height, const size_t &width)
Does nothing as of now.
void getPointRGBf(const size_t idx, float &r, float &g, float &b) const
Get RGBf color of i'th point.
void setPointXYZ(const size_t idx, const coords_t x, const coords_t y, const coords_t z)
Set XYZ coordinates of i'th point.
void setPointRGBf(const size_t idx, const float r, const float g, const float b)
Set XYZ_RGBf coordinates of i'th point.
void setPointXYZ_RGBu8(const size_t idx, const coords_t x, const coords_t y, const coords_t z, const uint8_t r, const uint8_t g, const uint8_t b)
Set XYZ_RGBu8 coordinates of i'th point.
void setPointXYZ_RGBf(const size_t idx, const coords_t x, const coords_t y, const coords_t z, const float r, const float g, const float b)
Set XYZ_RGBf coordinates of i'th point.
void setPointRGBu8(const size_t idx, const uint8_t r, const uint8_t g, const uint8_t b)
Set RGBu8 coordinates of i'th point.
void getPointXYZ(const size_t idx, T &x, T &y, T &z) const
Get XYZ coordinates of i'th point.
size_t size() const
Get number of points.
mrpt::maps::CColouredPointsMap & m_obj
PointCloudAdapter(const mrpt::maps::CColouredPointsMap &obj)
Constructor (accept a const ref for convenience)
void resize(const size_t N)
Set number of points (to uninitialized values)
void getPointXYZ_RGBf(const size_t idx, T &x, T &y, T &z, float &r, float &g, float &b) const
Get XYZ_RGBf coordinates of i'th point.
void getPointXYZ_RGBu8(const size_t idx, T &x, T &y, T &z, uint8_t &r, uint8_t &g, uint8_t &b) const
Get XYZ_RGBu8 coordinates of i'th point.
float coords_t
The type of each point XYZ coordinates.
An adapter to different kinds of point cloud object.
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
#define ASSERTDEB_(f)
Defines an assertion mechanism - only when compiled in debug.
#define ASSERT_BELOW_(__A, __B)
GLsizei GLsizei GLuint * obj
GLdouble GLdouble GLdouble r
GLenum GLsizei GLsizei height
GLsizei const GLchar ** string
GLsizei GLsizei GLchar * source
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
std::vector< T, mrpt::aligned_allocator_cpp11< T > > aligned_std_vector
A RGB color - floats in the range [0,1].
The definition of parameters for generating colors from laser scans.
void dumpToTextStream(std::ostream &out) const override
This method should clearly display all the contents of the structure in textual form,...
TColourOptions()
Initilization of default parameters.
void loadFromConfigFile(const mrpt::config::CConfigFileBase &source, const std::string §ion) override
This method load the options from a ".ini"-like file or memory-stored string list.
With this struct options are provided to the observation insertion process.
Options used when evaluating "computeObservationLikelihood" in the derived classes.
Lightweight 3D point (float version).