YARP
Yet Another Robot Platform

frameTransformClient: A client to manage FrameTransforms for a robot (For more information, go to FrameTransform: start all the required devices needed for transforming frames) More...

#include <frameTransformClient/FrameTransformClient.h>

+ Inheritance diagram for FrameTransformClient:

Classes

struct  broadcast_port_t
 

Public Member Functions

 FrameTransformClient ()
 
 ~FrameTransformClient ()
 
bool open (yarp::os::Searchable &config) override
 Open the DeviceDriver. More...
 
bool close () override
 Close the DeviceDriver. More...
 
bool read (yarp::os::ConnectionReader &connection) override
 Read this object from a network connection. More...
 
bool allFramesAsString (std::string &all_frames) override
 Creates a debug string containing the list of all registered frames. More...
 
bool canTransform (const std::string &target_frame, const std::string &source_frame) override
 Test if a transform exists. More...
 
bool clear () override
 Removes all the registered transforms. More...
 
bool frameExists (const std::string &frame_id) override
 Check if a frame exists. More...
 
bool getAllFrameIds (std::vector< std::string > &ids) override
 Gets a vector containing all the registered frames. More...
 
bool getParent (const std::string &frame_id, std::string &parent_frame_id) override
 Get the parent of a frame. More...
 
bool getTransform (const std::string &target_frame_id, const std::string &source_frame_id, yarp::sig::Matrix &transform) override
 Get the transform between two frames. More...
 
bool setTransform (const std::string &target_frame_id, const std::string &source_frame_id, const yarp::sig::Matrix &transform) override
 Register a transform between two frames. More...
 
bool setTransformStatic (const std::string &target_frame_id, const std::string &source_frame_id, const yarp::sig::Matrix &transform) override
 Register a static transform between two frames. More...
 
bool deleteTransform (const std::string &target_frame_id, const std::string &source_frame_id) override
 Deletes a transform between two frames. More...
 
bool transformPoint (const std::string &target_frame_id, const std::string &source_frame_id, const yarp::sig::Vector &input_point, yarp::sig::Vector &transformed_point) override
 Transform a point into the target frame. More...
 
bool transformPose (const std::string &target_frame_id, const std::string &source_frame_id, const yarp::sig::Vector &input_pose, yarp::sig::Vector &transformed_pose) override
 Transform a Stamped Pose into the target frame. More...
 
bool transformQuaternion (const std::string &target_frame_id, const std::string &source_frame_id, const yarp::math::Quaternion &input_quaternion, yarp::math::Quaternion &transformed_quaternion) override
 Transform a quaternion into the target frame. More...
 
bool waitForTransform (const std::string &target_frame_id, const std::string &source_frame_id, const double &timeout) override
 Block until a transform from source_frame_id to target_frame_id is possible or it times out. More...
 
bool threadInit () override
 Initialization method. More...
 
void threadRelease () override
 Release method. More...
 
void run () override
 Loop function. More...
 
bool priv_generate_view ()
 
std::string priv_get_matrix_as_text (yarp::math::FrameTransform *t)
 
- Public Member Functions inherited from yarp::dev::DeviceDriver
 ~DeviceDriver () override=default
 Destructor. More...
 
template<class T >
bool view (T *&x)
 Get an interface to the device driver. More...
 
virtual DeviceDrivergetImplementation ()
 Some drivers are bureaucrats, pointing at others. More...
 
- Public Member Functions inherited from yarp::os::IConfig
virtual ~IConfig ()
 Destructor. More...
 
virtual bool configure (Searchable &config)
 Change online parameters. More...
 
- Public Member Functions inherited from yarp::dev::IFrameTransform
virtual ~IFrameTransform ()
 Destructor. More...
 
- Public Member Functions inherited from yarp::os::PortReader
virtual ~PortReader ()
 Destructor. More...
 
virtual Type getReadType () const
 
