opensurgsim
|
A class implementing the communication with a multi-axis controller input device, for example a 3DConnexion SpaceNavigator. More...
#include <RawMultiAxisDevice.h>
Public Member Functions | |
RawMultiAxisDevice (const std::string &uniqueName) | |
Constructor. More... | |
SURGSIM_CLASSNAME (SurgSim::Devices::RawMultiAxisDevice) | |
virtual | ~RawMultiAxisDevice () |
Destructor. | |
bool | initialize () override |
Fully initialize the device. More... | |
bool | isInitialized () const override |
void | setPositionScale (double scale) |
Sets the position scale for this device. More... | |
double | getPositionScale () const |
Gets the position scale for this device. | |
void | setOrientationScale (double scale) |
Sets the orientation scale for this device. More... | |
double | getOrientationScale () const |
Gets the orientation scale for this device. | |
void | setAxisDominance (bool onOff) |
Turns on or off the axis dominance setting for this device. More... | |
bool | isUsingAxisDominance () const |
Gets the axis dominance setting for this device. | |
![]() | |
CommonDevice (const std::string &name) | |
Constructor. More... | |
CommonDevice (const std::string &name, const DataStructures::DataGroup &inputData) | |
Constructor. More... | |
CommonDevice (const std::string &name, DataStructures::DataGroup &&inputData) | |
Constructor. More... | |
virtual | ~CommonDevice () |
Destructor. | |
std::string | getName () const override |
Return a (hopefully unique) device name. | |
std::string | getClassName () const override |
The class name for this class. More... | |
void | setNameForCallback (const std::string &name) |
Set the name used for calling the input consumers and output producer. More... | |
std::string | getNameForCallback () const |
Get the name used for calling the input consumers and output producer. More... | |
bool | addInputConsumer (std::shared_ptr< InputConsumerInterface > inputConsumer) override |
Adds an input consumer that will be notified when the application input state is updated. More... | |
bool | removeInputConsumer (std::shared_ptr< InputConsumerInterface > inputConsumer) override |
Removes an input consumer previously added via addInputConsumer. More... | |
void | clearInputConsumers () override |
Removes all InputConsumers. | |
bool | setOutputProducer (std::shared_ptr< OutputProducerInterface > outputProducer) override |
Sets an output producer that will be asked for application output state when the device needs it. More... | |
bool | removeOutputProducer (std::shared_ptr< OutputProducerInterface > outputProducer) override |
Removes an output producer previously added via setOutputProducer. More... | |
bool | hasOutputProducer () override |
Query if this object has output producer. More... | |
void | clearOutputProducer () override |
Removes any OutputProducer. | |
![]() | |
virtual | ~DeviceInterface () |
Virtual destructor (empty). | |
![]() | |
Accessible () | |
Default Constructor. | |
~Accessible () | |
Destructor. | |
template<class T > | |
T | getValue (const std::string &name) const |
Retrieves the value with the name by executing the getter if it is found and tries to convert it to the given type. More... | |
boost::any | getValue (const std::string &name) const |
Retrieves the value with the name by executing the getter if it is found. More... | |
template<class T > | |
bool | getValue (const std::string &name, T *value) const |
Retrieves the value with the name by executing the getter if it is found, and converts it to the type of the output parameter. More... | |
void | setValue (const std::string &name, const boost::any &value) |
Sets a value of a property that has setter. More... | |
bool | isReadable (const std::string &name) const |
Check whether a property is readable. More... | |
bool | isWriteable (const std::string &name) const |
Check whether a property is writable. More... | |
void | setGetter (const std::string &name, GetterType func) |
Sets a getter for a given property. More... | |
void | setSetter (const std::string &name, SetterType func) |
Sets a setter for a given property. More... | |
void | setAccessors (const std::string &name, GetterType getter, SetterType setter) |
Sets the accessors getter and setter in one function. More... | |
void | removeAccessors (const std::string &name) |
Removes all the accessors (getter and setter) for a given property. More... | |
void | forwardProperty (const std::string &name, const Accessible &target, const std::string &targetProperty) |
Adds a property with the given name that uses the targets accessors, in effect forwarding the value to the target. More... | |
void | setSerializable (const std::string &name, EncoderType encoder, DecoderType decoder) |
Sets the functions used to convert data from and to a YAML::Node. More... | |
void | setDecoder (const std::string &name, DecoderType decoder) |
Sets the functions used to convert data from a YAML::Node. More... | |
YAML::Node | encode () const |
Encode this Accessible to a YAML::Node. More... | |
void | decode (const YAML::Node &node, const std::vector< std::string > &ignoredProperties=std::vector< std::string >()) |
Decode this Accessible from a YAML::Node, will throw an exception if the data type cannot be converted. More... | |
std::vector< std::string > | getProperties () |
template<> | |
boost::any | getValue (const std::string &name) const |
Friends | |
class | RawMultiAxisScaffold |
Additional Inherited Members | |
![]() | |
typedef std::function< boost::any(void)> | GetterType |
typedef std::function< void(boost::any)> | SetterType |
typedef std::function< YAML::Node(void)> | EncoderType |
typedef std::function< void(const YAML::Node *)> | DecoderType |
![]() | |
typedef ObjectFactory1< DeviceInterface, std::string > | FactoryType |
![]() | |
static FactoryType & | getFactory () |
![]() | |
virtual void | pushInput () |
Push application input to consumers. | |
virtual bool | pullOutput () |
Pull application output from a producer. | |
DataStructures::DataGroup & | getInputData () |
Getter for the input data DataGroup. More... | |
const DataStructures::DataGroup & | getOutputData () const |
Getter for the output data DataGroup. More... | |
A class implementing the communication with a multi-axis controller input device, for example a 3DConnexion SpaceNavigator.
This object will only generate raw output reported by the controller, which indicates the movement of the controller from its rest state. Normally, that result will need to be integrated to allow the controller to be treated as a differential device, where holding the controller moves the pose and releasing the controller lets the pose hold steady in its new state. The MultiAxisDevice class provides that.
type | name | |
---|---|---|
pose | "pose" | Absolute device pose (units are ill-defined, but nominally meters). |
bool | "button1" | True if button 1 exists and is pressed. |
bool | "button2" | True if button 2 exists and is pressed. |
bool | "button3" | True if button 3 exists and is pressed. |
bool | "button4" | True if button 4 exists and is pressed. |
type | name | |
---|---|---|
bool | "led1" | If the device has at least one LED light, controls the first one. |
|
explicit |
Constructor.
uniqueName | A unique name for the device that will be used by the application. |
|
overridevirtual |
Fully initialize the device.
When the manager object creates the device, the internal state of the device usually isn't fully initialized yet. This method performs any needed initialization.
Implements SurgSim::Input::DeviceInterface.
|
overridevirtual |
Implements SurgSim::Input::DeviceInterface.
void SurgSim::Devices::RawMultiAxisDevice::setAxisDominance | ( | bool | onOff | ) |
Turns on or off the axis dominance setting for this device.
When axis dominance is on, only one (the largest) of the 6 pure axis directions is allowed to be active. In other words, the device will be translating in X, or in Y, or in Z, or rotating around X, or around Y, or around Z; but only one of those at a time.
void SurgSim::Devices::RawMultiAxisDevice::setOrientationScale | ( | double | scale | ) |
Sets the orientation scale for this device.
The orientation scale controls how much the pose changes for a given device rotation. The default value for a raw device tries to correspond to the actual physical motion of the device.
void SurgSim::Devices::RawMultiAxisDevice::setPositionScale | ( | double | scale | ) |
Sets the position scale for this device.
The position scale controls how much the pose changes for a given device translation. The default value for a raw device tries to correspond to the actual physical motion of the device.