16 #ifndef SURGSIM_PHYSICS_VIRTUALTOOLCOUPLER_H 17 #define SURGSIM_PHYSICS_VIRTUALTOOLCOUPLER_H 21 #include "SurgSim/DataStructures/DataGroup.h" 22 #include "SurgSim/DataStructures/DataGroupBuilder.h" 23 #include "SurgSim/DataStructures/OptionalValue.h" 24 #include "SurgSim/Framework/Behavior.h" 26 #include "SurgSim/Framework/ObjectFactory.h" 34 class OutputComponent;
40 class RigidRepresentation;
42 SURGSIM_STATIC_REGISTRATION(VirtualToolCoupler);
70 const std::shared_ptr<Framework::Component> getInput();
77 void setInput(
const std::shared_ptr<Framework::Component> input);
80 const std::shared_ptr<Framework::Component> getOutput();
84 void setOutput(
const std::shared_ptr<Framework::Component> output);
87 const std::shared_ptr<Framework::Component> getRepresentation();
91 void setRepresentation(
const std::shared_ptr<Framework::Component> rigid);
96 bool isHapticOutputOnlyWhenColliding()
const;
101 void setHapticOutputOnlyWhenColliding(
bool haptic);
104 const std::string& getPoseName();
108 void setPoseName(
const std::string& poseName = DataStructures::Names::POSE);
110 void update(
double dt)
override;
116 void overrideLinearStiffness(
double linearStiffness);
119 double getLinearStiffness();
125 void overrideLinearDamping(
double linearDamping);
128 double getLinearDamping();
134 void overrideAngularStiffness(
double angularStiffness);
137 double getAngularStiffness();
143 void overrideAngularDamping(
double angularDamping);
146 double getAngularDamping();
162 void setCalculateInertialTorques(
bool calculateInertialTorques);
168 bool getCalculateInertialTorques()
const;
174 void setInitializeRigidWithInputPose(
bool val);
178 bool isInitializingRigidWithInputPose()
const;
180 void doRetire()
override;
182 void setLocalActive(
bool val)
override;
185 bool doInitialize()
override;
186 bool doWakeUp()
override;
187 int getTargetManagerType()
const override;
255 std::shared_ptr<Input::InputComponent>
m_input;
261 std::shared_ptr<RigidRepresentation> m_rigid;
262 std::string m_poseName;
265 double m_linearStiffness;
268 double m_linearDamping;
271 double m_angularStiffness;
274 double m_angularDamping;
281 bool m_calculateInertialTorques;
284 bool m_initializeRigidWithInputPose;
287 std::shared_ptr<Framework::Logger> m_logger;
290 bool m_hapticOutputOnlyWhenColliding;
298 int m_linearVelocityIndex;
299 int m_angularVelocityIndex;
302 int m_inputLinearVelocityIndex;
303 int m_inputAngularVelocityIndex;
304 int m_inputPoseIndex;
305 int m_springJacobianIndex;
306 int m_damperJacobianIndex;
314 #endif // SURGSIM_PHYSICS_VIRTUALTOOLCOUPLER_H
Wraps glewInit() to separate the glew opengl definitions from the osg opengl definitions only imgui n...
Definition: AddRandomSphereBehavior.cpp:36
Eigen::Matrix< double, 3, 1 > Vector3d
A 3D vector of doubles.
Definition: Vector.h:57
The convenience header that provides the entirety of the logging API.
A collection of NamedData objects.
Definition: DataGroup.h:68
Behaviors perform actions.
Definition: Behavior.h:40