ImFusion SDK 4.3
FakeRobotControlStream Class Referenceabstract

#include <RoboticsPlugin/Include/ImFusion/Robotics/Simulation/FakeRobotControlStream.h>

Stream that allows to programmatically set the joint position and simulate motion in Cartesian and joint space. More...

+ Inheritance diagram for FakeRobotControlStream:

Detailed Description

Stream that allows to programmatically set the joint position and simulate motion in Cartesian and joint space.

Useful for visualization, testing or demo purposes.

Public Member Functions

 FakeRobotControlStream (RobotType robotTypeName, const std::string &name="Fake Robot Control Stream")
 
bool init ()
 
std::string uuid () override
 Unique identifier for stream.
 
JointPosition jointPositions ()
 
void setJointPositions (const JointPosition &jointPositions)
 
void setCartesianPose (const isom3 &desiredPose)
 
size_t numberOfJoints () const
 
void configuration (Properties *p) const override
 Serialize the current object configuration into the given Properties object.
 
void configure (const Properties *properties) override
 Configure this object instance by de-serializing the given Properties.
 
- Public Member Functions inherited from RobotStateStream
 RobotStateStream ()
 Create robot state stream with an empty robot name, a simulated stream type, and a custom robot state stream tag.
 
 RobotStateStream (RobotType robotType, RobotStreamType streamType, const std::string &name="Robot State Stream")
 Initialize a robot state stream with particular parameters.
 
bool init (std::shared_ptr< RobotInstance > instance)
 Initialize the stream with a robot instance by.
 
 ~RobotStateStream () override
 Virtual destructor.
 
RobotStreamType robotStreamType () const
 Gets the stream's operational mode (simulated, state, control) indicating the type of connection \Return the current type of the robot stream.
 
RobotType robotType ()
 Gets the robot identifier as defined in the ImFusion SDK \Return the current type (name) of the robot as string(e.g "Franka Emika Panda")
 
std::shared_ptr< const RobotStateStreamDatalastData () const
 Get the most recent robot state data or nullptr if not available.
 
Data::Kind kind () const override
 The functions must be overridden to inherit from the Data class.
 
Modality modality () const override
 The data type is primarily used for particular algorithms in the SDK, while the robotics plugin has its own dedicated implementation.
 
void configure (const Properties *p) override
 Configure the Robot Instance.
 
void configuration (Properties *p) const override
 Retrieve the properties of the RobotInstance.
 
std::shared_ptr< const RobotInstancerobotInstance ()
 Access to the robot instance and its configuration.
 
const RobotInstancerobotInstanceRef () const
 Read-only access to the robot instance and its configuration.
 
std::shared_ptr< const RobotModelrobotModel () const
 Access to the robot's kinematic and dynamic model via the robot instance.
 
const RobotModelrobotModelRef () const
 Read-only access to the robot's kinematic and dynamic model via the robot instance.
 
isom3 flange_T_effector () const override
 Retrieve the effector-to-flange transformation.
 
std::optional< isom3 > base_T_effector_current () const override
 Return the current-effector-to-base transformation.
 
std::optional< isom3 > flange_T_effector_nominal () const override
 Get the nominal Tool Center Point (TCP)-to-flange transformation.
 
bool set_flange_T_effector (const isom3 &newValue, bool setNominal) override
 Update the end-effector-to-flange (TCP) transformation and optionally the nominal configuration.
 
bool set_flange_T_effector_nominal (const ImFusion::isom3 &newValue) override
 Set the nominal TCP transformation.
 
void set_world_T_base (const isom3 &newValue)
 Updates the robot's pose in world coordinates.
 
isom3 world_T_base () const
 Returns the base-to-world transformation.
 
- Public Member Functions inherited from Stream
 Stream (const std::string &name="")
 Constructor with the name for this stream.
 
virtual ThreadingMode threadingMode () const
 Configures threading mode of stream.
 
virtual bool supportsAsyncOperation ()
 Returns true if xxxAsync() methods support execution in a background thread.
 
std::shared_future< bool > openAsync ()
 Open stream in an asynchronous fashion (wait on the returned future before taking further actions). Returns whether the operation was successful.
 
std::shared_future< bool > closeAsync ()
 Close stream in an asynchronous fashion (wait on the returned future before taking further actions). Returns whether the operation was successful.
 
