iMSTK
Interactive Medical Simulation Toolkit
Public Types | Public Member Functions | Protected Attributes | List of all members
imstk::LaparoscopicToolController Class Reference

Two-jawed laparoscopic tool controlled by external device The tool is composed of three scene objects: pivot, lower jaw and upper jaw The jaws open-close based on the buttons at present. This has to be replaced by potentiometer tracking in future. More...

#include <imstkLaparoscopicToolController.h>

Inheritance diagram for imstk::LaparoscopicToolController:
Inheritance graph
[legend]
Collaboration diagram for imstk::LaparoscopicToolController:
Collaboration graph
[legend]

Public Types

enum  JawState { Closed, Opened }
 
- Public Types inherited from imstk::TrackingDeviceControl
enum  InvertFlag {
  transX = 0x01, transY = 0x02, transZ = 0x04, rotX = 0x08,
  rotY = 0x10, rotZ = 0x20
}
 
- Public Types inherited from imstk::EventObject
using Observer = std::tuple< bool, std::weak_ptr< EventObject >, std::function< void(Event *)> >
 

Public Member Functions

 LaparoscopicToolController (const std::string &name="LaparoscopicToolController")
 
void setParts (std::shared_ptr< CollidingObject > shaft, std::shared_ptr< CollidingObject > upperJaw, std::shared_ptr< CollidingObject > lowerJaw, std::shared_ptr< Geometry > pickGeom)
 
void setDevice (std::shared_ptr< DeviceClient > device) override
 
 SIGNAL (LaparoscopicToolController, JawClosed)
 Fired once when the jaw transitions to closed state.
 
 SIGNAL (LaparoscopicToolController, JawOpened)
 Fired once when the jaw transitions to open state.
 
void update (const double &dt) override
 Update controlled laparoscopic tool using latest tracking information.
 
void setMaxJawAngle (const double maxAngle)
 Set the maximum jaw angle.
 
void setJawAngleChange (const double dAngle)
 Set the increment.
 
void setJawRotationAxis (const Vec3d &axis)
 Set the jaw rotation axis.
 
double getJawAngle () const
 Get the current jaw angle.
 
double getMaxJawAngle () const
 Get the max jaw angle.
 
JawState getJawState () const
 Get the state of the jaw whether it is open or closed.
 
- Public Member Functions inherited from imstk::TrackingDeviceControl
virtual void applyForces ()
 Apply forces to the haptic device.
 
const Quatd & getEffectorRotationOffset ()
 Get/Set the roation applied to the end effector, this can be used to register the device in virtual space with regard to the users point of view.
 
void setEffectorRotationOffset (const Quatd &r)
 
virtual bool updateTrackingData (const double dt)
 Update tracking data.
 
const Vec3d & getPosition () const
 Set/Get the position of the tracker.
 
void setPosition (const Vec3d &pos)
 
const Quatd & getOrientation () const
 Set/Get the orientation of the tracker.
 
void setOrientation (const Quatd &orientation)
 
void setComputeVelocity (const bool computeVelocity)
 Set/Get whether to compute the velocity from previous and current samples Useful if a device does not provide the quantity.
 
bool getComputeVelocity () const
 
void setComputeAngularVelocity (const bool computeAngularVelocity)
 Set/Get whether to compute the anular velocity from previous and current samples Useful if the device does not provide the quantity.
 
bool getComputeAngularVelocity () const
 
const Vec3d & getAngularVelocity () const
 Get/Set the angular velocity.
 
void setAngularVelocity (const Vec3d &angularVelocity)
 
const Vec3d & getVelocity () const
 Get/Set the linear velocity.
 
void setVelocity (const Vec3d &velocity)
 
double getTranslationScaling () const
 Get/Set the current scaling factor.
 
void setTranslationScaling (const double scaling)
 
const Vec3d & getTranslationOffset () const
 Get/Set the translation offset.
 
void setTranslationOffset (const Vec3d &t)
 
const Quatd & getRotationOffset ()
 Get/Set the rotation offset, this rotation is applied to the overall device coordinate system.
 
void setRotationOffset (const Quatd &r)
 
unsigned char getInversionFlags ()
 Get/Set the inversion flags, when set the corresponding axis coordinates or rotation angle will be negated.
 
void setInversionFlags (const unsigned char f)
 
- Public Member Functions inherited from imstk::DeviceControl
 SIGNAL (DeviceControl, modified)
 
virtual void printControls ()
 Prints the controls.
 
std::shared_ptr< DeviceClientgetDevice () const
 Set/Get the device client used in the control.
 
- Public Member Functions inherited from imstk::Behaviour< UpdateInfo >
virtual void update (const UpdateInfo &imstkNotUsed(updateData))
 
virtual void visualUpdate (const UpdateInfo &imstkNotUsed(updateData))
 
void initTaskGraphEdges ()
 Setup the edges/connections of the TaskGraph.
 
std::shared_ptr< TaskGraphgetTaskGraph () const
 
- Public Member Functions inherited from imstk::Component
const std::string & getName () const
 
void setName (const std::string &name)
 
std::weak_ptr< EntitygetEntity () const
 Get parent entity.
 
void initialize ()
 Initialize the component, called at a later time after all component construction is complete.
 
- Public Member Functions inherited from imstk::EventObject
template<typename T >
void postEvent (const T &e)
 Emits the event Direct observers will be immediately called, in sync Queued observers will receive the Command in their queue for later execution, reciever must implement doEvent.
 
template<typename T >
void queueEvent (const T &e)
 Queues event directly to this.
 
void doEvent ()
 Do an event, if none exists return.
 
void doAllEvents ()
 Do all the events in the event queue.
 
void foreachEvent (std::function< void(Command cmd)> func)
 Thread safe loop over all event commands, one can implement a custom handler.
 
void rforeachEvent (std::function< void(Command cmd)> func)
 thread safe reverse loop over all event commands, one can implement a custom handler
 
void clearEvents ()
 Removes all events from queue cleans up copies of the event.
 

Protected Attributes

std::shared_ptr< CollidingObjectm_shaft
 Tool shaft.
 
std::shared_ptr< CollidingObjectm_upperJaw
 Tool upper jaw.
 
std::shared_ptr< CollidingObjectm_lowerJaw
 Tool lower jaw.
 
std::shared_ptr< Geometrym_pickGeom
 
double m_jawAngle = PI / 6.0
 Angle of the jaws.
 
double m_change = 6.0e-5
 Amount of change in jaw angle per frame.
 
double m_maxJawAngle = PI / 6.0
 Maximum angle of the jaws.
 
JawState m_jawState = JawState::Opened
 
Vec3d m_jawRotationAxis = Vec3d(1.0, 0.0, 0.0)
 Angle of the jaws.
 
Mat4d m_controllerWorldTransform = Mat4d::Identity()
 
Mat4d m_pickGeomTransform = Mat4d::Identity()
 
Mat4d m_shaftVisualTransform = Mat4d::Identity()
 
Mat4d m_upperJawVisualTransform = Mat4d::Identity()
 
Mat4d m_lowerJawVisualTransform = Mat4d::Identity()
 
Mat4d m_shaftCollidingTransform = Mat4d::Identity()
 
Mat4d m_upperJawCollidingTransform = Mat4d::Identity()
 
Mat4d m_lowerJawCollidingTransform = Mat4d::Identity()
 
Mat4d m_upperJawLocalTransform = Mat4d::Identity()
 
Mat4d m_lowerJawLocalTransform = Mat4d::Identity()
 
- Protected Attributes inherited from imstk::TrackingDeviceControl
double m_scaling = 1.0
 Scaling factor for physical to virtual translations.
 
Vec3d m_translationOffset = Vec3d::Zero()
 Translation concatenated to the device translation.
 
Quatd m_rotationOffset = Quatd::Identity()
 Rotation concatenated to the device rotation.
 
Quatd m_effectorRotationOffset = Quatd::Identity()
 Rotation prefixed to the device rotation.
 
unsigned char m_invertFlags = 0x00
 Invert flags to be masked with DeviceTracker::InvertFlag.
 
Vec3d m_currentPos = Vec3d::Zero()
 
Quatd m_currentOrientation = Quatd::Identity()
 
Vec3d m_currentVelocity = Vec3d::Zero()
 
Vec3d m_currentAngularVelocity = Vec3d::Zero()
 
Vec3d m_currentDisplacement = Vec3d::Zero()
 
Quatd m_currentRotation = Quatd::Identity()
 
bool m_computeVelocity = false
 If true, will use current and previous positions to produce velocity, if off, will ask device for velocity.
 
bool m_computeAngularVelocity = false
 If true, will use current and previous rotations to produce angular velocity, if off, will ask device for angular velocity.
 
- Protected Attributes inherited from imstk::DeviceControl
std::shared_ptr< DeviceClientm_deviceClient
 
- Protected Attributes inherited from imstk::Behaviour< UpdateInfo >
std::shared_ptr< TaskGraphm_taskGraph = nullptr
 
- Protected Attributes inherited from imstk::Component
std::string m_name
 
std::weak_ptr< Entitym_entity
 Parent entity this component exists on.
 
- Protected Attributes inherited from imstk::EventObject
ParallelUtils::SpinLock eventQueueLock
 
std::deque< CommandeventQueue
 
std::vector< std::pair< std::string, std::vector< Observer > > > queuedObservers
 
std::vector< std::pair< std::string, std::vector< Observer > > > directObservers
 

Additional Inherited Members

- Protected Member Functions inherited from imstk::TrackingDeviceControl
 TrackingDeviceControl (const std::string &name="TrackingDeviceControl")
 
- Protected Member Functions inherited from imstk::DeviceControl
 DeviceControl (const std::string &name="DeviceControl")
 
- Protected Member Functions inherited from imstk::Behaviour< UpdateInfo >
 Behaviour (const std::string &name="Behaviour")
 
 Behaviour (const bool useTaskGraph, const std::string &name="Behaviour")
 
virtual void initGraphEdges (std::shared_ptr< TaskNode > imstkNotUsed(source), std::shared_ptr< TaskNode > imstkNotUsed(sink))
 Setup the edges/connections of the TaskGraph. More...
 
- Protected Member Functions inherited from imstk::Component
 Component (const std::string &name="Component")
 
virtual void init ()
 Initialize the component, called at a later time after all component construction is complete.
 

Detailed Description

Two-jawed laparoscopic tool controlled by external device The tool is composed of three scene objects: pivot, lower jaw and upper jaw The jaws open-close based on the buttons at present. This has to be replaced by potentiometer tracking in future.

Definition at line 24 of file imstkLaparoscopicToolController.h.


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