- Public Member Functions inherited from yarp::os::PeriodicThread
 PeriodicThread (double period, ShouldUseSystemClock useSystemClock=ShouldUseSystemClock::No, PeriodicThreadClock clockAccuracy=PeriodicThreadClock::Relative)
 Constructor. More...
 
 PeriodicThread (double period, PeriodicThreadClock clockAccuracy)
 Constructor. More...
 
virtual ~PeriodicThread ()
 
bool start ()
 Call this to start the thread. More...
 
void step ()
 Call this to "step" the thread rather than starting it. More...
 
void stop ()
 Call this to stop the thread, this call blocks until the thread is terminated (and releaseThread() called). More...
 
void askToStop ()
 Stop the thread. More...
 
bool isRunning () const
 Returns true when the thread is started, false otherwise. More...
 
bool isSuspended () const
 Returns true when the thread is suspended, false otherwise. More...
 
bool setPeriod (double period)
 Set the (new) period of the thread. More...
 
double getPeriod () const
 Return the current period of the thread. More...
 
void suspend ()
 Suspend the thread, the thread keeps running by doLoop is never executed. More...
 
void resume ()
 Resume the thread if previously suspended. More...
 
void resetStat ()
 Reset thread statistics. More...
 
double getEstimatedPeriod () const
 Return estimated period since last reset. More...
 
void getEstimatedPeriod (double &av, double &std) const
 Return estimated period since last reset. More...
 
unsigned int getIterations () const
 Return the number of iterations performed since last reset. More...
 
double getEstimatedUsed () const
 Return the estimated duration of the run() function since last reset. More...
 
void getEstimatedUsed (double &av, double &std) const
 Return estimated duration of the run() function since last reset. More...
 
int setPriority (int priority, int policy=-1)
 Set the priority and scheduling policy of the thread, if the OS supports that. More...
 
int getPriority () const
 Query the current priority of the thread, if the OS supports that. More...
 
int getPolicy () const
 Query the current scheduling policy of the thread, if the OS supports that. More...
 

Protected Types

enum  show_transforms_in_diagram_t {
  do_not_show = 0 ,
  show_quaternion = 1 ,
  show_matrix = 2 ,
  show_rpy = 3
}
 

Protected Attributes

yarp::os::Port m_rpc_InterfaceToUser
 
std::string m_local_name
 
double m_period
 
std::mutex m_rpc_mutex
 
std::vector< broadcast_port_t * > m_array_of_ports
 
show_transforms_in_diagram_t m_show_transforms_in_diagram = do_not_show
 
yarp::robotinterface::Robot m_robot
 
yarp::dev::IFrameTransformStorageGetm_ift_get = nullptr
 
yarp::dev::IFrameTransformStorageSetm_ift_set = nullptr
 
yarp::dev::IFrameTransformStorageUtilsm_ift_util = nullptr
 

Additional Inherited Members

- Public Types inherited from yarp::dev::IFrameTransform
enum  {
  TRANSFORM_OK = 0 ,
  TRANSFORM_GENERAL_ERROR = 1 ,
  TRANSFORM_TIMEOUT = 2
}
 
- Protected Member Functions inherited from yarp::os::PeriodicThread
virtual void beforeStart ()
 Called just before a new thread starts. More...
 
virtual void afterStart (bool success)
 Called just after a new thread starts (or fails to start), this is executed by the same thread that calls start(). More...
 

Detailed Description

frameTransformClient: A client to manage FrameTransforms for a robot (For more information, go to FrameTransform: start all the required devices needed for transforming frames)

Description of input parameters

Parameters required by this device are:

Parameter name SubParameter Type Units Default Value Required Description
filexml_option - string - ftc_local_only.xml no The name of the xml file containing the needed client configuration
period - float - 10ms no The period for publishing individual tfs on port

Example of command line:

yarpdev --device frameTransformClient --filexml_option ftc_local_only.xml

Example of configuration file using .ini format.

device frameTransformClient
filexml_option ftc_local_only.xml

Definition at line 64 of file FrameTransformClient.h.

Member Enumeration Documentation

◆ show_transforms_in_diagram_t

Enumerator
do_not_show 
show_quaternion 
show_matrix 
show_rpy 

Definition at line 96 of file FrameTransformClient.h.

Constructor & Destructor Documentation

◆ FrameTransformClient()

FrameTransformClient::FrameTransformClient ( )

Definition at line 775 of file FrameTransformClient.cpp.

◆ ~FrameTransformClient()

FrameTransformClient::~FrameTransformClient ( )
default

Member Function Documentation

◆ allFramesAsString()

bool FrameTransformClient::allFramesAsString ( std::string &  all_frames)
overridevirtual

Creates a debug string containing the list of all registered frames.

Parameters
all_framesthe returned string containing the frames
Returns
true/false

Implements yarp::dev::IFrameTransform.

Definition at line 374 of file FrameTransformClient.cpp.

◆ canTransform()

bool FrameTransformClient::canTransform ( const std::string &  target_frame,
const std::string &  source_frame 
)
overridevirtual

Test if a transform exists.

Parameters
target_frame_idthe name of target reference frame
source_frame_idthe name of source reference frame
Returns
true/false

Implements yarp::dev::IFrameTransform.

Definition at line 444 of file FrameTransformClient.cpp.

◆ clear()

bool FrameTransformClient::clear ( )
overridevirtual

Removes all the registered transforms.

Returns
true/false

Implements yarp::dev::IFrameTransform.

Definition at line 449 of file FrameTransformClient.cpp.

◆ close()

bool FrameTransformClient::close ( )
overridevirtual

Close the DeviceDriver.

Returns
true/false on success/failure.

Reimplemented from yarp::dev::DeviceDriver.

Definition at line 366 of file FrameTransformClient.cpp.

◆ deleteTransform()

bool FrameTransformClient::deleteTransform ( const std::string &  target_frame_id,
const std::string &  source_frame_id 
)
overridevirtual

Deletes a transform between two frames.

Parameters
target_frame_idthe name of target reference frame
source_frame_idthe name of source reference frame
Returns
true/false

Implements yarp::dev::IFrameTransform.

Definition at line 681 of file FrameTransformClient.cpp.

◆ frameExists()

bool FrameTransformClient::frameExists ( const std::string &  frame_id)
overridevirtual

Check if a frame exists.

Parameters
frame_idthe frame to be searched
target_frame_idthe name of target reference frame
source_frame_idthe name of source reference frame
Returns
true/false

Implements yarp::dev::IFrameTransform.

Definition at line 459 of file FrameTransformClient.cpp.

◆ getAllFrameIds()

bool FrameTransformClient::getAllFrameIds ( std::vector< std::string > &  ids)
overridevirtual

Gets a vector containing all the registered frames.

Parameters
idsthe returned vector containing all frame ids
Returns
true/false

Implements yarp::dev::IFrameTransform.

Definition at line 475 of file FrameTransformClient.cpp.

◆ getParent()

bool FrameTransformClient::getParent ( const std::string &  frame_id,
std::string &  parent_frame_id 
)
overridevirtual

Get the parent of a frame.

Parameters
frame_idthe name of target reference frame
parent_frame_idthe name of parent reference frame
Returns
true/false

Implements yarp::dev::IFrameTransform.

Definition at line 508 of file FrameTransformClient.cpp.

◆ getTransform()

bool FrameTransformClient::getTransform ( const std::string &  target_frame_id,
const std::string &  source_frame_id,
yarp::sig::Matrix transform 
)
overridevirtual

Get the transform between two frames.

Parameters
target_frame_idthe name of target reference frame
source_frame_idthe name of source reference frame
transformthe transformation matrix from source_frame_id to target_frame_id
Returns
true/false

Implements yarp::dev::IFrameTransform.

Definition at line 574 of file FrameTransformClient.cpp.

◆ open()

bool FrameTransformClient::open ( yarp::os::Searchable config)
overridevirtual

