MultiMotorController Class Reference

MultiMotorController class. More...

Inheritance diagram for MultiMotorController:

List of all members.

Public Member Functions

 MultiMotorController (QVector< PhyDOF * > motors, World *world)
 Constructor.
virtual ~MultiMotorController ()
 Destructor.
QVector< PhyDOF * > & motors ()
 return motors controlled
QVector< wPID * > & positionPIDs ()
 return PID used for controlling motors with position modality
bool setEnableLimitsRaw (int axis, bool b)
 Enable/disable the limits for the corresponding joint.
virtual void update ()
 apply the torque on the basis of minimum-jerk trajectory
QVector< wPID * > & velocityPIDs ()
 return PID used for controlling motors with velocity modality
DeviceDriver Interface
virtual bool close ()
 close
virtual bool configure (yarp::os::Searchable &config)
 configure
virtual bool open (yarp::os::Searchable &config)
 open
Common Control Interface
virtual bool getAxes (int *ax)
 see YARP documentation
virtual bool getRefAcceleration (int j, double *acc)
 see YARP documentation
virtual bool getRefAccelerations (double *accs)
 see YARP documentation
virtual bool setRefAcceleration (int j, double acc)
 see YARP documentation
virtual bool setRefAccelerations (const double *accs)
 see YARP documentation
virtual bool stop (int j)
 see YARP documentation
virtual bool stop ()
 see YARP documentation
IPositionControl Interface
virtual bool checkMotionDone (int j, bool *flag)
 see YARP documentation
virtual bool checkMotionDone (bool *flag)
 see YARP documentation
virtual bool getRefSpeed (int j, double *ref)
 see YARP documentation
virtual bool getRefSpeeds (double *spds)
 see YARP documentation
virtual bool positionMove (int j, double ref)
 see YARP documentation
virtual bool positionMove (const double *refs)
 see YARP documentation
virtual bool relativeMove (int j, double delta)
 see YARP documentation
virtual bool relativeMove (const double *deltas)
 see YARP documentation
virtual bool setPositionMode ()
 see YARP documentation
virtual bool setRefSpeed (int j, double sp)
 see YARP documentation
virtual bool setRefSpeeds (const double *spds)
 see YARP documentation
IVelocityControl Interface
virtual bool setVelocityMode ()
 see YARP documentation
virtual bool velocityMove (int j, double sp)
 see YARP documentation
virtual bool velocityMove (const double *sp)
 see YARP documentation
IControlMode Interface
virtual bool getControlMode (int j, int *mode)
 see YARP documentation
virtual bool getControlModes (int *modes)
 see YARP documentation
virtual bool setImpedancePositionMode (int)
 TOMASSINO: I don't know what to put here, leaving empty.
virtual bool setImpedanceVelocityMode (int)
 TOMASSINO: I don't know what to put here, leaving empty.
virtual bool setOpenLoopMode (int j)
 see YARP documentation
virtual bool setPositionMode (int j)
 see YARP documentation
virtual bool setTorqueMode (int j)
 see YARP documentation
virtual bool setVelocityMode (int j)
 see YARP documentation
IEncoders Interface
virtual bool getEncoder (int j, double *v)
 see YARP documentation
virtual bool getEncoders (double *encs)
 see YARP documentation
virtual bool getEncoderAcceleration (int j, double *spds)
 see YARP documentation
virtual bool getEncoderAccelerations (double *accs)
 see YARP documentation
virtual bool getEncoderSpeed (int j, double *sp)
 see YARP documentation
virtual bool getEncoderSpeeds (double *spds)
 see YARP documentation
virtual bool resetEncoder (int j)
 see YARP documentation
virtual bool resetEncoders ()
 see YARP documentation
virtual bool setEncoder (int j, double val)
 see YARP documentation
virtual bool setEncoders (const double *vals)
 see YARP documentation
IControlLimits Interface
virtual bool getLimits (int axis, double *min, double *max)
 see YARP documentation
virtual bool setLimits (int axis, double min, double max)
 see YARP documentation
IControlLimitsRaw Interface
virtual bool getLimitsRaw (int axis, double *min, double *max)
 see YARP documentation
virtual bool setLimitsRaw (int axis, double min, double max)
 see YARP documentation

Detailed Description

MultiMotorController class.

Motivation
This class allow to control the position or the velocity of a vector of PhyDOF
Description
It work in two modality: position and velocity.
Position Modality
It compute a minimum-jerk trajectory accordlying to the same equation implemented into iCub DSP chips.

\[ \Theta(t,T) = \left( 10\left(\frac{t}{T}\right)^3 - 15\left(\frac{t}{T}\right)^4 + 6\left(\frac{t}{T}\right)^5 \right) \left( x_f - x_0 \right) + x_0 + dx_0\left( \frac{t}{T} -6\left(\frac{t}{T}\right)^3 +8\left(\frac{t}{T}\right)^4 -3\left(\frac{t}{T}\right)^5 \right) \]