std::shared_future< bool > startAsync ()
 Start stream in an asynchronous fashion (wait on the returned future before taking further actions). Returns whether the operation was successful.
 
std::shared_future< bool > stopAsync ()
 Stop stream in an asynchronous fashion (wait on the returned future before taking further actions). Returns whether the operation was successful.
 
std::shared_future< bool > pauseAsync ()
 Pause stream in an asynchronous fashion (wait on the returned future before taking further actions). Returns whether the operation was successful.
 
std::shared_future< bool > resumeAsync ()
 Resume stream in an asynchronous fashion (wait on the returned future before taking further actions). Returns whether the operation was successful.
 
bool open ()
 Open stream and wait for the operation to complete. Returns whether the operation was successful.
 
bool close ()
 Close stream and wait for the operation to complete. Returns whether the operation was successful.
 
bool start ()
 Start stream and wait for the operation to complete. Returns whether the operation was successful.
 
bool stop ()
 Stop stream and wait for the operation to complete. Returns whether the operation was successful.
 
bool pause ()
 Pause stream and wait for the operation to complete. Returns whether the operation was successful.
 
bool resume ()
 Resume stream and wait for the operation to complete. Returns whether the operation was successful.
 
virtual bool supportsPausing () const
 Override and return true if this stream implements the pausing and resume operations.
 
bool restart ()
 Stops, closes, opens and starts the stream. Returns whether the operation was successful.
 
virtual bool reset ()
 Reverts stream to first frame, if possible. Returns whether the operation was successful.
 
virtual bool isRunning () const
 Return whether stream is currently running.
 
State currentState () const
 
bool isStateOneOf (const std::vector< State > &states) const
 
Geometry::AlignedBox bounds () const override
 Per default a Stream has empty/invalid bounds.
 
Pose::TransformationConvention matrixConvention () const override
 Matrices of streams by default map to the world coordinate system.
 
virtual bool createDefaultStreamController ()
 Indicates whether a StreamController should be created for the stream (by default returns true).
 
double updateRate () const
 Average update rate in Hz of the signalStreamData.
 
std::string describe () const override
 Short description of the stream including latest state and update rate information.
 
- Public Member Functions inherited from Data
 Data (const std::string &name="")
 
 Data (const Data &other)
 
Dataoperator= (const Data &other)
 
virtual ~Data ()
 Mandatory virtual destructor.
 
const std::stringname () const
 Return the name of this data.
 
void setName (const std::string &name)
 Sets the name of this data.
 
virtual bool isAnnotationType () const
 Return whether this data type is visualized through an annotation (e.g. mesh)
 
const DataComponentListcomponents () const
 Returns the list of DataComponents for this data.
 
DataComponentListcomponents ()
 
virtual void setMatrixFromWorld (const mat4 &m)
 Set matrix mapping from the world coordinate system to the data coordinate system.
 
virtual void setMatrixToWorld (const mat4 &m)
 Set matrix mapping from the data coordinate system to the world coordinate system.
 
virtual mat4 matrixFromWorld () const
 Get matrix mapping from the world coordinate system to the data coordinate system.
 
virtual mat4 matrixToWorld () const
 Get matrix mapping from the data coordinate system to the world coordinate system.
 
virtual mat4 matrix () const
 Return the transformation matrix.
 
virtual void setMatrix (const mat4 &m)
 Set the transformation matrix.
 
- Public Member Functions inherited from Configurable
virtual void configureDefaults ()
 Retrieve the properties of this object, replaces values with their defaults and sets it again.
 
void registerParameter (ParameterBase *param)
 Register the given Parameter or SubProperty, so that it will be configured during configure()/configuration().
 
void unregisterParameter (const ParameterBase *param)
 Remove the given Parameter or SubProperty from the list of registered parameters.
 
 Configurable (const Configurable &rhs)
 
 Configurable (Configurable &&rhs) noexcept
 
Configurableoperator= (const Configurable &)
 
Configurableoperator= (Configurable &&) noexcept
 
- Public Member Functions inherited from RobotControlInterfacesHolder
template<typename T>
bool hasControlInterface () const
 
template<typename T>
void registerControlInterface (T *newInterface)
 