Open the DeviceDriver.

Parameters
configis a list of parameters for the device. Which parameters are effective for your device can vary. See device invocation examples. If there is no example for your device, you can run the "yarpdev" program with the verbose flag set to probe what parameters the device is checking. If that fails too, you'll need to read the source code (please nag one of the yarp developers to add documentation for your device).
Returns
true/false upon success/failure

Reimplemented from yarp::dev::DeviceDriver.

Definition at line 296 of file FrameTransformClient.cpp.

◆ priv_generate_view()

bool FrameTransformClient::priv_generate_view ( )

Definition at line 856 of file FrameTransformClient.cpp.

◆ priv_get_matrix_as_text()

string FrameTransformClient::priv_get_matrix_as_text ( yarp::math::FrameTransform t)

Definition at line 821 of file FrameTransformClient.cpp.

◆ read()

bool FrameTransformClient::read ( yarp::os::ConnectionReader reader)
overridevirtual

Read this object from a network connection.

Override this for your particular class.

Parameters
readeran interface to the network connection for reading
Returns
true iff the object is successfully read

Implements yarp::os::PortReader.

Definition at line 33 of file FrameTransformClient.cpp.

◆ run()

void FrameTransformClient::run ( )
overridevirtual

Loop function.

This is the thread itself. The thread calls the run() function every <period> ms. At the end of each run, the thread will sleep the amounth of time required, taking into account the time spent inside the loop function. Example: requested period is 10ms, the run() function take 3ms to be executed, the thread will sleep for 7ms.

Note: after each run is completed, the thread will call a yield() in order to facilitate other threads to run.

Implements yarp::os::PeriodicThread.

Definition at line 793 of file FrameTransformClient.cpp.

◆ setTransform()

bool FrameTransformClient::setTransform ( const std::string &  target_frame_id,
const std::string &  source_frame_id,
const yarp::sig::Matrix transform 
)
overridevirtual

Register a transform between two frames.

Parameters
target_frame_idthe name of target reference frame
source_frame_idthe name of source reference frame
transformthe transformation matrix from source_frame_id to target_frame_id
Returns
true/false

Implements yarp::dev::IFrameTransform.

Definition at line 609 of file FrameTransformClient.cpp.

◆ setTransformStatic()

bool FrameTransformClient::setTransformStatic ( const std::string &  target_frame_id,
const std::string &  source_frame_id,
const yarp::sig::Matrix transform 
)
overridevirtual

Register a static transform between two frames.

Parameters
target_frame_idthe name of target reference frame
source_frame_idthe name of source reference frame
transformthe transformation matrix from source_frame_id to target_frame_id
Returns
true/false

Implements yarp::dev::IFrameTransform.

Definition at line 647 of file FrameTransformClient.cpp.

◆ threadInit()

bool FrameTransformClient::threadInit ( )
overridevirtual

Initialization method.

The thread executes this function when it starts and before "run". This is a good place to perform initialization tasks that need to be done by the thread itself (device drivers initialization, memory allocation etc). If the function returns false the thread quits and never calls "run". The return value of threadInit() is notified to the class and passed as a parameter to afterStart(). Note that afterStart() is called by the same thread that is executing the "start" method.

Reimplemented from yarp::os::PeriodicThread.

Definition at line 782 of file FrameTransformClient.cpp.

◆ threadRelease()

void FrameTransformClient::threadRelease ( )
overridevirtual

Release method.

The thread executes this function once when it exits, after the last "run". This is a good place to release resources that were initialized in threadInit() (release memory, and device driver resources).

Reimplemented from yarp::os::PeriodicThread.

Definition at line 788 of file FrameTransformClient.cpp.

◆ transformPoint()

bool FrameTransformClient::transformPoint ( const std::string &  target_frame_id,
const std::string &  source_frame_id,
const yarp::sig::Vector input_point,
yarp::sig::Vector transformed_point 
)
overridevirtual