where $x_0$ if start position, $x_f$ final (desired) position, $T$ is the period on which movement will last and $dx_0$ is the velocity of joint when movement starts. The joints will be actuated in order to stay at position $\Theta(t,T)$ during the movement.
$T$ is calculated on the basis of reference speed (setRefSpeed) accordlying to following equation:

\[ T = \frac{\left| x_f - x_0 \right|}{ RefSpeed } \]

The time counter $t$ will resetted to zero at each positionMove calls and it span from 0 to $T$ incremented at each step of World::timeStep(), hence the total movement will require $\frac{T}{timeStep}$ steps to get completed.
The reference acceleration (RefAcceleration) will be used to know how much acceleration to set on motor during the movement.
Velocity Modality
It accelerate/decelerate the joint velocity in order to reach the desired setted by velocityMove without execeeding the reference acceleration setted (RelAcceleration)
Warnings

Definition at line 180 of file motorcontrollers.h.


Constructor & Destructor Documentation

MultiMotorController ( QVector< PhyDOF * >  motors,
World world 
)

Constructor.

Parameters:
dofsvector of TorqueMotors actuated by this controller

Definition at line 151 of file motorcontrollers.cpp.

References farsa::toRad().

~MultiMotorController ( ) [virtual]

Destructor.

Definition at line 210 of file motorcontrollers.cpp.


Member Function Documentation

bool checkMotionDone ( int  j,
bool *  flag 
) [virtual]

see YARP documentation

Definition at line 401 of file motorcontrollers.cpp.

bool checkMotionDone ( bool *  flag) [virtual]

see YARP documentation

Definition at line 411 of file motorcontrollers.cpp.

bool close ( ) [virtual]

close

Definition at line 269 of file motorcontrollers.cpp.

bool configure ( yarp::os::Searchable &  config) [virtual]

configure

Definition at line 273 of file motorcontrollers.cpp.

bool getAxes ( int *  ax) [virtual]

see YARP documentation

Definition at line 279 of file motorcontrollers.cpp.

bool getControlMode ( int  j,
int *  mode 
) [virtual]

see YARP documentation

Definition at line 594 of file motorcontrollers.cpp.

bool getControlModes ( int *  modes) [virtual]

see YARP documentation

Definition at line 602 of file motorcontrollers.cpp.

bool getEncoder ( int  j,
double *  v 
) [virtual]

see YARP documentation

Definition at line 629 of file motorcontrollers.cpp.

References farsa::toDegree().

bool getEncoderAcceleration ( int  j,
double *  spds 
) [virtual]

see YARP documentation

Definition at line 675 of file motorcontrollers.cpp.

bool getEncoderAccelerations ( double *  accs) [virtual]

see YARP documentation

Definition at line 679 of file motorcontrollers.cpp.

bool getEncoders ( double *  encs) [virtual]

see YARP documentation

Definition at line 641 of file motorcontrollers.cpp.

References farsa::toDegree().

bool getEncoderSpeed ( int  j,
double *  sp 
) [virtual]

see YARP documentation

Definition at line 652 of file motorcontrollers.cpp.

References farsa::toDegree().

bool getEncoderSpeeds ( double *  spds) [virtual]

see YARP documentation

Definition at line 664 of file motorcontrollers.cpp.

References farsa::toDegree().

bool getLimits ( int  axis,
double *  min,
double *  max 
) [virtual]

see YARP documentation

Definition at line 697 of file motorcontrollers.cpp.

References farsa::toDegree().

bool getLimitsRaw ( int  axis,
double *  min,
double *  max 
) [virtual]

see YARP documentation

Definition at line 723 of file motorcontrollers.cpp.

References farsa::toDegree().

bool getRefAcceleration ( int  j,
double *  acc 
) [virtual]

see YARP documentation

Definition at line 494 of file motorcontrollers.cpp.

References farsa::toDegree().

bool getRefAccelerations ( double *  accs) [virtual]

see YARP documentation

Definition at line 506 of file motorcontrollers.cpp.

References farsa::toDegree().

bool getRefSpeed ( int  j,
double *  ref 
) [virtual]

see YARP documentation

Definition at line 471 of file motorcontrollers.cpp.

References farsa::toDegree().

bool getRefSpeeds ( double *  spds) [virtual]

see YARP documentation

Definition at line 483 of file motorcontrollers.cpp.

References farsa::toDegree().

QVector<PhyDOF*>& motors ( ) [inline]

return motors controlled

Definition at line 193 of file motorcontrollers.h.

bool open ( yarp::os::Searchable &  config) [virtual]

open

Definition at line 265 of file motorcontrollers.cpp.

bool positionMove ( int  j,
double  ref 
) [virtual]

see YARP documentation

Definition at line 289 of file motorcontrollers.cpp.

References farsa::ramp(), and farsa::toRad().

