$darkmode
#include <object_sensor_functional.hpp>
Public Member Functions | |
| ObjectSensorFilterMap (const std::string &name, std::shared_ptr< ObjectSensor > obs, ObjectFilterMap f) | |
| const Objects & | sensed_objects () const override |
| const Frustum & | frustum () 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< ObjectSensor > | sensor_ |
| 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_ |
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.
|
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.
Reimplemented from cloe::Model.
|
inlineoverridevirtual |
Return the frustum of the object sensor.
Implements cloe::ObjectSensor.
|
inlineoverridevirtual |
Return the mounting position of the object sensor.
Implements cloe::ObjectSensor.
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.
|
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.
|
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.
Implements cloe::ObjectSensor.