Klamp't
0.8.1
|
A combination of multiple "tasks" that define a weighted optimization objective for the joint torques. More...
#include <OperationalSpaceController.h>
Public Member Functions | |
OperationalSpaceController (Robot &robot) | |
virtual const char * | Type () const |
virtual void | Update (Real dt) |
virtual void | Reset () |
void | TasksToTorques (Vector &t) |
bool | IsValid () const |
Public Member Functions inherited from RobotController | |
RobotController (Robot &robot) | |
virtual bool | ReadState (File &f) |
virtual bool | WriteState (File &f) const |
virtual map< string, string > | Settings () const |
virtual bool | GetSetting (const string &name, string &str) const |
virtual bool | SetSetting (const string &name, const string &str) |
virtual vector< string > | Commands () const |
virtual bool | SendCommand (const string &name, const string &str) |
void | SetPIDCommand (const Config &qdes) |
void | SetPIDCommand (const Config &qdes, const Config &dqdes) |
void | SetFeedforwardPIDCommand (const Config &qdes, const Config &dqdes, const Vector &torques) |
void | SetTorqueCommand (const Vector &torques) |
bool | GetCommandedConfig (Config &q) |
bool | GetCommandedVelocity (Config &dq) |
bool | GetSensedConfig (Config &q) |
bool | GetSensedVelocity (Config &dq) |
Public Attributes | |
SmartPointer< IntegratedStateEstimator > | stateEstimator |
Vector3 | gravity |
vector< JointAccelTask > | jointTasks |
vector< WorkspaceAccelTask > | workspaceTasks |
vector< COMAccelTask > | comTasks |
vector< TorqueTask > | torqueTasks |
vector< ContactForceTask > | contactForceTasks |
Public Attributes inherited from RobotController | |
Robot & | robot |
Real | time |
Real | nominalTimeStep |
a "desired" time step, by default 0, which acts as a hint to the simulator. Note that it doesn't have to abide the hint. | |
RobotSensors * | sensors |
sensor input (filled in by simulator) | |
RobotMotorCommand * | command |
motor command output (output to simulator) | |
A combination of multiple "tasks" that define a weighted optimization objective for the joint torques.
For a contact-free robot, we have min_{T} gj(q''(T)) + gw(x''(T)) + gt(T) s.t. |T| <= Tmax where
For robots with contacts, we must have an estimate for the contact points in the list of ContactForceTasks. The problem is now:
min_{T,f} gj(q''(T,f)) + gw(x''(T,f)) + gt(T,f) + gf(f) s.t. |T| <= Tmax f >= 0 (represent f as a list of friction cone vectors) xf''(T,f) = 0 (contacts don't move into the object) with
If the xf''=0 constraint is not solvable, we add a penalty for xf'' movement and treat it as another workspace task.
Warning: not tested thoroughly.