H3D API  2.4.1
Classes | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
H3D::ClutchedDevice Class Reference

ClutchedDevice is a wrapper for a H3DHapticsDevice which adds clutching functionality. More...

#include <H3D/ClutchedDevice.h>

Inheritance diagram for H3D::ClutchedDevice:
Inheritance graph

Classes

class  EnableClutch
 Enables/Disbles the clutching. More...
 
class  ResetClutchOrientation
 If True, resets the orientation offset due to clutching. More...
 
class  ResetClutchPosition
 If True, resets the position offset due to clutching. More...
 

Public Member Functions

 ClutchedDevice (Inst< SFVec3f > _devicePosition=0, Inst< SFRotation > _deviceOrientation=0, Inst< TrackerPosition > _trackerPosition=0, Inst< TrackerOrientation > _trackerOrientation=0, Inst< SFMatrix4f > _positionCalibration=0, Inst< SFRotation > _orientationCalibration=0, Inst< SFVec3f > _proxyPosition=0, Inst< WeightedProxy > _weightedProxyPosition=0, Inst< SFFloat > _proxyWeighting=0, Inst< SFBool > _mainButton=0, Inst< SFBool > _secondaryButton=0, Inst< SFInt32 > _buttons=0, Inst< SFVec3f > _force=0, Inst< SFVec3f > _torque=0, Inst< SFInt32 > _inputDOF=0, Inst< SFInt32 > _outputDOF=0, Inst< SFInt32 > _hapticsRate=0, Inst< SFInt32 > _desiredHapticsRate=0, Inst< SFNode > _stylus=0, Inst< SFHapticsDevice > _hapticsDevice=0, Inst< EnableClutch > _enableClutch=0, Inst< ResetClutchOrientation > _resetClutchOrientation=0, Inst< ResetClutchPosition > _resetClutchPosition=0, Inst< SFVec3f > _unclutchedPosition=0, Inst< SFRotation > _unclutchedOrientation=0)
 Constructor.
 
virtual void initialize ()
 Initialize the node.
 
virtual ErrorCode initDevice ()
 Does all the initialization needed for the device before starting to use it.
 
virtual ErrorCode releaseDevice ()
 Perform cleanup and let go of all device resources that are allocated. More...
 
virtual void renderShapes (const HapticShapeVector &shapes, unsigned int layer=0)
 Perform haptic rendering for the given HapticShape instances. More...
 
virtual void updateDeviceValues ()
 This function is used to transfer device values, such as position, button status etc from the realtime loop to the fields of H3DHapticsDevice, and possible vice versa.
 
- Public Member Functions inherited from H3D::H3DHapticsDevice
 H3DHapticsDevice (Inst< SFVec3f > _devicePosition=0, Inst< SFRotation > _deviceOrientation=0, Inst< TrackerPosition > _trackerPosition=0, Inst< TrackerOrientation > _trackerOrientation=0, Inst< SFMatrix4f > _positionCalibration=0, Inst< SFRotation > _orientationCalibration=0, Inst< SFVec3f > _proxyPosition=0, Inst< WeightedProxy > _weightedProxyPosition=0, Inst< SFFloat > _proxyWeighting=0, Inst< SFBool > _mainButton=0, Inst< SFBool > _secondaryButton=0, Inst< SFInt32 > _buttons=0, Inst< SFVec3f > _force=0, Inst< SFVec3f > _torque=0, Inst< SFInt32 > _inputDOF=0, Inst< SFInt32 > _outputDOF=0, Inst< SFInt32 > _hapticsRate=0, Inst< SFInt32 > _desiredHapticsRate=0, Inst< SFNode > _stylus=0, Inst< SFHapticsRendererNode > _hapticsRenderer=0, Inst< MFVec3f > _proxyPositions=0, Inst< SFBool > _followViewpoint=0, Inst< SFVec3f > _deviceVelocity=0, Inst< TrackerVelocity > _trackerVelocity=0, Inst< SFString > _profiledResult=0, Inst< SFVec3f > _deviceAngularVelocity=0, Inst< TrackerAngularVelocity > _trackerAngularVelocity=0)
 Constructor.
 
virtual ~H3DHapticsDevice ()
 Destuctor.
 
Vec3f getPreviousProxyPosition (unsigned int layer=0)
 Get the proxy position from the previous loop for a certain layer. More...
 
const vector< Vec3f > & getPreviousProxyPositions ()
 Get all previous proxy positions.
 
virtual string defaultXMLContainerField ()
 Returns the default xml containerField attribute value. More...
 
HAPI::HAPIHapticsDevice * getHAPIDevice ()
 Get the HAPIHapticsDevice that is encapsulated by this node.
 
virtual ErrorCode enableDevice ()
 Enable the device. Positions can be read and force can be sent.
 
virtual ErrorCode disableDevice ()
 Temporarily disable the device. More...
 
H3DUtil::PeriodicThreadBase * getThread ()
 Get the thread that is used to run this haptics device.
 
virtual void postInit ()
 This function is called for all devices in a DeviceInfo node for which the initDevice has been called. More...
 
virtual void preRender ()
 This function is called at the start of each scenegraph loop before any calls to other HapticDevice functions and can be used to perform any necessary operation that are needed for the other calls to function properly.
 
virtual void postRender ()
 This function is called at the end of each scenegraph loop after all calls to other HapticDevice functions and can be used to perform any necessary operation that are needed.
 
virtual void renderStylus ()
 Render the stylus of the device wint OpenGL.
 
virtual void renderEffects (const HapticEffectVector &effects)
 Perform haptic rendering for the given HAPIForceEffect instances. More...
 
- Public Member Functions inherited from H3D::Node
 Node ()
 Constructor.
 
virtual Node * clone (bool deepCopy=true, DeepCopyMap *deepCopyMap=NULL)
 Returns a new instance of this node type with the same state as this one. More...
 
virtual ~Node ()
 Destructor.
 
X3DPrototypeInstance * getProtoInstanceParent ()
 If this node is the root node in the proto body of a X3DPrototypeInstance then this will return that node. More...
 
void setProtoInstanceParent (X3DPrototypeInstance *p)
 Set the X3DPrototypeInstance this node is the the root node if applicaple.
 
virtual void render ()
 the render() function is used for the depth-first rendering traversal of the scene-graph. More...
 
virtual void traverseSG (TraverseInfo &ti)
 traverseSG is called once per scenegraph loop on the scene in order to traverse the scenegraph. More...
 
virtual bool lineIntersect (const Vec3f &from, const Vec3f &to, LineIntersectResult &result)
 Detect intersection between a line segment and the Node. More...
 
virtual void closestPoint (const Vec3f &p, NodeIntersectResult &result)
 Find closest point on Node to p. More...
 
virtual bool movingSphereIntersect (H3DFloat radius, const Vec3f &from, const Vec3f &to, NodeIntersectResult &result)
 Detect collision between a moving sphere and the Node. More...
 
virtual Field * getField (const string &_name) const
 return a pointer to the field specified by name within this instance
 
int addDestructCallback (void(*func)(Node *, void *), void *args)
 Add a callback function to be run on destruction of node. More...
 
int removeDestructCallback (void(*func)(Node *, void *), void *args)
 Add a callback function to be run on destruction of node. More...
 

Public Attributes

H3DUniquePtr< SFHapticsDevice > hapticsDevice
 The wrapped haptics device to clutch. More...
 
H3DUniquePtr< EnableClutch > enableClutch
 Enable and disable the clutch. More...
 
H3DUniquePtr< ResetClutchOrientation > resetClutchOrientation
 Reset clutch orientation. More...
 
H3DUniquePtr< ResetClutchPosition > resetClutchPosition
 Reset clutch position. More...
 
H3DUniquePtr< SFVec3f > unclutchedPosition
 The position ignoring clutching. More...
 
H3DUniquePtr< SFRotation > unclutchedOrientation
 The orientation ignoring clutching. More...
 
- Public Attributes inherited from H3D::H3DHapticsDevice
H3DUniquePtr< SFVec3f > devicePosition
 The position of the device given in the coordinate system of the device. More...
 
H3DUniquePtr< SFRotation > deviceOrientation
 The orientation of the device given in the coordinate system of the device. More...
 
H3DUniquePtr< TrackerPosition > trackerPosition
 The position of the device in the world coordinates of the API. More...
 
H3DUniquePtr< TrackerOrientation > trackerOrientation
 The orientation of the device in the world coordinates of the API. More...
 
H3DUniquePtr< SFMatrix4f > positionCalibration
 The calibration matrix between devicePosition and trackerPosition. More...
 
H3DUniquePtr< SFMatrix4f > adjustedPositionCalibration
 The calibration matrix between devicePosition and trackerPosition adjusted with the movement of the viewpoint.
 
H3DUniquePtr< SFRotation > orientationCalibration
 The calibration rotation between deviceOrientation and trackerOrientation. More...
 
H3DUniquePtr< SFRotation > adjustedOrnCalibration
 The calibration rotation between deviceOrientation and trackerOrientation adjusted with the movement of the viewpoint.
 
H3DUniquePtr< SFVec3f > proxyPosition
 The position of the proxy used in the haptic rendering(layer 0). More...
 
H3DUniquePtr< WeightedProxy > weightedProxyPosition
 A weighted position between proxyPosition and trackerPosition. More...
 
H3DUniquePtr< SFFloat > proxyWeighting
 The weighting between proxyPosition and trackerPosition when calculating weightedProxyPosition. More...
 
H3DUniquePtr< SFBool > mainButton
 The state of the main button(button 0). More...
 
H3DUniquePtr< SFBool > secondaryButton
 The state of the secondary button (button 1). More...
 
H3DUniquePtr< SFInt32 > buttons
 The state of all buttons. More...
 
H3DUniquePtr< SFVec3f > force
 The approximation of the force that has been rendered during the last scenegraph loop. More...
 
H3DUniquePtr< SFVec3f > torque
 The approximation of the torque that has been rendered during the last scenegraph loop. More...
 
H3DUniquePtr< SFInt32 > inputDOF
 The degrees of freedom supported as input. More...
 
H3DUniquePtr< SFInt32 > outputDOF
 The degrees of freedom supported as output, i.e. More...
 
H3DUniquePtr< SFInt32 > hapticsRate
 The update rate of the servoloop of the H3DHapticsDevice. More...
 
H3DUniquePtr< SFInt32 > desiredHapticsRate
 The desired update rate of the servoloop of the H3DHapticsDevice. More...
 
H3DUniquePtr< SFTime > hapticsLoopTime
 The time spent in the last haptics loop(in seconds) A value of -1 means that no haptics loop has been completed yet. More...
 
H3DUniquePtr< SFNode > stylus
 The Node used as the visual representation of the stylus. More...
 
H3DUniquePtr< SFBool > initialized
 true if the device is initialized and ready for calls to updateDeviceValues() and renderObjects(). More...
 
H3DUniquePtr< SFHapticsRendererNode > hapticsRenderer
 Specifies the haptics rendering algorithm to use to generate forces from geometric shapes. More...
 
H3DUniquePtr< MFVec3f > proxyPositions
 The positions of the proxies for each layer used in haptic rendering(layer 0). More...
 
H3DUniquePtr< SetEnabled > set_enabled
 Enable/disable the device. More...
 
H3DUniquePtr< SFBool > enabled
 true if the device is enabled, e.g. More...
 
H3DUniquePtr< SFBool > followViewpoint
 true if the device should follow the viewpoint. More...
 
H3DUniquePtr< SFVec3f > deviceVelocity
 The velocity of the device in the coordinate system of the device. More...
 
H3DUniquePtr< TrackerVelocity > trackerVelocity
 The velocity of the device in the world coordinates of the API. More...
 
H3DUniquePtr< SFFloat > forceLimit
 The maximum force(in N) we want the device to render. More...
 
H3DUniquePtr< SFFloat > forceScale
 Set the scaling of the output force. More...
 
H3DUniquePtr< SFBool > deadmansSwitch
 This is an alternative operational safety mode. More...
 
H3DUniquePtr< SFFloat > torqueLimit
 The maximum torque(in Nm) we want the device to render. More...
 
H3DUniquePtr< SFVec3f > deviceAngularVelocity
 The angular velocity of the device in the coordinate system of the device. More...
 
H3DUniquePtr< TrackerAngularVelocity > trackerAngularVelocity
 The angular velocity of the device in the world coordinates of the API. More...
 

