Klamp't  0.8.1
Public Member Functions | Public Attributes | List of all members
OperationalSpaceController Struct Reference

A combination of multiple "tasks" that define a weighted optimization objective for the joint torques. More...

#include <OperationalSpaceController.h>

Inheritance diagram for OperationalSpaceController:

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< IntegratedStateEstimatorstateEstimator
Vector3 gravity
vector< JointAccelTaskjointTasks
vector< WorkspaceAccelTaskworkspaceTasks
vector< COMAccelTaskcomTasks
vector< TorqueTasktorqueTasks
vector< ContactForceTaskcontactForceTasks
- Public Attributes inherited from RobotController
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.
 sensor input (filled in by simulator)
 motor command output (output to simulator)

Detailed Description

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.

The documentation for this struct was generated from the following file: