$darkmode
cloe::ObjectSensorFilterMap Class Reference

#include <object_sensor_functional.hpp>

Inheritance diagram for cloe::ObjectSensorFilterMap:
Collaboration diagram for cloe::ObjectSensorFilterMap:

Public Member Functions

 ObjectSensorFilterMap (const std::string &name, std::shared_ptr< ObjectSensor > obs, ObjectFilterMap f)
 
const Objectssensed_objects () const override
 
const Frustumfrustum () const override
 
const Eigen::Isometry3d & mount_pose () const override
 
Duration process (const Sync &sync) override
 
void reset () override
 
void abort () override
 
- Public Member Functions inherited from cloe::ObjectSensor
fable::Json active_state () const override
 
 Component (const std::string &name, const std::string &description="")
 
 Component (std::string &&name, std::string &&description="")
 
- Public Member Functions inherited from cloe::Component
 Component (const std::string &name, const std::string &description="")
 
 Component (std::string &&name, std::string &&description="")
 
uint64_t id () const
 
template<typename T >
T * as ()
 
Duration process (const Sync &sync) override
 
void reset () override
 
void abort () override
 
- Public Member Functions inherited from cloe::Model
virtual ~Model () noexcept=default
 
virtual Duration resolution () const
 
virtual bool is_connected () const
 
virtual bool is_operational () const
 
virtual void connect ()
 
virtual void disconnect ()
 
virtual void enroll (Registrar &)
 
virtual void start (const Sync &)
 
virtual void pause (const Sync &)
 
virtual void resume (const Sync &)
 
virtual void stop (const Sync &)
 
 Entity (std::string name)
 
 Entity (std::string name, std::string desc)
 
- Public Member Functions inherited from cloe::Entity
 Entity (std::string name)
 
 Entity (std::string name, std::string desc)
 
const std::string & name () const
 
void set_name (std::string name)
 
const std::string & description () const
 
void set_description (std::string desc)
 

Protected Member Functions

virtual void clear_cache ()
 
- Protected Member Functions inherited from cloe::Entity
virtual Logger logger () const
 

Protected Attributes

bool cached_
 
Objects objects_
 
std::shared_ptr< ObjectSensorsensor_
 
ObjectFilterMap map_func_
 
- Protected Attributes inherited from cloe::Model
bool connected_ {false}
 
bool operational_ {false}
 
- Protected Attributes inherited from cloe::Entity
std::string name_
 
std::string desc_
 

Detailed Description

ObjectSensorFilterMap filters and maps objects from an ObjectSensor, and can be used in place of the original ObjectSensor.

This class can be used in a very functional way, and the use of C++11 lambdas is highly highly recommended!

Warning: Do not rely on volatile state that can change within a step for the filter function. This ObjectSensor filter class caches the resulting vector of filtered objects till clear_cache is called.

Member Function Documentation

◆ abort()

void cloe::ObjectSensorFilterMap::abort ( )
inlineoverridevirtual

Signal an abort to model processing.

This method is called asynchronously. It is highly recommended to make use of a std::atomic_bool for purposes of making the abortion request known to other parts of the model. This method is called when the user requests the simulation to be aborted, e.g., by sending the SIGINT signal.

An abort will be followed by a stop if the simulation was started.

The default implementation will throw an error. This will be caught and possibly ignored. Otherwise, the simulation will be killed.

See also
cloe/core/abort.hpp

Reimplemented from cloe::Model.

Here is the call graph for this function:

◆ frustum()

const Frustum& cloe::ObjectSensorFilterMap::frustum ( ) const
inlineoverridevirtual

Return the frustum of the object sensor.

Implements cloe::ObjectSensor.

◆ mount_pose()

const Eigen::Isometry3d& cloe::ObjectSensorFilterMap::mount_pose ( ) const
inlineoverridevirtual

Return the mounting position of the object sensor.

Implements cloe::ObjectSensor.

◆ process()

Duration cloe::ObjectSensorFilterMap::process ( const Sync sync)
inlineoverridevirtual

Process the underlying sensor and clear the cache.

We could process and create the filtered list of objects now, but we can also delay it (lazy computation) and only do it when absolutely necessary. This comes at the minor cost of checking whether cached_ is true every time sensed_objects() is called.

Implements cloe::Model.

Here is the call graph for this function:

◆ reset()

void cloe::ObjectSensorFilterMap::reset ( )
inlineoverridevirtual

Reset the model state.

This is called when Cloe is asked to reset the whole simulation to time 0. This can be the case when the simulator or a controller asks us to recover from a temporary problem without repeating the whole simulation setup.

The default implementation will raise an error. So if your model is not able to re-initialize, the simulation will be aborted.

Reimplemented from cloe::Model.

Here is the call graph for this function:

◆ sensed_objects()

const Objects& cloe::ObjectSensorFilterMap::sensed_objects ( ) const
inlineoverridevirtual

Return the sensed world objects, whether dynamic or static. "World" in this case means the environment. These may be fused or from an individual sensor.

  • The returned pointer is invalid after ClearCache is called.
  • The ObjectSensor that returns the pointer manages the memory.
  • The returned objects have the origin of center-rear axle.

Implements cloe::ObjectSensor.


The documentation for this class was generated from the following file: