AGX Dynamics 2.42.3.0
Loading...
Searching...
No Matches
agxSensor::RtOutputHandler Class Reference

Raytrace result handler is resposible for when and how the raytracing starts and ends and collecting/fetching data. More...

#include <RaytraceOutputHandler.h>

+ Inheritance diagram for agxSensor::RtOutputHandler:

Public Types

enum  RuntimeFlag : agx::UInt32 { RAYTRACING = 1 << 0 , FETCHING_DATA = 1 << 1 , RESTORED = 1 << 2 }
 
using RuntimeState = agx::AtomicState< RuntimeFlag >
 

Public Member Functions

 RtOutputHandler ()
 Default constructor.
 
template<typename T , RtOutput::Field... field>
RtOutput * add ()
 Build matching result to a given data type T.
 
bool add (RtOutputNoise *noise)
 Add output noise instance to the system tree.
 
bool add (size_t uniqueId, RtOutput *output)
 Add raytrace result given unique id, e.g., RtOutput::getTypeHash<MyData>().
 
bool contains (const RtOutputNoise *noise) const
 
template<typename T >
RtOutput * get ()
 Access added result instance for the given data type T.
 
RtOutput * get (size_t uniqueId)
 Access result instance given the unique id used when it was added.
 
agx::UInt32 getAmbientHitSeed () const
 
ISensorOutput * getBase (size_t uniqueId) override
 Access result instance given the unique id used when it was added.
 
bool getEnableRemoveRayMisses () const
 
RtOutputNoiseRefVector getOutputNoises () const
 
size_t getRaytraceDepth () const
 
bool remove (RtOutputNoise *noise)
 Remove output noise instance from the system tree.
 
void setAmbientHitSeed (agx::UInt32 seed=783u)
 Set the seed used to configure the pseudo-random generation the ambient/atmospheric hits.
 
void setEnableRemoveRayMisses (bool enable)
 Enable/disable pruning of data for rays that doesn't hit any target.
 
void setRaytraceDepth (size_t steps=1)
 Configure the number of maximum raytrace steps.
 
template<typename T >
BinaryOutputView< T > view ()
 Directly access an output view of the raytrace output instance using a hash of the type with which it was registered.
 
- Public Member Functions inherited from agxSensor::RtSystemNode
virtual ~RtSystemNode ()=default
 
virtual bool addNotification () override
 Called when this system node has been added to a sensor environment.
 
virtual void cleanup () override
 The sensor environment is being put down, clean everything.
 
template<typename T >
RtSystemNode * findChildProxyFor () const
 
RtNode * getNode () const
 
RtNode * getOrCreateNode ()
 Called when the node is required.
 
virtual void onChildAdded (SystemNode &child) override
 Called when child has been added to this parent.
 
virtual void onChildRemoved (SystemNode &child) override
 Called when child has been removed from this parent.
 
virtual void onParentConnect (RtSystemNode &parent)
 Called when getOrCreateNode() returns nullptr when this node is being added as child to parent.
 
virtual void onParentDisconnect (RtSystemNode &parent)
 Called when getNode() returns nullptr when this node is being removed from its parent.
 
- Public Member Functions inherited from agxSensor::SystemNode
 SystemNode (const SystemNode &)=delete
 Disallow direct copying of nodes.
 
virtual ~SystemNode ()=default
 
bool addChild (SystemNode *child)
 Add unique child to this node.
 
virtual bool addNotification ()
 Called when this system node has been added to a sensor environment.
 
bool appendChild (SystemNode *child)
 Append child to vector of children, silently.
 
virtual void cleanup ()=0
 The sensor environment is being put down, clean everything.
 
virtual void complete ()
 Complete the execution of this system, finishing the integration forward in time.
 
bool detachChild (SystemNode *child)
 Detach/erase child from vector of children, silently.
 
virtual bool eraseAndConnect ()
 Erase this node from the tree and connect its children to the current parent of this node.
 
virtual void execute (const CallbackData &data)
 Execute this system, integrating it data.dt forward in time.
 
