iCub-main
Public Member Functions | Protected Member Functions | List of all members
iCub::iKin::iCubArmCartesianSolver Class Reference

Derived class which implements the on-line solver for the chain torso+arm. More...

#include <iKinSlv.h>

+ Inheritance diagram for iCub::iKin::iCubArmCartesianSolver:

Public Member Functions

 iCubArmCartesianSolver (const std::string &_slvName="armCartSolver")
 Constructor. More...
 
virtual bool open (yarp::os::Searchable &options)
 Configure the solver and start it up. More...
 
- Public Member Functions inherited from iCub::iKin::CartesianSolver
 CartesianSolver (const std::string &_slvName)
 Constructor. More...
 
virtual void interrupt ()
 Interrupt the open() method waiting for motor parts to be ready. More...
 
virtual void close ()
 Stop the solver and dispose it. More...
 
virtual bool isClosed () const
 To be called to check whether the solver has received a [quit] request. More...
 
virtual bool & getTimeoutFlag ()
 To be called to check whether communication timeout has been detected. More...
 
virtual void suspend ()
 Suspend the solver's main loop. More...
 
virtual void resume ()
 Resume the solver's main loop. More...
 
virtual ~CartesianSolver ()
 Default destructor. More...
 

Protected Member Functions

virtual PartDescriptorgetPartDesc (yarp::os::Searchable &options)
 
virtual bool decodeDOF (const yarp::sig::Vector &_dof)
 
- Protected Member Functions inherited from iCub::iKin::CartesianSolver
virtual yarp::sig::Vector solve (yarp::sig::Vector &xd)
 
virtual yarp::sig::Vector & encodeDOF ()
 
virtual bool handleJointsRestPosition (const yarp::os::Bottle *options, yarp::os::Bottle *reply=NULL)
 
virtual bool handleJointsRestWeights (const yarp::os::Bottle *options, yarp::os::Bottle *reply=NULL)
 
yarp::dev::PolyDriver * waitPart (const yarp::os::Property &partOpt)
 
bool isNewDOF (const yarp::sig::Vector &_dof)
 
bool changeDOF (const yarp::sig::Vector &_dof)
 
bool alignJointsBounds ()
 
bool setLimits (int axis, double min, double max)
 
void countUncontrolledJoints ()
 
void latchUncontrolledJoints (yarp::sig::Vector &joints)
 
void getFeedback (const bool wait=false)
 
void initPos ()
 
void lock ()
 
void unlock ()
 
void waitDOFHandling ()
 
void postDOFHandling ()
 
void fillDOFInfo (yarp::os::Bottle &reply)
 
void send (const yarp::sig::Vector &xd, const yarp::sig::Vector &x, const yarp::sig::Vector &q, double *tok)
 
void printInfo (const std::string &typ, const yarp::sig::Vector &xd, const yarp::sig::Vector &x, const yarp::sig::Vector &q, const double t)
 
virtual void prepareJointsRestTask ()
 
virtual void respond (const yarp::os::Bottle &command, yarp::os::Bottle &reply)
 
virtual bool threadInit ()
 
virtual void afterStart (bool)
 
virtual void run ()
 
virtual void threadRelease ()
 

Additional Inherited Members

- Static Protected Member Functions inherited from iCub::iKin::CartesianHelper
static void addVectorOption (yarp::os::Bottle &b, const int vcb, const yarp::sig::Vector &v)
 
static bool getDesiredOption (const yarp::os::Bottle &reply, yarp::sig::Vector &xdhat, yarp::sig::Vector &odhat, yarp::sig::Vector &qdhat)
 
static void addTargetOption (yarp::os::Bottle &b, const yarp::sig::Vector &xd)
 Appends to a bottle all data needed to command a target. More...
 
static void addDOFOption (yarp::os::Bottle &b, const yarp::sig::Vector &dof)
 Appends to a bottle all data needed to reconfigure chain's dof. More...
 
static void addJointsResPosOption (yarp::os::Bottle &b, const yarp::sig::Vector &restPos)
 Appends to a bottle all data needed to modify joints rest position. More...
 
static void addJointsRestWeightsOption (yarp::os::Bottle &b, const yarp::sig::Vector &restWeights)
 Appends to a bottle all data needed to modify joints rest weights. More...
 
static void addPoseOption (yarp::os::Bottle &b, const unsigned int pose)
 Appends to a bottle all data needed to change the pose mode. More...
 
static void addModeOption (yarp::os::Bottle &b, const bool tracking)
 Appends to a bottle all data needed to change the tracking mode. More...
 
static void addTokenOption (yarp::os::Bottle &b, const double token)
 Appends to a bottle a token to be exchanged with the solver. More...
 
static yarp::os::Bottle * getTargetOption (const yarp::os::Bottle &b)
 Retrieves commanded target data from a bottle. More...
 
static yarp::os::Bottle * getEndEffectorPoseOption (const yarp::os::Bottle &b)
 Retrieves the end-effector pose data. More...
 
static yarp::os::Bottle * getJointsOption (const yarp::os::Bottle &b)
 Retrieves the joints configuration data. More...
 
static bool getTokenOption (const yarp::os::Bottle &b, double *token)
 Retrieves the token from the bottle. More...
 
static bool computeFixationPointData (iKinChain &eyeL, iKinChain &eyeR, yarp::sig::Vector &fp)
 Retrieves current fixation point given the current kinematics configuration of the eyes. More...
 