Transform a point into the target frame.

Parameters
target_frame_idthe name of target reference frame
source_frame_idthe name of frame in which input_point is expressed
input_pointthe input point (x y z)
transformed_pointthe returned point (x y z)
Returns
true/false

Implements yarp::dev::IFrameTransform.

Definition at line 691 of file FrameTransformClient.cpp.

◆ transformPose()

bool FrameTransformClient::transformPose ( const std::string &  target_frame_id,
const std::string &  source_frame_id,
const yarp::sig::Vector input_pose,
yarp::sig::Vector transformed_pose 
)
overridevirtual

Transform a Stamped Pose into the target frame.

Parameters
target_frame_idthe name of target reference frame
source_frame_idthe name of frame in which input_pose is expressed
input_posethe input quaternion (x y z r p y)
transformed_posethe returned (x y z r p y)
Returns
true/false

Implements yarp::dev::IFrameTransform.

Definition at line 711 of file FrameTransformClient.cpp.

◆ transformQuaternion()

bool FrameTransformClient::transformQuaternion ( const std::string &  target_frame_id,
const std::string &  source_frame_id,
const yarp::math::Quaternion input_quaternion,
yarp::math::Quaternion transformed_quaternion 
)
overridevirtual

Transform a quaternion into the target frame.

Parameters
target_frame_idthe name of target reference frame
source_frame_idthe name of frame in which input_quaternion is expressed
input_quaternionthe input quaternion (x y z w)
transformed_quaternionthe returned quaternion (x y z w)
Returns
true/false

Implements yarp::dev::IFrameTransform.

Definition at line 745 of file FrameTransformClient.cpp.

◆ waitForTransform()

bool FrameTransformClient::waitForTransform ( const std::string &  target_frame_id,
const std::string &  source_frame_id,
const double &  timeout 
)
overridevirtual

Block until a transform from source_frame_id to target_frame_id is possible or it times out.

Parameters
target_frame_idthe name of target reference frame
source_frame_idthe name of source reference frame
timeout(in seconds) to wait for
error_msgstring filled with error message (if error occurred)
Returns
true/false

Implements yarp::dev::IFrameTransform.

Definition at line 759 of file FrameTransformClient.cpp.

Member Data Documentation

◆ m_array_of_ports

std::vector<broadcast_port_t*> FrameTransformClient::m_array_of_ports
protected

Definition at line 93 of file FrameTransformClient.h.

◆ m_ift_get

yarp::dev::IFrameTransformStorageGet* FrameTransformClient::m_ift_get = nullptr
protected

Definition at line 107 of file FrameTransformClient.h.

◆ m_ift_set

yarp::dev::IFrameTransformStorageSet* FrameTransformClient::m_ift_set = nullptr
protected

Definition at line 108 of file FrameTransformClient.h.

◆ m_ift_util

yarp::dev::IFrameTransformStorageUtils* FrameTransformClient::m_ift_util = nullptr
protected

Definition at line 109 of file FrameTransformClient.h.

◆ m_local_name

std::string FrameTransformClient::m_local_name
protected

Definition at line 81 of file FrameTransformClient.h.

◆ m_period

double FrameTransformClient::m_period
protected

Definition at line 82 of file FrameTransformClient.h.

◆ m_robot

yarp::robotinterface::Robot FrameTransformClient::m_robot
protected

Definition at line 106 of file FrameTransformClient.h.

◆ m_rpc_InterfaceToUser

yarp::os::Port FrameTransformClient::m_rpc_InterfaceToUser
protected

Definition at line 80 of file FrameTransformClient.h.

◆ m_rpc_mutex

std::mutex FrameTransformClient::m_rpc_mutex
protected

Definition at line 83 of file FrameTransformClient.h.

◆ m_show_transforms_in_diagram

show_transforms_in_diagram_t FrameTransformClient::m_show_transforms_in_diagram = do_not_show
protected

Definition at line 103 of file FrameTransformClient.h.


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