Class CSensoryFrame
Defined in File CSensoryFrame.h
Inheritance Relationships
Base Type
public mrpt::serialization::CSerializable
Class Documentation
-
class CSensoryFrame : public mrpt::serialization::CSerializable
A “sensory frame” is a set of observations taken by the robot approximately at the same time, so they can be considered as a multi-sensor “snapshot” of the environment. It can contain “observations” of many different kinds.
New observations can be added using:
// Create a smart pointer containing an object of class "CObservationXXX" CObservationXXX::Ptr o = std::make_shared<CObservationXXX>(); // o->... // fill it... CSensoryFrame sf; sf.insert(o);
The following methods are equivalent for adding new observations to a “sensory frame”:
To examine the objects within a sensory frame, the following methods exist:
CSensoryFrame::getObservationByClass : Looks for some specific observation class.
CSensoryFrame::begin : To iterate over all observations.
CSensoryFrame::getObservationByIndex : To query by index.
Note that
shared_ptr<>s to the observations are stored, so a copy of a CSensoryFrame will contain references to the same objects, i.e. copies are shallows copies, not deep copies.See also
Cached points map
-
template<class POINTSMAP>
inline const POINTSMAP *getAuxPointsMap() const Returns the cached points map representation of the scan, if already build with buildAuxPointsMap(), or nullptr otherwise. Usage:
mrpt::maps::CPointsMap *map = obs->getAuxPointsMap<mrpt::maps::CPointsMap>();
See also
-
template<class POINTSMAP>
inline const POINTSMAP *buildAuxPointsMap(const void *options = nullptr) const Returns a cached points map representing this laser scan, building it upon the first call.
See also
- Parameters:
options – Can be nullptr to use default point maps’ insertion options, or a pointer to a “CPointsMap::TInsertionOptions” structure to override some params. Usage:
mrpt::maps::CPointsMap *map = sf->buildAuxPointsMap<mrpt::maps::CPointsMap>(&options or nullptr);
Public Types
-
using iterator = std::deque<CObservation::Ptr>::iterator
You can use CSensoryFrame::begin to get a iterator to the first element.
-
using const_iterator = std::deque<CObservation::Ptr>::const_iterator
You can use CSensoryFrame::begin to get a iterator to the first element.
Public Functions
-
CSensoryFrame() = default
Default ctor.
-
void clear()
Clear the container, so it holds no observations.
-
bool insertObservationsInto(mrpt::maps::CMetricMap &theMap, const std::optional<const mrpt::poses::CPose3D> &robotPose = std::nullopt) const
Insert all the observations in this SF into a metric map or any kind (see mrpt::maps::CMetricMap). It calls CObservation::insertObservationInto for all stored observation.
See also
mrpt::maps::CMetricMap, CObservation::insertObservationInto, CMetricMap::insertObservation
- Parameters:
theMap – The map where this observation is to be inserted: the map will be updated.
robotPose – The pose of the robot base for this observation, relative to the target metric map. Set to nullptr (default) to use SE(3) identity, i.e. the origin.
- Returns:
Returns true if the map has been updated, or false if this observations have nothing to do with the metric map (e.g. trying to insert an image into a gridmap).
-
inline bool insertObservationsInto(mrpt::maps::CMetricMap::Ptr &theMap, const std::optional<const mrpt::poses::CPose3D> &robotPose = std::nullopt) const
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
-
void operator+=(const CSensoryFrame &sf)
You can use “sf1+=sf2;” to add all observations in sf2 to sf1.
-
void operator+=(const CObservation::Ptr &obs)
You can use “sf+=obs;” to add the observation “obs” to the “sf1”.
-
void push_back(const CObservation::Ptr &obs)
Insert a new observation to the sensory frame.
-
inline void insert(const CObservation::Ptr &obs)
Synonym with push_back()
-
template<typename T>
inline T::ConstPtr getObservationByClass(size_t ith = 0) const Returns the i’th observation of a given class (or of a descendant class), or nullptr if there is no such observation in the array. Example:
By default (ith=0), the first observation is returned.CObservationImage::Ptr obs = m_SF->getObservationByClass<CObservationImage>();
-
inline const_iterator begin() const
Returns a constant iterator to the first observation: this is an example of usage:
CSensoryFrame sf; ... for (CSensoryFrame::const_iterator it=sf.begin();it!=sf.end();++it) { (*it)->... // (*it) is a "CObservation*" }
-
inline const_iterator end() const
Returns a constant iterator to the end of the list of observations: this is an example of usage:
CSensoryFrame sf; ... for (CSensoryFrame::const_iterator it=sf.begin();it!=sf.end();++it) { (*it)->... // (*it) is a "CObservation*" }
-
inline iterator begin()
Returns a iterator to the first observation: this is an example of usage:
CSensoryFrame sf; ... for (CSensoryFrame::iterator it=sf.begin();it!=sf.end();++it) { (*it)->... // (*it) is a "CObservation*" }
-
inline iterator end()
Returns a iterator to the end of the list of observations: this is an example of usage:
CSensoryFrame sf; ... for (CSensoryFrame::iterator it=sf.begin();it!=sf.end();++it) { (*it)->... // (*it) is a "CObservation*" }
-
inline size_t size() const noexcept
Returns the number of observations in the list.
-
inline bool empty() const noexcept
Returns true if there are no observations in the list.
-
void eraseByIndex(size_t idx)
Removes the i’th observation in the list (0=first).
-
iterator erase(const iterator &it)
Removes the given observation in the list, and return an iterator to the next element (or this->end() if it was the last one).
-
void eraseByLabel(const std::string &label)
Removes all the observations that match a given sensorLabel.
-
CObservation::ConstPtr getObservationByIndex(size_t idx) const
Returns the i’th observation in the list (0=first).
- Throws:
std::exception – If out of range.
-
CObservation::Ptr &getObservationByIndex(size_t idx)
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Returns the i’th observation in the list (0=first), and as a different smart pointer type:
sf.getObservationByIndexAs<CObservationStereoImages::Ptr>(i);
-
CObservation::ConstPtr getObservationBySensorLabel(const std::string &label, size_t idx = 0) const
Returns the i’th observation in the list with the given “sensorLabel” (0=first).
- Returns:
The observation, or nullptr if not found.
-
CObservation::Ptr getObservationBySensorLabel(const std::string &label, size_t idx = 0)
Returns the i’th observation in the list with the given “sensorLabel” (0=first), and as a different smart pointer type:
sf.getObservationBySensorLabelAs<CObservationStereoImages::Ptr>(i);
-
void swap(CSensoryFrame &sf)
Efficiently swaps the contents of two objects.
Protected Functions
-
void internal_buildAuxPointsMap(const void *options = nullptr) const
Internal method, used from buildAuxPointsMap()
Protected Attributes
-
std::deque<CObservation::Ptr> m_observations
The set of observations taken at the same time instant. See the top of this page for instructions on accessing this.
-
mutable mrpt::maps::CMetricMap::Ptr m_cachedMap
A point cloud map, build only under demand by the methods getAuxPointsMap() and buildAuxPointsMap(). It’s a generic smart pointer to avoid depending here in the library mrpt-obs on classes on other libraries.