static bool computeFixationPointData (iKinChain &eyeL, iKinChain &eyeR, yarp::sig::Vector &fp, yarp::sig::Matrix &J)
 Retrieves current fixation point and its Jacobian wrt eyes tilt-pan-vergence dofs given the current kinematics configuration of the eyes. More...
 
- Protected Attributes inherited from iCub::iKin::CartesianSolver
PartDescriptorprt
 
std::deque< yarp::dev::PolyDriver * > drv
 
std::deque< yarp::dev::IControlLimits * > lim
 
std::deque< yarp::dev::IEncoders * > enc
 
std::deque< int > jnt
 
std::deque< int * > rmp
 
iKinIpOptMinslv
 
SolverCallbackclb
 
RpcProcessorcmdProcessor
 
yarp::os::Port * rpcPort
 
InputPortinPort
 
yarp::os::BufferedPort< yarp::os::Bottle > * outPort
 
std::mutex mtx
 
std::string slvName
 
std::string type
 
unsigned int period
 
unsigned int ctrlPose
 
bool fullDOF
 
bool contModeOld
 
bool configured
 
bool closing
 
bool closed
 
bool interrupting
 
bool verbosity
 
bool timeout_detected
 
int maxPartJoints
 
int unctrlJointsNum
 
double ping_robot_tmo
 
double token
 
double * pToken
 
yarp::sig::Matrix hwLimits
 
yarp::sig::Matrix swLimits
 
yarp::sig::Vector unctrlJointsOld
 
yarp::sig::Vector dof
 
yarp::sig::Vector restJntPos
 
yarp::sig::Vector restWeights
 
yarp::sig::Vector xd_2ndTask
 
yarp::sig::Vector w_2ndTask
 
yarp::sig::Vector qd_3rdTask
 
yarp::sig::Vector w_3rdTask
 
yarp::sig::Vector idx_3rdTask
 
std::mutex mtx_dofEvent
 
std::condition_variable cv_dofEvent
 

Detailed Description

Derived class which implements the on-line solver for the chain torso+arm.

Definition at line 584 of file iKinSlv.h.

Constructor & Destructor Documentation

◆ iCubArmCartesianSolver()

iCub::iKin::iCubArmCartesianSolver::iCubArmCartesianSolver ( const std::string &  _slvName = "armCartSolver")
inline

Constructor.

Parameters
_slvNamespecifies the base name for all ports created. By default is "armCartSolver". See the father's class constructor for the description of the ports

Definition at line 598 of file iKinSlv.h.

Member Function Documentation

◆ decodeDOF()

bool iCubArmCartesianSolver::decodeDOF ( const yarp::sig::Vector &  _dof)
protectedvirtual

Reimplemented from iCub::iKin::CartesianSolver.

Definition at line 1831 of file iKinSlv.cpp.

◆ getPartDesc()

PartDescriptor * iCubArmCartesianSolver::getPartDesc ( yarp::os::Searchable &  options)
protectedvirtual

Implements iCub::iKin::CartesianSolver.

Definition at line 1761 of file iKinSlv.cpp.

◆ open()

bool iCubArmCartesianSolver::open ( yarp::os::Searchable &  options)
virtual

Configure the solver and start it up.

Parameters
optionscontains the set of options in form of a Property object.

Available options are:

robot <string>: example (robot icub), specifies the name of the robot to connect to.

type <string>: example (type right), specifies the type of the limb to be instantiated; it can be "left" or "right".

dof <(int int ...)>: example (dof (1 1 0 1 ...)), specifies which dof of the chain are actuated (by putting 1 in the corresponding position) and which not (with 0). The length of the provided list of 1's and 0's should match the number of chain's links. The special value 2 is used to keep the link status unchanged and proceed to the next link.

rest_pos <(double double ...)>: example (rest_pos (20.0 0.0 0.0 ...)), specifies in degrees the joints rest position used as secondary task in the minimization. The length of the provided list should match the number of chain's links. Default values are (0.0 0.0 0.0 ...).

rest_weights <(double double ...)>: example (rest_weights (1.0 0.0 0.0 1.0 ...)), specifies for each link the weights used for the secondary task minimization. The length of the provided list should match the number of the chain's links. Default values are (0.0 0.0 0.0 ...).

period <int>: example (period 30), specifies the thread period in ms.

pose <vocab>: example (pose full), specifies the end-effector pose the user wants to achieve; it can be [full] (position+orientation) or [xyz] (only position).

mode : example (mode cont), selects the solver mode between [cont] which implements a continuous tracking and [shot] which does not compensate for movements induced on unacatuated joints.

verbosity <vocab>: example (verbosity on), selects whether to report or not on the screen the result of each optimization instance; allowed values are [on] or [off].

tol <double>: example (tol 0.001), specifies the desired tolerance on the task function to be minimized.

constr_tol <double>: example (constr_tol 0.000001), specifies the desired tolerance for the constraints to comply with.

maxIter <int>: example (maxIter 200), specifies the maximum number of iterations allowed for one optimization instance.

interPoints <vocab>: example (interPoints on), selects whether to force or not the solver to output on the port all intermediate points of optimization instance; allowed values are [on] or [off].

ping_robot_tmo <double>: example (ping_robot_tmo 2.0), specifies a timeout in seconds during which robot state ports are pinged prior to connecting; a timeout equal to zero disables this option.

Returns
true/false if successful/failed

Reimplemented from iCub::iKin::CartesianSolver.

Definition at line 1813 of file iKinSlv.cpp.


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