Static Public Attributes

static H3DNodeDatabase database
 Node database entry.
 
- Static Public Attributes inherited from H3D::H3DHapticsDevice
static H3DNodeDatabase database
 Node database entry.
 

Additional Inherited Members

- Public Types inherited from H3D::H3DHapticsDevice
typedef SFMatrix4f PosCalibration
 
typedef SFRotation OrnCalibration
 
- Public Types inherited from H3D::Node
typedef std::map< Node *, Node * > DeepCopyMap
 A map type used during a deep copy clone() to map from original nodes to cloned nodes.
 
- Static Public Member Functions inherited from H3D::Node
static unsigned int nrNodesAlive ()
 Returns the nr of nodes currently alive, i.e. nodes created but not destructed.
 
static int nrNodesCreated ()
 Returns the number of nodes created in total since the start of the program.
 
- Protected Member Functions inherited from H3D::Node
void cloneFieldValue (Field &_from, Field &_to, bool deepCopy, DeepCopyMap &deepCopyMap)
 A helper function for the clone() method. More...
 
- Static Protected Member Functions inherited from H3D::Node
static Node * getClonedInstance (Node *original, bool deepCopy, DeepCopyMap &deepCopyMap)
 A helper function for nodes that implement clone() More...
 
- Protected Attributes inherited from H3D::H3DHapticsDevice
TimeStamp last_effect_change
 The time for the last call to the renderEffects function.
 

Detailed Description

ClutchedDevice is a wrapper for a H3DHapticsDevice which adds clutching functionality.

The clutching can be useful when the workspace and calibration of the haptic device does not allow comfortable control.

Examples:

Member Function Documentation

◆ releaseDevice()

ClutchedDevice::ErrorCode ClutchedDevice::releaseDevice ( )
virtual

Perform cleanup and let go of all device resources that are allocated.

After a call to this function no haptic rendering can be performed on the device until the initDevice() function has been called again.

Reimplemented from H3D::H3DHapticsDevice.

References hapticsDevice, and H3D::H3DHapticsDevice::releaseDevice().

◆ renderShapes()

void ClutchedDevice::renderShapes ( const HapticShapeVector &  shapes,
unsigned int  layer = 0 
)
virtual

Perform haptic rendering for the given HapticShape instances.

HapticShape objects that are to be be rendered haptically must be rendered with this function each scenegraph loop. Used in PhantomDevice to determine when to start the scheduler for OpenHaptics in order to avoid random crashes when creating hlContext.

Parameters
shapesThe haptic shapes to render.
layerThe haptic layer to render them in.

Reimplemented from H3D::H3DHapticsDevice.

References hapticsDevice, and H3D::H3DHapticsDevice::renderShapes().

Member Data Documentation

◆ enableClutch

H3DUniquePtr< EnableClutch > H3D::ClutchedDevice::enableClutch

Enable and disable the clutch.

Access type: inputOutput
Default value: False

Referenced by ClutchedDevice().

◆ hapticsDevice

H3DUniquePtr<SFHapticsDevice> H3D::ClutchedDevice::hapticsDevice

The wrapped haptics device to clutch.

Access type: inputOutput

Referenced by initDevice(), initialize(), releaseDevice(), renderShapes(), and updateDeviceValues().

◆ resetClutchOrientation

H3DUniquePtr< ResetClutchOrientation > H3D::ClutchedDevice::resetClutchOrientation

Reset clutch orientation.

Access type: inputOutput
Default value: False

Referenced by ClutchedDevice().

◆ resetClutchPosition

H3DUniquePtr< ResetClutchPosition > H3D::ClutchedDevice::resetClutchPosition

Reset clutch position.

Access type: inputOutput
Default value: False

Referenced by ClutchedDevice().

◆ unclutchedOrientation

H3DUniquePtr< SFRotation > H3D::ClutchedDevice::unclutchedOrientation

The orientation ignoring clutching.

Access type: OutputOnly

Referenced by updateDeviceValues().

◆ unclutchedPosition

H3DUniquePtr< SFVec3f > H3D::ClutchedDevice::unclutchedPosition

The position ignoring clutching.

Access type: OutputOnly

Referenced by updateDeviceValues().


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