Simox  2.3.74.0
VirtualRobot::Sensor Class Referenceabstract
Inheritance diagram for VirtualRobot::Sensor:
VirtualRobot::SceneObject VirtualRobot::CameraSensor VirtualRobot::ContactSensor VirtualRobot::ForceTorqueSensor VirtualRobot::PositionSensor

Public Member Functions

EIGEN_MAKE_ALIGNED_OPERATOR_NEW Sensor (GraspableSensorizedObjectWeakPtr parentNode, const std::string &name, VisualizationNodePtr visualization=VisualizationNodePtr(), const Eigen::Matrix4f &rnTrafo=Eigen::Matrix4f::Identity())
 
 ~Sensor () override
 
RobotNodePtr getRobotNode () const
 
GraspableSensorizedObjectPtr getParentNode () const
 
virtual Eigen::Matrix4f getParentNodeToSensorTransformation ()
 
virtual void setRobotNodeToSensorTransformation (const Eigen::Matrix4f &t)
 
void setGlobalPose (const Eigen::Matrix4f &pose) override
 
void print (bool printChildren=false, bool printDecoration=true) const override
 
virtual SensorPtr clone (GraspableSensorizedObjectPtr newNode, float scaling=1.0f)
 
SceneObjectPtr clone (const std::string &, CollisionCheckerPtr=CollisionCheckerPtr(), float=1.0f) const
 Forbid cloning method from SceneObject. We need to know the new parent node for cloning. More...
 
void updatePose (bool updateChildren=true) override
 
bool initialize (SceneObjectPtr parent=SceneObjectPtr(), const std::vector< SceneObjectPtr > &children=std::vector< SceneObjectPtr >()) override
 
virtual std::string toXML (const std::string &modelPath, int tabs=1)
 
- Public Member Functions inherited from VirtualRobot::SceneObject
 SceneObject (const std::string &name, VisualizationNodePtr visualization=VisualizationNodePtr(), CollisionModelPtr collisionModel=CollisionModelPtr(), const Physics &p=Physics(), CollisionCheckerPtr colChecker=CollisionCheckerPtr())
 
virtual ~SceneObject ()
 
std::string getName () const
 
void setName (const std::string &name)
 
virtual Eigen::Matrix4f getGlobalPose () const
 
virtual Eigen::Vector3f getGlobalPosition () const
 
virtual Eigen::Matrix3f getGlobalOrientation () const
 
virtual Eigen::Matrix4f getGlobalPose (const Eigen::Matrix4f &localPose) const
 
virtual Eigen::Vector3f getGlobalPosition (const Eigen::Vector3f &localPosition) const
 
virtual Eigen::Vector3f getGlobalDirection (const Eigen::Vector3f &localDircetion) const
 
virtual Eigen::Matrix3f getGlobalOrientation (const Eigen::Matrix3f &localOrientation) const
 
virtual void setGlobalPoseNoChecks (const Eigen::Matrix4f &pose)
 
virtual CollisionModelPtr getCollisionModel ()
 
virtual CollisionCheckerPtr getCollisionChecker ()
 
void setVisualization (VisualizationNodePtr visualization)
 
void setCollisionModel (CollisionModelPtr colModel)
 
virtual VisualizationNodePtr getVisualization (SceneObject::VisualizationType visuType=SceneObject::Full)
 
virtual void setUpdateVisualization (bool enable)
 
bool getUpdateVisualizationStatus ()
 
virtual void setUpdateCollisionModel (bool enable)
 
bool getUpdateCollisionModelStatus ()
 
virtual void setupVisualization (bool showVisualization, bool showAttachedVisualizations)
 
virtual void showCoordinateSystem (bool enable, float scaling=1.0f, std::string *text=NULL, const std::string &visualizationType="")
 
virtual void showPhysicsInformation (bool enableCoM, bool enableInertial, VisualizationNodePtr comModel=VisualizationNodePtr())
 
virtual bool showCoordinateSystemState ()
 
virtual void showBoundingBox (bool enable, bool wireframe=false)
 
virtual bool ensureVisualization (const std::string &visualizationType="")
 
Eigen::Matrix4f toLocalCoordinateSystem (const Eigen::Matrix4f &poseGlobal) const
 
Eigen::Vector3f toLocalCoordinateSystemVec (const Eigen::Vector3f &positionGlobal) const
 
Eigen::Matrix4f toGlobalCoordinateSystem (const Eigen::Matrix4f &poseLocal) const
 
Eigen::Vector3f toGlobalCoordinateSystemVec (const Eigen::Vector3f &positionLocal) const
 
Eigen::Matrix4f getTransformationTo (const SceneObjectPtr otherObject) const
 
Eigen::Matrix4f getTransformationFrom (const SceneObjectPtr otherObject) const
 
Eigen::Matrix4f transformTo (const SceneObjectPtr otherObject, const Eigen::Matrix4f &poseInOtherCoordSystem)
 