template<typename T >
T * findChild (bool recurse=true) const
 Find child of given type.
 
template<typename PredicateT >
SystemNode * findChild (PredicateT pred, bool recurse=true) const
 Find child given predicate pred.
 
template<typename T >
T * findParent () const
 
template<typename PredicateT >
SystemNode * findParent (PredicateT pred) const
 Find parent given predicate.
 
template<typename T >
T * getChild () const
 Searches children for a node of given type.
 
SystemNode * getChild (size_t index) const
 
bool getEnable () const
 
Environment * getEnvironment () const
 
const agx::Name & getName () const
 
size_t getNumChildren () const
 
SystemNode * getParent () const
 
SystemNode * getRoot () const
 
bool hasChild (const SystemNode *child, bool recurse=true) const
 
virtual bool insertParent (SystemNode &parent)
 Inserts new parent to this node.
 
virtual bool onAdd (agx::Referenced &instance)
 Called when an object has been added to the sensor environment.
 
virtual void onChildAdded (SystemNode &child)
 Called when child has been added to this parent.
 
virtual void onChildRemoved (SystemNode &child)
 Called when child has been removed from this parent.
 
virtual bool onRemove (agx::Referenced &instance)
 Called when an object has been removed from the sensor environment.
 
bool removeChild (SystemNode *child)
 Remove child from this node.
 
virtual void removeNotification ()
 Called when this system node is being removed from a sensor environment.
 
virtual void result (const CallbackData &data)
 If necessary assemble, and fetch results related to this system node after a step by data.dt has been completed.
 
void setEnable (bool enable)
 Enable/disable this node.
 
void setName (const agx::Name &name)
 Assign name to this node.
 
virtual void synchronize (const CallbackData &data)
 Synchronization from the main thread.
 
virtual void synchronizeGraphics (const agxRender::RenderManager &renderManager)
 At the very end of a step, synchronize any graphics related aspects of the system node.
 
template<typename VisitorT >
SystemNode * visitBf (VisitorT visitor) const
 Visit the tree from, including, this node until callback returns true - using breadth first traversal.
 
template<typename VisitorT >
void visitChildren (VisitorT visitor, bool recurse=true) const
 Visit all children with func as void( const SystemNode& child ).
 
template<typename VisitorT >
SystemNode * visitChildrenBf (VisitorT visitor) const
 Visit the tree from the children of this node until callback returns true - using breadth first traversal.
 
template<typename VisitorT >
SystemNode * visitChildrenDf (VisitorT visitor) const
 Visit the tree from the children of this node until callback returns true - using depth first traversal.
 
template<typename T , typename VisitorT >
void visitChildrenOfType (VisitorT visitor, bool recurse=true) const
 Visit all children with func as void( const T& child ).
 
template<typename VisitorT >
SystemNode * visitDf (VisitorT visitor) const
 Visit the tree from, including, this node until callback returns true - using depth first traversal.
 
- Public Member Functions inherited from agx::Referenced
 Referenced ()
 Default constructor.
 
 Referenced (const Referenced &)
 
template<typename T >
T * as ()
 Subclass casting.
 
template<typename T >
const T * as () const
 
template<typename T >
T * asSafe ()
 Safe subclass casting, return nullptr if template type does not match.
 
template<typename T >
const T * asSafe () const
 
int getReferenceCount () const
 
template<typename T >
bool is () const
 Subclass test.
 
Referenced & operator= (const Referenced &)
 Assignment operator. Will increment the number of references to the referenced object.
 
void reference (void *ptr=nullptr) const
 Explicitly increment the reference count by one, indicating that this object has another pointer which is referencing it.
 
void unreference (void *ptr=nullptr) const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 
void unreference_nodelete () const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 
- Public Member Functions inherited from agxStream::Serializable
virtual ~Serializable ()
 Destructor for normal C++ use but hidden from SWIG bindings.
 
virtual const char * getClassName () const
 
bool getEnableSerialization () const
 
