Klamp't  0.9.0
OperationalSpaceController.h
1 #ifndef OPERATIONAL_SPACE_CONTROLLER_H
2 #define OPERATIONAL_SPACE_CONTROLLER_H
3 
4 #include "Controller.h"
5 #include <Klampt/Sensing/StateEstimator.h>
6 #include <KrisLibrary/robotics/IK.h>
7 #include <KrisLibrary/robotics/Contact.h>
8 #include <KrisLibrary/utils/SmartPointer.h>
9 
10 namespace Klampt {
11 
12 //task is q''[indices] = ddqdes
14 {
15  vector<int> indices;
16  Vector ddqdes;
17  Real weight;
18 };
19 
20 //task is x''[indices] = ddxdes
21 //position terms go first like in IKFunctions
23 {
24  IKGoal workspace;
25  Vector ddxdes;
26  Real weight;
27 };
28 
29 //task is (R*cm'')[1:numAxes] = ddxdes
31 {
32  Matrix3 R;
33  int numAxes;
34  Vector ddxdes;
35  Real weight;
36 };
37 
38 //task is T[indices] = Tdes
39 struct TorqueTask
40 {
41  vector<int> indices;
42  Vector Tdes;
43  Real weight;
44 };
45 
46 //Task is Af = fdes
47 //contacts point into the robot and are given the LOCAL frame
49 {
50  vector<int> links;
51  vector<ContactPoint> contacts;
52  Matrix A;
53  Vector fdes;
54  Real weight,penetrationWeight;
55 };
56 
93 {
95 
96  virtual const char* Type() const { return "OperationalSpaceController"; }
97  virtual void Update(Real dt);
98  virtual void Reset();
99  /*
100  virtual bool ReadState(File& f) {
101  if(!ReadFile(f,time)) return false;
102  return true;
103  }
104  virtual bool WriteState(File& f) const {
105  if(!WriteFile(f,time)) return false;
106  return true;
107  }
108  */
109 
110  //the bulk of the work is done here
111  void TasksToTorques(Vector& t);
112  bool IsValid() const;
113 
114  SmartPointer<IntegratedStateEstimator> stateEstimator;
115  Vector3 gravity;
116  vector<JointAccelTask> jointTasks;
117  vector<WorkspaceAccelTask> workspaceTasks;
118  vector<COMAccelTask> comTasks;
119  vector<TorqueTask> torqueTasks;
120  vector<ContactForceTask> contactForceTasks;
121 };
122 
123 } //namespace Klampt
124 
125 #endif
Definition: OperationalSpaceController.h:48
A base class for a robot controller. The base class does nothing.
Definition: Controller.h:29
Definition: OperationalSpaceController.h:13
The main robot type used in RobotSim.
Definition: Robot.h:83
A combination of multiple "tasks" that define a weighted optimization objective for the joint torques...
Definition: OperationalSpaceController.h:92
Definition: OperationalSpaceController.h:39
Definition: ContactDistance.h:6
Definition: OperationalSpaceController.h:22
Definition: OperationalSpaceController.h:30