Eigen::Vector3f transformTo (const SceneObjectPtr otherObject, const Eigen::Vector3f &positionInOtherCoordSystem)
 
virtual int getNumFaces (bool collisionModel=false)
 
virtual Eigen::Vector3f getCoMLocal ()
 
void setCoMLocal (const Eigen::Vector3f &comLocal)
 Set a new position for the CoM of this bode. More...
 
virtual Eigen::Vector3f getCoMGlobal ()
 
float getMass () const
 
void setMass (float m)
 
Physics::SimulationType getSimulationType () const
 
void setSimulationType (Physics::SimulationType s)
 
Eigen::Matrix3f getInertiaMatrix ()
 
Eigen::Matrix3f getInertiaMatrix (const Eigen::Vector3f &shift)
 If the Inertia Matrix is given at the CoM, this function returns the Inertia Matrix at the parallel shifted coordinate system. The shift is done using the parallel axis theorem (https://en.wikipedia.org/wiki/Parallel_axis_theorem) More...
 
Eigen::Matrix3f getInertiaMatrix (const Eigen::Vector3f &shift, const Eigen::Matrix3f &rotation)
 
Eigen::Matrix3f getInertiaMatrix (const Eigen::Matrix4f &transform)
 
void setInertiaMatrix (const Eigen::Matrix3f &im)
 
float getFriction ()
 
void setFriction (float friction)
 
SceneObject::Physics getPhysics ()
 
std::vector< std::string > getIgnoredCollisionModels ()
 
template<typename T >
std::shared_ptr< T > getVisualization (SceneObject::VisualizationType visuType=SceneObject::Full)
 
void highlight (VisualizationPtr visualization, bool enable)
 
SceneObjectPtr clone (const std::string &name, CollisionCheckerPtr colChecker=CollisionCheckerPtr(), float scaling=1.0f) const
 
SceneObjectPtr clone (CollisionCheckerPtr colChecker=CollisionCheckerPtr(), float scaling=1.0f) const
 
virtual bool attachChild (SceneObjectPtr child)
 
virtual void detachChild (SceneObjectPtr child)
 
virtual bool hasChild (SceneObjectPtr child, bool recursive=false) const
 
virtual bool hasChild (const std::string &childName, bool recursive=false) const
 
virtual bool hasParent () const
 
virtual SceneObjectPtr getParent () const
 
virtual std::vector< SceneObjectPtrgetChildren () const
 
virtual void copyPoseFrom (const SceneObjectPtr &other)
 
virtual bool saveModelFiles (const std::string &modelPath, bool replaceFilenames)
 
void setScaling (float scaling)
 
float getScaling ()
 
bool reloadVisualizationFromXML (bool useVisAsColModelIfMissing=true)
 
const std::string & getVisualizationModelXML () const
 

Protected Member Functions

void updatePose (const Eigen::Matrix4f &parentPose, bool updateChildren=true) override
 
 Sensor ()
 
virtual SensorPtr _clone (const GraspableSensorizedObjectPtr newNode, const VisualizationNodePtr visualizationModel, float scaling)=0
 
SceneObject_clone (const std::string &, CollisionCheckerPtr=CollisionCheckerPtr(), float=1.0f) const override
 
- Protected Member Functions inherited from VirtualRobot::SceneObject
virtual void detachedFromParent ()
 Parent detached this object. More...
 
virtual void attached (SceneObjectPtr parent)
 Parent attached this object. More...
 
std::string getFilenameReplacementVisuModel (const std::string standardExtension=".wrl")
 
std::string getFilenameReplacementColModel (const std::string standardExtension=".wrl")
 
 SceneObject ()
 
std::string getSceneObjectXMLString (const std::string &basePath, int tabs, const std::string &modelPathRelative="")
 basic data, used by Obstacle and ManipulationObject More...
 
virtual bool initializePhysics ()
 

Protected Attributes

Eigen::Matrix4f rnTransformation
 
GraspableSensorizedObjectWeakPtr parentNode
 
- Protected Attributes inherited from VirtualRobot::SceneObject
std::string name
 
bool initialized
 
Eigen::Matrix4f globalPose
 
std::vector< SceneObjectPtrchildren
 
SceneObjectWeakPtr parent
 
CollisionModelPtr collisionModel
 
std::string collisionModelXML
 
VisualizationNodePtr visualizationModel
 
std::string visualizationModelXML
 
std::filesystem::path basePath
 
bool updateVisualization
 
bool updateCollisionModel
 
Physics physics
 
CollisionCheckerPtr collisionChecker
 
float scaling = 1.0f
 

Friends

class Robot
 
class RobotIO
 

Additional Inherited Members

- Public Types inherited from VirtualRobot::SceneObject
enum  VisualizationType { Full, Collision, CollisionData }
 
- Static Public Member Functions inherited from VirtualRobot::SceneObject
static Eigen::Matrix3f shiftInertia (const Eigen::Matrix3f inertiaMatrix, const Eigen::Vector3f &shift, float mass)
 The shift is done using the parallel axis theorem (https://en.wikipedia.org/wiki/Parallel_axis_theorem) More...
 

Detailed Description

A sensor can be attached to a GraspableSensorizedObject.

Constructor & Destructor Documentation

◆ Sensor() [1/2]

VirtualRobot::Sensor::Sensor ( GraspableSensorizedObjectWeakPtr  parentNode,
const std::string &  name,
VisualizationNodePtr  visualization = VisualizationNodePtr(),
const Eigen::Matrix4f &  rnTrafo = Eigen::Matrix4f::Identity() 
)

Constructor with settings.

◆ ~Sensor()

VirtualRobot::Sensor::~Sensor ( )
overridedefault

◆ Sensor() [2/2]

VirtualRobot::Sensor::Sensor ( )
inlineprotected

Member Function Documentation

◆ _clone() [1/2]

virtual SensorPtr VirtualRobot::Sensor::_clone ( const GraspableSensorizedObjectPtr  newNode,
const VisualizationNodePtr  visualizationModel,
float  scaling 
)
protectedpure virtual

Derived classes must implement their clone method here. The visualization is already scaled, the kinematic information (i.e. transformations) have to be scaled by derived implementations.

Implemented in VirtualRobot::ContactSensor, VirtualRobot::ForceTorqueSensor, VirtualRobot::CameraSensor, and VirtualRobot::PositionSensor.

◆ _clone() [2/2]

SceneObject* VirtualRobot::Sensor::_clone ( const std::string &  ,
CollisionCheckerPtr  = CollisionCheckerPtr(),
float  = 1.0f 
) const
inlineoverrideprotectedvirtual

Reimplemented from VirtualRobot::SceneObject.

◆ clone() [1/2]

SensorPtr VirtualRobot::Sensor::clone ( GraspableSensorizedObjectPtr  newNode,
float  scaling = 1.0f 
)
virtual

Clone this Sensor.

Parameters
newNodeThe newly created Sensor belongs to newNode.
scalingScales the visualization and transformation data.

◆ clone() [2/2]

SceneObjectPtr VirtualRobot::Sensor::clone ( const std::string &  ,
CollisionCheckerPtr  = CollisionCheckerPtr(),
float  = 1.0f 
) const
inline

Forbid cloning method from SceneObject. We need to know the new parent node for cloning.

◆ getParentNode()

GraspableSensorizedObjectPtr VirtualRobot::Sensor::getParentNode ( ) const

◆ getParentNodeToSensorTransformation()

virtual Eigen::Matrix4f VirtualRobot::Sensor::getParentNodeToSensorTransformation ( )
inlinevirtual

The transformation that specifies the pose of the sensor relatively to the pose of the parent node.

◆ getRobotNode()

RobotNodePtr VirtualRobot::Sensor::getRobotNode ( ) const

returns the parent as robot node if it is a robot node otherwise a nullptr

◆ initialize()

bool VirtualRobot::Sensor::initialize ( SceneObjectPtr  parent = SceneObjectPtr(),
const std::vector< SceneObjectPtr > &  children = std::vector<SceneObjectPtr>() 
)
overridevirtual

Initialize this object. Optionally the parents and children can be specified.

Reimplemented from VirtualRobot::SceneObject.

◆ print()

void VirtualRobot::Sensor::print ( bool  printChildren = false,
bool  printDecoration = true 
) const
overridevirtual

Print status information.

Reimplemented from VirtualRobot::SceneObject.

◆ setGlobalPose()

void VirtualRobot::Sensor::setGlobalPose ( const Eigen::Matrix4f &  pose)
overridevirtual

Calling this SceneObject method will cause an exception, since Sensors are controlled via their node parent.

Reimplemented from VirtualRobot::SceneObject.

◆ setRobotNodeToSensorTransformation()

void VirtualRobot::Sensor::setRobotNodeToSensorTransformation ( const Eigen::Matrix4f &  t)
virtual

Set the local transformation.

◆ toXML()

std::string VirtualRobot::Sensor::toXML ( const std::string &  modelPath,
int  tabs = 1 
)
virtual

◆ updatePose() [1/2]

void VirtualRobot::Sensor::updatePose ( bool  updateChildren = true)
overridevirtual

Compute/Update the transformations of this sensor. Therefore the parent is queried for its pose.

Reimplemented from VirtualRobot::SceneObject.

◆ updatePose() [2/2]

void VirtualRobot::Sensor::updatePose ( const Eigen::Matrix4f &  parentPose,
bool  updateChildren = true 
)
overrideprotectedvirtual

Update the pose according to parent pose

Reimplemented from VirtualRobot::SceneObject.

Friends And Related Function Documentation

◆ Robot

friend class Robot
friend

◆ RobotIO

friend class RobotIO
friend

Field Documentation

◆ parentNode

GraspableSensorizedObjectWeakPtr VirtualRobot::Sensor::parentNode
protected

◆ rnTransformation

Eigen::Matrix4f VirtualRobot::Sensor::rnTransformation
protected