template<typename T>
bool deRegisterControlInterface ()
 
template<typename T>
T * getControlInterface () const
 
- Public Member Functions inherited from PlanningFrameInterface
virtual bool set_flange_T_effector_nominal (const isom3 &newValue)=0
 sets the TCP transform in the robot controller RobotStateStream has a dummy implementation that will log an error if a Streams declaring support does not override this function
 
- Public Member Functions inherited from StatusInterface
 StatusInterface (RateLimits rateLimits)
 
RobotLocationrobotLocation () const
 
template<typename LocationType>
LocationType * typedRobotLocation () const
 
template<typename LocationType>
bool updateRobotLocation (std::unique_ptr< LocationType > newLocation)
 
RateLimits rateLimits () const
 
virtual void setRateLimits (RateLimits rateLimits)
 
- Public Member Functions inherited from ControllerConfigurationInterface
 ControllerConfigurationInterface (std::vector< ControllerConfiguration > controllers)
 
std::vector< ControllerConfigurationcontrollers () const
 Returns descriptions of controllers with default parameter values.
 
std::optional< ControllerConfigurationcontrollerWithName (const std::string &name) const
 Get the controller with the given name.
 
bool activateController (const ControllerConfiguration &controllerConfiguration)
 Activates the given controller, taking the parameters from the given configuration.
 
std::optional< ControllerConfigurationactiveController () const
 Which controller is currently active.
 
- Public Member Functions inherited from CollisionDetectionPresetInterface
bool activateCollisionPreset (const CollisionDetectionPreset &preset)
 Activate given collision setting, taking the parameters.
 
virtual CollisionDetectionPreset activeCollisionSetting () const
 Which collision setting is currently active.
 

Protected Member Functions

virtual void initRobotInstance ()=0
 
virtual std::unique_ptr< RobotStategenerateRobotState ()
 
void publishRobotState ()
 
- Protected Member Functions inherited from RobotStateStream
void publishNewData (std::shared_ptr< const RobotState > newData)
 Emit new robot state data to all the stream listeners, with data containing RobotState.
 
- Protected Member Functions inherited from Stream
virtual bool pauseImpl ()
 Pause stream (not required to be supported).
 
virtual bool resumeImpl ()
 Resume stream from pause (only required to be supported when pauseImpl() is supported).
 
virtual bool workerThreadRequiresOpenGl () const
 Override and return true if worker thread should create a GL::Context.
 
virtual bool worksWhilePaused () const
 Override if doWork() should be called also in the Paused state.
 
void changeState (State newState)
 
std::shared_future< bool > attemptStateChange (std::function< bool()> work, State stateWorking, State stateSuccess, State stateError)
 
- Protected Member Functions inherited from Data
void swapWith (Data &other)
 Swaps the data and emits a matrix and name changed signal for both.
 

Protected Attributes

ControlIterationInfo m_iterationInfo
 
std::chrono::milliseconds m_period {1}
 
JointPosition m_jointPositions
 
double m_jointVelocityLimitRadSec = 0.6
 
double m_controlFrequencyHertz = 500
 
std::optional< std::chrono::steady_clock::time_point > m_lastControlIterationTimestamp
 
std::unique_ptr< Threading::StoppableThreadm_motionThread
 
std::unique_ptr< MotionGeneratorBasem_motion
 
- Protected Attributes inherited from RobotStateStream
std::shared_ptr< RobotInstancem_robotInstance
 Active robot instance.
 
RobotStreamType m_robotStreamType
 Stream type (Simulated, Control, State)
 
RobotType m_robotType
 Robot name in the SDK.
 
std::shared_ptr< const RobotStateStreamDatam_lastData
 A copy of most recent stream data.
 
std::mutex m_lastDataMtx
 Synchronizes access to m_lastData.
 
- Protected Attributes inherited from Data
mat4 m_matrix
 Transformation matrix.
 
std::recursive_mutexm_matrixMutex
 Used to internally synchronize access to the matrix of data.
 
DataComponentList m_dataComponentList
 The list of DataComponents for this data.
 
- Protected Attributes inherited from Configurable
std::vector< Paramm_params
 List of all registered Parameter and SubProperty instances.
 
- Protected Attributes inherited from StatusInterface
RateLimits m_rateLimits
 
