class mrpt::maps::CSimplePointsMap

A cloud of points in 2D or 3D, which can be built from a sequence of laser scans.

This class only stores the coordinates (x,y,z) of each point.

See mrpt::maps::CPointsMap and derived classes for other point cloud classes.

See also:

CMetricMap, CWeightedPointsMap, CPoint, mrpt::serialization::CSerializable

#include <mrpt/maps/CSimplePointsMap.h>

class CSimplePointsMap: public mrpt::maps::CPointsMap
{
public:
    // construction

    CSimplePointsMap();
    CSimplePointsMap(const CPointsMap& o);
    CSimplePointsMap(const CSimplePointsMap& o);

    //
methods

    virtual void reserve(size_t newLength);
    virtual void resize(size_t newLength);
    virtual void setSize(size_t newLength);
    virtual void insertPointFast(float x, float y, float z = 0);
    virtual void getPointAllFieldsFast(const size_t index, std::vector<float>& point_data) const;
    virtual void setPointAllFieldsFast(const size_t index, const std::vector<float>& point_data);
    virtual void loadFromRangeScan(const mrpt::obs::CObservation2DRangeScan& rangeScan, const mrpt::poses::CPose3D* robotPose = nullptr);
    virtual void loadFromRangeScan(const mrpt::obs::CObservation3DRangeScan& rangeScan, const mrpt::poses::CPose3D* robotPose = nullptr);
    CSimplePointsMap& operator = (const CPointsMap& o);
    CSimplePointsMap& operator = (const CSimplePointsMap& o);
    virtual const mrpt::maps::CSimplePointsMap* getAsSimplePointsMap() const;
};

Inherited Members

public:
    // typedefs

    typedef KDTreeCapable<Derived, num_t, metric_t> self_t;

    // structs

    template <int _DIM = -1>
    struct TKDTreeDataHolder;

    struct TKDTreeSearchParams;
    struct TInsertionOptions;
    struct TLaserRange2DInsertContext;
    struct TLaserRange3DInsertContext;
    struct TLikelihoodOptions;
    struct TRenderOptions;

    //
methods

    virtual bool isEmpty() const = 0;
    virtual void saveMetricMapRepresentationToFile(const std::string& filNamePrefix) const = 0;
    virtual void getAs3DObject(mrpt::opengl::CSetOfObjects::Ptr& outObj) const = 0;
    float kdTreeClosestPoint2DsqrError(const TPoint2D& p0) const;
    void kdTreeTwoClosestPoint2D(const TPoint2D& p0, TPoint2D& pOut1, TPoint2D& pOut2, float& outDistSqr1, float& outDistSqr2) const;

    std::vector<size_t> kdTreeNClosestPoint2D(
        const TPoint2D& p0,
        size_t N,
        std::vector<TPoint2D>& pOut,
        std::vector<float>& outDistSqr
        ) const;

    void kdTreeNClosestPoint2DIdx(
        const TPoint2D& p0,
        size_t N,
        std::vector<size_t>& outIdx,
        std::vector<float>& outDistSqr
        ) const;

    void kdTreeNClosestPoint3D(const TPoint3D& p0, size_t N, std::vector<TPoint3D>& pOut, std::vector<float>& outDistSqr) const;

    void kdTreeNClosestPoint3DIdx(
        const TPoint3D& p0,
        size_t N,
        std::vector<size_t>& outIdx,
        std::vector<float>& outDistSqr
        ) const;

    void kdTreeEnsureIndexBuilt3D();
    void kdTreeEnsureIndexBuilt2D();
    KDTreeCapable& operator = (const KDTreeCapable&);
    virtual void reserve(size_t newLength) = 0;
    virtual void resize(size_t newLength) = 0;
    virtual void setSize(size_t newLength) = 0;
    virtual void insertPointFast(float x, float y, float z = 0) = 0;
    virtual void getPointAllFieldsFast(const size_t index, std::vector<float>& point_data) const = 0;
    virtual void setPointAllFieldsFast(const size_t index, const std::vector<float>& point_data) = 0;
    CPointsMap& operator = (const CPointsMap& o);

    virtual void getPointRGB(
        size_t index,
        float& x,
        float& y,
        float& z,
        float& R,
        float& G,
        float& B
        ) const;

    virtual bool hasColorPoints() const;
    virtual void loadFromRangeScan(const mrpt::obs::CObservation2DRangeScan& rangeScan, const mrpt::poses::CPose3D* robotPose = nullptr) = 0;
    virtual void loadFromRangeScan(const mrpt::obs::CObservation3DRangeScan& rangeScan, const mrpt::poses::CPose3D* robotPose = nullptr) = 0;
    virtual void getAs3DObject(mrpt::opengl::CSetOfObjects::Ptr& outObj) const;

Construction

CSimplePointsMap()

Default constructor.

Methods

virtual void reserve(size_t newLength)

Reserves memory for a given number of points: the size of the map does not change, it only reserves the memory.

This is useful for situations where it is approximately known the final size of the map. This method is more efficient than constantly increasing the size of the buffers. Refer to the STL C++ library’s “reserve” methods.

virtual void resize(size_t newLength)

Resizes all point buffers so they can hold the given number of points: newly created points are set to default values, and old contents are not changed.

See also:

reserve, setPoint, setPointFast, setSize

virtual void setSize(size_t newLength)

Resizes all point buffers so they can hold the given number of points, erasing all previous contents and leaving all points to default values.

See also:

reserve, setPoint, setPointFast, setSize

virtual void insertPointFast(float x, float y, float z = 0)

The virtual method for insertPoint() without calling mark_as_modified()

virtual void getPointAllFieldsFast(
    const size_t index,
    std::vector<float>& point_data
    ) const

Get all the data fields for one point as a vector: [X Y Z] Unlike getPointAllFields(), this method does not check for index out of bounds.

See also:

getPointAllFields, setPointAllFields, setPointAllFieldsFast

virtual void setPointAllFieldsFast(
    const size_t index,
    const std::vector<float>& point_data
    )

Set all the data fields for one point as a vector: [X Y Z] Unlike setPointAllFields(), this method does not check for index out of bounds.

See also:

setPointAllFields, getPointAllFields, getPointAllFieldsFast

virtual void loadFromRangeScan(const mrpt::obs::CObservation2DRangeScan& rangeScan, const mrpt::poses::CPose3D* robotPose = nullptr)

See CPointsMap::loadFromRangeScan()

virtual void loadFromRangeScan(const mrpt::obs::CObservation3DRangeScan& rangeScan, const mrpt::poses::CPose3D* robotPose = nullptr)

See CPointsMap::loadFromRangeScan()

virtual const mrpt::maps::CSimplePointsMap* getAsSimplePointsMap() const

If the map is a simple points map or it’s a multi-metric map that contains EXACTLY one simple points map, return it.

Otherwise, return nullptr