In file /home/blah/darwin2k/src/d2k/ctrl/sriController.h:a robot controller that uses the singularity robust inverse (SRI) of the jacobian to follow cartesian-space trajectories.
Inheritance:
Public Fields
-
Internal controller state
-
double mu
- ratio for detecting singularity This variable's value must often be tuned for a specific configuration and task.
-
double lambda0
- weight for identity matrix in SRI This variable's value must often be tuned for a specific configuration and task.
-
int singularCount
- records the number of times the jacobian was singular
-
double ignoreLimitThresh
- threshold for joint limit avoidance.
-
double gradientStepSize
- size of step to take in gradient direction.
-
int doGradientDescent
- determines whether joint limits are avoided using a gradient descent method
-
const char* jointControllerName
- the label of the jointController (if any) to be used to compute torque commands from velocity commands
-
double minRate
- the minimum rate considered to be progress towards a goal
-
int reachedFirst
- indicates whether the first points of all paths have been reached
-
int lastNumEndPts
- indicates whether the last points of all paths have been reached
-
sriControllerMode mode
- the current controller mode
-
jointController* jtCtrl
- the joint controller used to compute torque commands (if any)
Public Methods
-
sriController(void)
- constructor
-
~sriController(void)
- destructor
-
virtual int readParams(paramParser* parser)
- reads sriController-specific parameters from a p-file parser.
-
virtual int setVariables(const ptrList* taskParams)
- reads sriController-specific variables from task parameters.
-
virtual int simInit(d2kSimulator* sim)
- locates the jointController named by the variable jointControllerName, if any, and stores it in jtCtrl
-
void setMode(sriControllerMode m)
- sets the current mode
Public Members
-
enum sriControllerMode
- control modes for sriControllers.
Public Fields
-
vector accCmd
-
vector Tcmd
-
mechanism* mech
-
dynoTimer* timer
-
dofInfluence* inf
-
int alwaysUpdate
Public Methods
-
virtual double maxDt(void)
-
virtual int computeTorqueCommand(double currentTime, int &computedAcc)
-
virtual int computeAccelerationCommand(double currentTime)
-
virtual int madeProgress(double currentTime)
-
virtual int reset(void)
Public Members
-
inherited from d2kComponent
-
not currently used
Protected Fields
-
double _maxDt
Public Fields
-
d2kSimulator* sim
-
configuration* cfg
-
const char* label
-
int active
Public Methods
-
virtual int minCfgs(void) const
-
virtual int maxCfgs(void) const
-
virtual const char* getCfgName(int i)
-
virtual int init(ptrList* Cfgs)
-
virtual int forceCfgResolution(void)
-
virtual int cleanup(void)
-
virtual int update(int &violated)
-
virtual const cfgLabelRecord* getLabelRec(int i) const
Public Fields
-
static int staticClassID
-
int objectID
-
int verboseLevel
Public Methods
-
virtual const char* className(void) const
-
virtual synObject* copy(void) const
-
virtual int isOfType(int typeNum, int derivedOk)
-
static int setStaticClassID(void)
-
virtual int classID(void) const
Documentation
a robot controller that uses the singularity robust inverse (SRI) of
the jacobian to follow cartesian-space trajectories. This controller
is based on the original SRI formulation (see work by Nakamura or
by Kelmar & Khosla), with joint limit avoidance (see Leigois), and
with several additions as described in the Darwin2K book (or thesis).
File variables
- double mu = 0.1;
- double lambda0 = 0.0003;
- double ignoreLimitThresh = 0.1;
- double gradientStepSize = 0.001;
- double doGradientDescent = 1;
Also see controller class for other
parameters.
- enum sriControllerMode
- control modes for sriControllers.
- FIND_BASE_POSE - only base DOFs are used, and the
base is allowed to move holonomically
- FIND_MECH_POSE - all DOFs are used, and the base
is allowed to move holonomically
- NORMAL - all DOFs are used, and the base's
non-holonomic constraints (if any) are observed
- Internal controller state
- vector velCmd
- the computed joint velocity command
- vector limitGradient
- gradient of the configuration's joint limit function, used for
joint limit avoidance if a robot has kinematic redundancy
- vector dx
- desired cartesian motion vector for all end effectors
- vector cost
- cost vector for all DOFs
- vector maxVel
- maximum velocity vector for all DOFs
- matrix nullSpace
- nullspace of cfg's jacobian, used for joint limit avoidance
- matrix nullSpaceInv
- pseudoinverse of nullspace
- matrix P
- projection matrix; projects onto nullspace
- matrix* dirP
- projection matrix--removes unwanted components from jacobian & commands
- double lastOmega
- manipulability measure at previous timestep
- double mu
- ratio for detecting singularity
This variable's value must often be tuned for a specific configuration
and task. When synthesizing configurations, it is a good idea to
include this as a task parameter.
- double lambda0
- weight for identity matrix in SRI
This variable's value must often be tuned for a specific configuration
and task. When synthesizing configurations, it is a good idea to
include this as a task parameter.
- int singularCount
- records the number of times the jacobian was singular
- double ignoreLimitThresh
- threshold for joint limit avoidance. Joint limit gradients
with magnitudes less than ignoreLimitThresh are ignored.
This variable's value must often be tuned for a specific configuration
and task. When synthesizing configurations, it is a good idea to
include this as a task parameter.
- double gradientStepSize
- size of step to take in gradient direction.
This variable's value must often be tuned for a specific configuration
and task. When synthesizing configurations, it is a good idea to
include this as a task parameter.
- int doGradientDescent
- determines whether joint limits are avoided using a gradient descent
method
- const char* jointControllerName
- the label of the jointController (if any) to be used to compute
torque commands from velocity commands
- double minRate
- the minimum rate considered to be progress towards a goal
- int reachedFirst
- indicates whether the first points of all paths have been reached
- int lastNumEndPts
- indicates whether the last points of all paths have been reached
- sriControllerMode mode
- the current controller mode
- jointController* jtCtrl
- the joint controller used to compute torque commands (if any)
- sriController(void)
- constructor
- ~sriController(void)
- destructor
- virtual int readParams(paramParser* parser)
- reads sriController-specific parameters from a p-file parser.
The variables read from the p-file are:
- double mu;
- double lambda0;
- double ignoreLimitThresh;
- double gradientStepSize;
- double minRate;
- int doGradientDescent
See the documentation for each of these members for their meanings.
- virtual int setVariables(const ptrList* taskParams)
- reads sriController-specific variables from task parameters.
The variables used are:
- double mu;
- double lambda0;
- double ignoreLimitThresh;
- double gradientStepSize;
- double minRate;
- int doGradientDescent
See the documentation for each of these members for their meanings.
- virtual int simInit(d2kSimulator* sim)
- locates the jointController named by the variable jointControllerName,
if any, and stores it in jtCtrl
- void setMode(sriControllerMode m)
- sets the current mode
- Direct child classes:
- ffController
Alphabetic index HTML hierarchy of classes or Java
This page was generated with the help of DOC++.