std::unique_ptr< RobotLocationm_robotLocation
 Robot location (e.g.
 
- Protected Attributes inherited from CollisionDetectionPresetInterface
CollisionDetectionPreset m_activeCollisionDetectionPreset = CollisionDetectionPreset::Off
 

Methods implementing the Stream interface

bool openImpl () override
 Open stream.
 
bool closeImpl () override
 Close stream.
 
bool startImpl () override
 Start stream.
 
bool stopImpl () override
 Stop stream.
 
std::optional< Stream::WorkContinuationdoWork () override
 Create one StreamData and publish it (this function will be called at the desired frame rate) If this is not desired, you can do the following: return std::nullopt;.
 

Methods implementing StatusInterface

MotionGeneratorBaseactiveMotionGenerator () override
 
bool isMoving () const override
 
bool isError () const override
 
bool canStartNewMotion () const override
 
bool tryRecoverFromError () override
 
void stopMotion () override
 

Methods implementing CartesianTCPInterface

bool supportsSetting_flange_T_effector_nominal () const override
 if true, the TCP transform can be set in the robot firmware
 

Methods implementing JointStreamingControlInterface

MotionResult startMotion (std::unique_ptr< MotionGenerator< JointPosition > > &&motion) override
 

Methods implementing CartesianStreamingControlInterface

MotionResult startMotion (std::unique_ptr< MotionGenerator< isom3 > > &&motion) override
 

Methods implementing CollisionDetectionPresetInterface

bool activateCollisionPresetImpl (CollisionDetectionPreset preset) override
 

Additional Inherited Members

- Public Types inherited from Stream
enum class  ThreadingMode { BaseClassRunsWorkerThread , DerivedClassHandlesThreading }
 This flag represents the two supported threading modes of a Stream. More...
 
enum class  State {
  Closed , Opening , Open , Starting ,
  Running , Pausing , Paused , Resuming ,
  Stopping , Closing
}
 
- Public Types inherited from Data
enum  Kind {
  UNKNOWN = 0 , IMAGE = 1 , VOLUME = 2 , IMAGESET = 3 ,
  VOLUMESET = 4 , IMAGESTREAM = 5 , VOLUMESTREAM = 6 , POINTSET = 7 ,
  SURFACE = 8 , TRACKINGSTREAM = 9 , LIVETRACKINGSTREAM = TRACKINGSTREAM , TRACKINGDATA = 10 ,
  TREE = 11 , TENSOR = 12 , POLYDATASTREAM = 13 , STEREOIMAGESET = 14 ,
  STEREOIMAGESTREAM = 15 , VOLUMETRICMESH = 16
}
 Kind of data. More...
 
enum  Modality {
  NA = 0 , XRAY = 1 , CT = 2 , MRI = 3 ,
  ULTRASOUND = 4 , VIDEO = 5 , NM = 6 , OCT = 7 ,
  LABEL = 8 , DISTANCE = 9
}
 Image modality of the data. More...
 
- Static Public Member Functions inherited from Stream
static std::string stateToString (State state)
 
- Static Public Member Functions inherited from Data
static std::string modalityString (Data::Modality m)
 Return the name of an image modality.
 
static Data::Modality stringToModality (const std::string &s)
 Returns the modality corresponding to a modality string or NA if nothing matches.
 
- Static Public Member Functions inherited from PlanningFrameInterface
static std::string id ()
 
- Static Public Member Functions inherited from StatusInterface
static std::string id ()
 
- Static Public Member Functions inherited from JointStreamingControlInterface
static std::string id ()
 
- Static Public Member Functions inherited from CartesianStreamingControlInterface
static std::string id ()
 
- Static Public Member Functions inherited from ControllerConfigurationInterface
static std::string id ()
 
- Static Public Member Functions inherited from CollisionDetectionPresetInterface
static std::string id ()
 
- Public Attributes inherited from Stream
ProtectedSignal< StateChangesignalStateChanged
 Emitted after a state change has been completed with the old and new state.
 
ProtectedSignal signalEnded
 Indicates that the stream reached the end of its data, e.g. when a video stream has played to the end.
 
ProtectedSignal< std::shared_ptr< const StreamData > > signalStreamData
 Signal that is emitted by the stream when a new StreamData is available.
 
DeprecatedSignal< ProtectedSignal< std::shared_ptr< const StreamData > >, const StreamData & > signalNewData
 Signal that is emitted by the stream when a new StreamData is available.
 
- Public Attributes inherited from Data
Signal< const Data * > signalDeleted
 Signal emitted when this instance is deleted.
 
Signal< const Data * > signalMatrixChanged
 Signal emitted when the transformation of this Data has changed.
 
Signal< std::stringsignalNameChanged
 Signal emitted when the name changed.
 
- Public Attributes inherited from Configurable
Signal signalParametersChanged
 Emitted whenever one of the registered Parameters' or SubPropertys' signalValueChanged signal was emitted.
 
- Public Attributes inherited from StatusInterface
Signal motionStarted
 
Signal motionFinished
 

Member Function Documentation

◆ openImpl()

bool openImpl ( )
overridevirtual

Open stream.

Returns whether the operation was successful. This method is responsible for allocating necessary resources, initializing device handles, and establishing connections to devices. Implementers should ensure that all one-time setup tasks are completed here.

Implements Stream.

◆ closeImpl()

bool closeImpl ( )
overridevirtual

Close stream.

Returns whether the operation was successful. This method should be used to free any resources that were allocated during the openImpl() call and to disconnect from any devices. Implementers must ensure that all resources are properly released to avoid memory leaks.

Implements Stream.

◆ startImpl()

bool startImpl ( )
overridevirtual

Start stream.

Returns whether the operation was successful. This method is intended to initiate the actual data readout process or to connect a callback function for data handling. Implementers should ensure that the stream is ready and producing data after this call.

Implements Stream.

◆ stopImpl()

bool stopImpl ( )
overridevirtual

Stop stream.

Returns whether the operation was successful. This method should halt any ongoing data readouts or callbacks, effectively pausing the data flow to reduce CPU load. Implementers should ensure that the stream can be restarted after this call.

Implements Stream.

◆ doWork()

std::optional< Stream::WorkContinuation > doWork ( )
overridevirtual

Create one StreamData and publish it (this function will be called at the desired frame rate) If this is not desired, you can do the following: return std::nullopt;.

Implements Stream.

◆ uuid()

std::string uuid ( )
overridevirtual

Unique identifier for stream.

Implements Stream.

◆ configuration()

void configuration ( Properties * p) const
overridevirtual

Serialize the current object configuration into the given Properties object.

The default implementation will do so automatically for all registered Parameter and SubProperty instances.

See also
configure() for the inverse functionality

Reimplemented from Configurable.

◆ configure()

void configure ( const Properties * p)
overridevirtual

Configure this object instance by de-serializing the given Properties.

The default implementation will do so automatically for all registered Parameter and SubProperty instances.

See also
configuration() for the inverse functionality

Reimplemented from Configurable.

◆ activeMotionGenerator()

MotionGeneratorBase * activeMotionGenerator ( )
overridevirtual

Implements StatusInterface.

◆ isMoving()

bool isMoving ( ) const
overridevirtual

Implements StatusInterface.

◆ isError()

bool isError ( ) const
overridevirtual

Implements StatusInterface.

◆ canStartNewMotion()

bool canStartNewMotion ( ) const
overridevirtual

Implements StatusInterface.

◆ tryRecoverFromError()

bool tryRecoverFromError ( )
overridevirtual

Implements StatusInterface.

◆ stopMotion()

void stopMotion ( )
overridevirtual

Implements StatusInterface.

◆ supportsSetting_flange_T_effector_nominal()

bool supportsSetting_flange_T_effector_nominal ( ) const
inlineoverridevirtual

if true, the TCP transform can be set in the robot firmware

Implements PlanningFrameInterface.

◆ startMotion() [1/2]

MotionResult startMotion ( std::unique_ptr< MotionGenerator< JointPosition > > && motion)
overridevirtual

◆ startMotion() [2/2]

MotionResult startMotion ( std::unique_ptr< MotionGenerator< isom3 > > && motion)
overridevirtual

◆ activateCollisionPresetImpl()

bool activateCollisionPresetImpl ( CollisionDetectionPreset preset)
overrideprotectedvirtual

The documentation for this class was generated from the following file:
Search Tab / S to search, Esc to close