bool getEnableUuidGeneration ()
 
agx::UInt32 getIndex () const
 This index is given at creation of this object.
 
virtual StorageAgent * getStorageAgent () const =0
 
agx::Uuid getUuid () const
 
bool isFinished () const
 
void setEnableSerialization (bool flag)
 Set to false to disable serialization of this object.
 
void setFinished ()
 Tells this class that it is restored correctly and should not be deleted during destruction of an Archive.
 
void setUuid (const agx::Uuid &uuid)
 Explicitly set a Uuid on a serializable object.
 
- Public Member Functions inherited from agxSensor::ISensorOutputHandler
 ISensorOutputHandler ()=default
 Default constructor.
 
ISensorOutput * get (size_t uniqueId)
 Access sensor output instance given the unique id from when it was added.
 
virtual ISensorOutput * getBase (size_t uniqueId)=0
 Access sensor output instance given the unique id from when it was added.
 
template<typename T >
BinaryOutputView< T > view (size_t uniqueId)
 Directly access an output view of the sensor output instance given the unique id from when it was added.
 

Additional Inherited Members

- Static Public Member Functions inherited from agx::Referenced
template<typename T >
static bool ValidateCast (const Referenced *object)
 
- Static Public Member Functions inherited from agxStream::Serializable
static void setEnableUuidGeneration (bool flag)
 Specify if there should be UUID:s generated for each new Serializable object. By default it is enabled.
 
- Protected Member Functions inherited from agx::Referenced
virtual ~Referenced ()
 Destructor.
 
void allocateObserverVector () const
 
void deleteUsingDeleteHandler () const
 
- Protected Member Functions inherited from agxStream::Serializable
 Serializable ()
 Default constructor.
 
 Serializable (const Serializable &other)
 Copy constructor.
 
void generateUuid ()
 
- Static Protected Member Functions inherited from agx::Referenced
static DeleteHandler * getDeleteHandler ()
 
static void setDeleteHandler (DeleteHandler *handler)
 Internal: Set a DeleteHandler to which deletion of all referenced counted objects will be delegated to.
 
- Protected Attributes inherited from agxSensor::RtSystemNode
RtNode * m_node { nullptr }
 
- Protected Attributes inherited from agx::Referenced
Mutex m_mutex
 
ObserverContainer m_observers
 
AtomicValue m_refCount
 

Detailed Description

Raytrace result handler is resposible for when and how the raytracing starts and ends and collecting/fetching data.

Definition at line 34 of file RaytraceOutputHandler.h.

Member Typedef Documentation

◆ RuntimeState

Definition at line 44 of file RaytraceOutputHandler.h.

Member Enumeration Documentation

◆ RuntimeFlag

Enumerator
RAYTRACING 
FETCHING_DATA 
RESTORED 

Definition at line 37 of file RaytraceOutputHandler.h.

Constructor & Destructor Documentation

◆ RtOutputHandler()

agxSensor::RtOutputHandler::RtOutputHandler ( )

Default constructor.

Member Function Documentation

◆ add() [1/3]

template<typename T , RtOutput::Field... field>
RtOutput * agxSensor::RtOutputHandler::add

Build matching result to a given data type T.

This method verifies the size of the sum of data fields matches the size of T. The created RtOutput returned from this method can later be accessed using get<T>().

Returns
created instance if successful (matching size), otherwise nullptr

Definition at line 246 of file RaytraceOutputHandler.h.

References add().

Referenced by add().

◆ add() [2/3]

bool agxSensor::RtOutputHandler::add ( RtOutputNoise *  noise)

Add output noise instance to the system tree.

Parameters
noise- output noise to add to the system tree
Returns
true if added successfully, false if nullptr or already added

◆ add() [3/3]

bool agxSensor::RtOutputHandler::add ( size_t  uniqueId,
RtOutput *  output 
)

Add raytrace result given unique id, e.g., RtOutput::getTypeHash<MyData>().

The resulting data of a raytrace is accessed through the given result instance.

Parameters
uniqueId- unique id > 0, id 0 is reserved and invalid to use
output- output instance to add
Returns
true if uniqueId > 0, result != nullptr and uniqueId is unique

◆ contains()

bool agxSensor::RtOutputHandler::contains ( const RtOutputNoise *  noise) const
Parameters
noise- noise instance to check if present and active
Returns
true if noise is part of this output handler

◆ get() [1/2]

template<typename T >
RtOutput * agxSensor::RtOutputHandler::get

Access added result instance for the given data type T.

E.g., handler->add<MyData, ...>() == handler->get<MyData>().

Returns
the result instance for the given type T if it exists, otherwise nullptr

Definition at line 261 of file RaytraceOutputHandler.h.

References get().

Referenced by get().

◆ get() [2/2]

RtOutput * agxSensor::RtOutputHandler::get ( size_t  uniqueId)

Access result instance given the unique id used when it was added.

Parameters
uniqueId- unique id for the result instance
Returns
result instance for the given unique id if it exists, otherwise nullptr

◆ getAmbientHitSeed()

agx::UInt32 agxSensor::RtOutputHandler::getAmbientHitSeed ( ) const
Returns
the seed used to configure the pseudo-random generation the ambient/atmospheric hits.

◆ getBase()

ISensorOutput * agxSensor::RtOutputHandler::getBase ( size_t  uniqueId)
overridevirtual

Access result instance given the unique id used when it was added.

Parameters
uniqueId- unique id for the result instance
Returns
result instance for the given unique id if it exists, otherwise nullptr

Implements agxSensor::ISensorOutputHandler.

◆ getEnableRemoveRayMisses()

bool agxSensor::RtOutputHandler::getEnableRemoveRayMisses ( ) const
Returns
true if data from rays that misses any target is removed, false and the output data is one to one with the number of rays from the lidar.

◆ getOutputNoises()

RtOutputNoiseRefVector agxSensor::RtOutputHandler::getOutputNoises ( ) const
Returns
all added and active output noises

◆ getRaytraceDepth()

size_t agxSensor::RtOutputHandler::getRaytraceDepth ( ) const
Returns
current number of maximum raytrace steps.

◆ remove()

bool agxSensor::RtOutputHandler::remove ( RtOutputNoise *  noise)

Remove output noise instance from the system tree.

The noise will no longer be applied to the output data if removed successfully.

Parameters
noise- noise to remove
Returns
true if removed successfully, false if nullptr or not part of this system tree

◆ setAmbientHitSeed()

void agxSensor::RtOutputHandler::setAmbientHitSeed ( agx::UInt32  seed = 783u)

Set the seed used to configure the pseudo-random generation the ambient/atmospheric hits.

Parameters
seed- value to seed the pseudo-random generator with

◆ setEnableRemoveRayMisses()

void agxSensor::RtOutputHandler::setEnableRemoveRayMisses ( bool  enable)

Enable/disable pruning of data for rays that doesn't hit any target.

This is enabled by default to minimize the output data.

Parameters
enable- true to enable pruning of data from ray that doesn't hit, false to have data one to one with the number of rays but RtOutput::IS_HIT_I32 or similar has to be checked instead.

◆ setRaytraceDepth()

void agxSensor::RtOutputHandler::setRaytraceDepth ( size_t  steps = 1)

Configure the number of maximum raytrace steps.

The number of steps is one more than the number of bounces a ray will make, however, this number will generally not affect the size of the output data. It should be noted that the time and memory complexity of the raytrace will grow exponentially with the maximum number of raytrace steps.

Parameters
steps- maximum number of steps a ray will trace.

◆ view()

template<typename T >
BinaryOutputView< T > agxSensor::RtOutputHandler::view

Directly access an output view of the raytrace output instance using a hash of the type with which it was registered.

Returns
output view of the raytrace output if an output with the given type exists and if the view type aligns with the data, otherwise an empty output view is returned

Definition at line 267 of file RaytraceOutputHandler.h.


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