SCL  1.0
Standard Control Library : Control, dynamics, physics, and simulation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Macros Groups Pages
CControllerMultiTask.hpp
1 /* This file is part of scl, a control and simulation library
2 for robots and biomechanical models.
3 
4 scl is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 3 of the License, or (at your option) any later version.
8 
9 Alternatively, you can redistribute it and/or
10 modify it under the terms of the GNU General Public License as
11 published by the Free Software Foundation; either version 2 of
12 the License, or (at your option) any later version.
13 
14 scl is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18 
19 You should have received a copy of the GNU Lesser General Public
20 License and a copy of the GNU General Public License along with
21 scl. If not, see <http://www.gnu.org/licenses/>.
22 */
23 /* \file CControllerMultiTask.hpp
24  *
25  * Created on: Jul 21, 2010
26  *
27  * Copyright (C) 2010
28  *
29  * Author: Samir Menon <smenon@stanford.edu>
30  */
31 
32 #ifndef CCONTROLLERTASK_HPP_
33 #define CCONTROLLERTASK_HPP_
34 
35 #include <scl/control/CControllerBase.hpp>
36 #include <scl/control/task/data_structs/SControllerMultiTask.hpp>
37 
38 #include <scl/control/task/CTaskBase.hpp>
39 #include <scl/control/task/CNonControlTaskBase.hpp>
40 #include <scl/control/task/CServo.hpp>
41 
42 #include <sutil/CMappedMultiLevelList.hpp>
43 
44 #include <string>
45 #include <vector>
46 
47 namespace scl
48 {
49  //Forward declare the dynamics API.
50  class CDynamicsBase;
51 
90  {
91  public:
92  /**********************************************
93  * CControllerBase API
94  * ********************************************/
97 
100 
103  virtual sBool computeControlForces();
104 
106  virtual sBool computeDynamics();
107 
115 
117  virtual const Eigen::VectorXd* getControlForces()
118  { return static_cast<const Eigen::VectorXd*>(&(data_->servo_.force_gc_)); }
119 
121  virtual sBool init(SControllerBase* arg_data,
122  scl::CDynamicsBase* arg_dynamics);
123 
125  virtual sBool reset();
126 
127 
128  /**********************************************
129  * Task-controller specific functions
130  * Use these for finer grained control!
131  ***********************************************/
137  bool addTask(const std::string &arg_task_name,
138  CTaskBase* arg_task, const sUInt arg_level);
139 
143  bool removeTask(const std::string &arg_task_name);
144 
146  CTaskBase * getTask(const std::string& arg_name);
147 
150  sUInt getNumTasks() const { return data_->tasks_.size(); }
151 
154  sUInt getNumTasks(const std::string& arg_type) const;
155 
157  sBool activateTask(const std::string& arg_task_name);
158 
160  sBool deactivateTask(const std::string& arg_task_name);
161 
162  /**********************************************
163  * Non Control Task specific functions
164  * Use these for finer grained control!
165  ***********************************************/
167  bool addNonControlTask(const std::string &arg_task_name,
168  CNonControlTaskBase* arg_task);
169 
173  bool removeNonControlTask(const std::string &arg_task_name);
174 
176  CNonControlTaskBase* getNonControlTask(const std::string& arg_name);
177 
180  sUInt getNumNonControlTasks() const { return tasks_non_ctrl_.size(); }
181 
183  sBool activateNonControlTask(const std::string& arg_type);
184 
186  sBool deactivateNonControlTask(const std::string& arg_type);
187 
188  protected:
194  bool computeRangeSpaces();
195 
198 
201 
206 
208  sUInt task_count_;
209 
212 
215 
216  public:
221  };
222 
223 }
224 
225 #endif /* CCONTROLLERTASK_HPP_ */
sutil::CMappedMultiLevelList< std::string, CTaskBase * > tasks_
Definition: CControllerMultiTask.hpp:205
virtual sBool computeNonControlOperations()
Definition: CControllerMultiTask.cpp:570
CServo servo_
Definition: CControllerMultiTask.hpp:200
Definition: CControllerMultiTask.hpp:89
Definition: SControllerMultiTask.hpp:54
bool addNonControlTask(const std::string &arg_task_name, CNonControlTaskBase *arg_task)
Definition: CControllerMultiTask.cpp:379
CNonControlTaskBase * getNonControlTask(const std::string &arg_name)
Definition: CControllerMultiTask.cpp:435
virtual ~CControllerMultiTask()
Definition: CControllerMultiTask.hpp:99
sBool activateTask(const std::string &arg_task_name)
Definition: CControllerMultiTask.cpp:336
sUInt task_non_ctrl_count_
Definition: CControllerMultiTask.hpp:214
virtual sBool computeDynamics()
Definition: CControllerMultiTask.cpp:536
CControllerMultiTask()
Definition: CControllerMultiTask.cpp:45
CTaskBase * active_task_
Definition: CControllerMultiTask.hpp:220
sBool deactivateNonControlTask(const std::string &arg_type)
Definition: CControllerMultiTask.cpp:477
sutil::CMappedMultiLevelList< std::string, STaskBase * > tasks_
Definition: SControllerMultiTask.hpp:65
Definition: CMappedList.hpp:85
virtual sBool init(SControllerBase *arg_data, scl::CDynamicsBase *arg_dynamics)
Definition: CControllerMultiTask.cpp:54
SServo servo_
Definition: SControllerMultiTask.hpp:58
sUInt getNumNonControlTasks() const
Definition: CControllerMultiTask.hpp:180
bool removeNonControlTask(const std::string &arg_task_name)
Definition: CControllerMultiTask.cpp:410
sUInt task_count_
Definition: CControllerMultiTask.hpp:208
sUInt getNumTasks() const
Definition: CControllerMultiTask.hpp:150
sutil::CMappedList< std::string, CNonControlTaskBase * > tasks_non_ctrl_
Definition: CControllerMultiTask.hpp:211
Definition: CDynamicsBase.hpp:55
Definition: CNonControlTaskBase.hpp:49
Eigen::VectorXd force_gc_
Definition: SServo.hpp:66
bool sBool
Definition: DataTypes.hpp:54
Definition: SControllerBase.hpp:48
bool addTask(const std::string &arg_task_name, CTaskBase *arg_task, const sUInt arg_level)
Definition: CControllerMultiTask.cpp:227
virtual sBool reset()
Definition: CControllerMultiTask.cpp:194
Definition: CControllerBase.hpp:59
Definition: CServo.hpp:54
Definition: CMappedMultiLevelList.hpp:48
sBool activateNonControlTask(const std::string &arg_type)
Definition: CControllerMultiTask.cpp:455
sBool deactivateTask(const std::string &arg_task_name)
Definition: CControllerMultiTask.cpp:356
bool removeTask(const std::string &arg_task_name)
Definition: CControllerMultiTask.cpp:259
bool computeRangeSpaces()
Definition: CControllerMultiTask.cpp:595
virtual const Eigen::VectorXd * getControlForces()
Definition: CControllerMultiTask.hpp:117
virtual sBool computeControlForces()
Definition: CControllerMultiTask.cpp:500
CTaskBase * getTask(const std::string &arg_name)
Definition: CControllerMultiTask.cpp:295
SControllerMultiTask * data_
Definition: CControllerMultiTask.hpp:197
Definition: CTaskBase.hpp:54