bool positionMove ( const double *  refs) [virtual]

see YARP documentation

Definition at line 318 of file motorcontrollers.cpp.

References farsa::ramp(), and farsa::toRad().

QVector<wPID*>& positionPIDs ( ) [inline]

return PID used for controlling motors with position modality

Definition at line 197 of file motorcontrollers.h.

bool relativeMove ( int  j,
double  delta 
) [virtual]

see YARP documentation

Definition at line 346 of file motorcontrollers.cpp.

References farsa::ramp(), and farsa::toRad().

bool relativeMove ( const double *  deltas) [virtual]

see YARP documentation

Definition at line 374 of file motorcontrollers.cpp.

References farsa::ramp(), and farsa::toRad().

bool resetEncoder ( int  j) [virtual]

see YARP documentation

Definition at line 613 of file motorcontrollers.cpp.

bool resetEncoders ( ) [virtual]

see YARP documentation

Definition at line 617 of file motorcontrollers.cpp.

bool setEnableLimitsRaw ( int  axis,
bool  b 
)

Enable/disable the limits for the corresponding joint.

Definition at line 739 of file motorcontrollers.cpp.

Referenced by PhyiCub::PhyiCub().

bool setEncoder ( int  j,
double  val 
) [virtual]

see YARP documentation

Definition at line 621 of file motorcontrollers.cpp.

bool setEncoders ( const double *  vals) [virtual]

see YARP documentation

Definition at line 625 of file motorcontrollers.cpp.

virtual bool setImpedancePositionMode ( int  ) [inline, virtual]

TOMASSINO: I don't know what to put here, leaving empty.

Definition at line 278 of file motorcontrollers.h.

virtual bool setImpedanceVelocityMode ( int  ) [inline, virtual]

TOMASSINO: I don't know what to put here, leaving empty.

Definition at line 280 of file motorcontrollers.h.

bool setLimits ( int  axis,
double  min,
double  max 
) [virtual]

see YARP documentation

Definition at line 683 of file motorcontrollers.cpp.

References farsa::max(), farsa::min(), and farsa::toRad().

Referenced by PhyiCub::PhyiCub().

bool setLimitsRaw ( int  axis,
double  min,
double  max 
) [virtual]

see YARP documentation

Definition at line 711 of file motorcontrollers.cpp.

References farsa::toRad().

Referenced by PhyiCub::PhyiCub().

bool setOpenLoopMode ( int  j) [virtual]

see YARP documentation

Definition at line 609 of file motorcontrollers.cpp.

bool setPositionMode ( int  j) [virtual]

see YARP documentation

Definition at line 564 of file motorcontrollers.cpp.

bool setPositionMode ( ) [virtual]

see YARP documentation

Definition at line 284 of file motorcontrollers.cpp.

bool setRefAcceleration ( int  j,
double  acc 
) [virtual]

see YARP documentation

Definition at line 448 of file motorcontrollers.cpp.

References farsa::toRad().

bool setRefAccelerations ( const double *  accs) [virtual]

see YARP documentation

Definition at line 460 of file motorcontrollers.cpp.

References farsa::toRad().

bool setRefSpeed ( int  j,
double  sp 
) [virtual]

see YARP documentation

Definition at line 423 of file motorcontrollers.cpp.

References farsa::toRad().

bool setRefSpeeds ( const double *  spds) [virtual]

see YARP documentation

Definition at line 436 of file motorcontrollers.cpp.

References farsa::toRad().

bool setTorqueMode ( int  j) [virtual]

see YARP documentation

Definition at line 586 of file motorcontrollers.cpp.

bool setVelocityMode ( ) [virtual]

see YARP documentation

Definition at line 542 of file motorcontrollers.cpp.

bool setVelocityMode ( int  j) [virtual]

see YARP documentation

Definition at line 575 of file motorcontrollers.cpp.

bool stop ( int  j) [virtual]

see YARP documentation

Definition at line 517 of file motorcontrollers.cpp.

Referenced by PhyiCub::configurePosture().

bool stop ( ) [virtual]

see YARP documentation

Definition at line 530 of file motorcontrollers.cpp.

void update ( ) [virtual]

apply the torque on the basis of minimum-jerk trajectory

Implements MotorController.

Definition at line 217 of file motorcontrollers.cpp.

References World::timeStep(), and MotorController::world().

Referenced by PhyiCub::preUpdate().

bool velocityMove ( int  j,
double  sp 
) [virtual]

see YARP documentation

Definition at line 547 of file motorcontrollers.cpp.

References farsa::toRad().

bool velocityMove ( const double *  sp) [virtual]

see YARP documentation

Definition at line 556 of file motorcontrollers.cpp.

References farsa::toRad().

QVector<wPID*>& velocityPIDs ( ) [inline]

return PID used for controlling motors with velocity modality

Definition at line 205 of file motorcontrollers.h.


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