SCL  1.0
Standard Control Library : Control, dynamics, physics, and simulation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Macros Groups Pages
CDynamicsBase.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 CDynamicsBase.hpp
24  *
25  * Created on: Aug 23, 2010
26  *
27  * Copyright (C) 2010
28  *
29  * Author: Samir Menon <smenon@stanford.edu>
30  */
31 
32 #ifndef CDYNAMICSBASE_HPP_
33 #define CDYNAMICSBASE_HPP_
34 
35 #include <scl/DataTypes.hpp>
36 #include <scl/data_structs/SRobotIO.hpp>
37 #include <scl/data_structs/SGcModel.hpp>
38 
39 #include <Eigen/Dense>
40 #include <string>
41 
42 namespace scl {
43 
56 {
57 public:
58  /* *******************************************************************
59  * Computational functions.
60  * ******************************************************************* */
67  virtual sBool computeGCModel(
69  const SRobotSensors * arg_sensor_data,
72  SGcModel * arg_gc_model)=0;
73 
74  /* *******************************************************************
75  * Coordinate Transformations
76  * ******************************************************************* */
84  const Eigen::VectorXd& arg_q)
85  { return false; }
86 
94  SRigidBodyDyn& arg_link,
96  const Eigen::VectorXd& arg_q)
97  { return false; }
98 
112  Eigen::Affine3d& arg_T,
114  SRigidBodyDyn& arg_link,
117  const SRigidBodyDyn* arg_ancestor,
119  const Eigen::VectorXd& arg_q)
120  { return false; }
121 
122  /* *******************************************************************
123  * Compute Jacobians
124  * ******************************************************************* */
133  Eigen::MatrixXd& arg_J,
136  SRigidBodyDyn& arg_link,
138  const Eigen::VectorXd& arg_q,
140  const Eigen::Vector3d& arg_pos_local)
141  { return false; }
142 
152  Eigen::MatrixXd& arg_J,
154  const SRigidBodyDyn& arg_link,
156  const Eigen::VectorXd& arg_q,
158  const Eigen::Vector3d& arg_pos_local) const
159  { return false; }
160 
169  Eigen::MatrixXd& arg_J,
171  const SRigidBodyDyn& arg_link,
174  const SRigidBodyDyn* arg_ancestor,
176  const Eigen::VectorXd& arg_q,
178  const Eigen::Vector3d& arg_pos_local)
179  { return false; }
180 
187  Eigen::MatrixXd& arg_J,
189  const SRigidBodyDyn& arg_link,
192  const SRigidBodyDyn* arg_ancestor,
194  const Eigen::VectorXd& arg_q,
196  const Eigen::Vector3d& arg_pos_local)
197  { return false; }
198 
205  Eigen::MatrixXd& arg_J,
207  const SRigidBodyDyn& arg_link,
210  const SRigidBodyDyn* arg_ancestor,
212  const Eigen::VectorXd& arg_q,
214  const Eigen::Vector3d& arg_pos_local)
215  { return false; }
216 
217  /* *******************************************************************
218  * Integrator functions.
219  * ******************************************************************* */
220 
235  { return false; }
236 
249  virtual sBool integrate(
253  SRobotIO& arg_inputs,
257  const sFloat arg_time_interval)
258  { return false; }
259 
260  /* *******************************************************************
261  * Dynamics State functions.
262  * ******************************************************************* */
268  const Eigen::VectorXd& arg_q,
270  const Eigen::VectorXd& arg_dq)
271  { return false; }
272 
278  const Eigen::VectorXd& arg_q)
279  { return false; }
280 
281  /* *******************************************************************
282  * Initialization functions.
283  * ******************************************************************* */
286 
288  virtual ~CDynamicsBase(){}
289 
302  virtual sBool init(const SRobotParsed& arg_robot_data)=0;
303 
305  virtual sBool hasBeenInit() { return has_been_init_; }
306 
307 protected:
311 
314 };
315 
316 }
317 
318 #endif /* CDYNAMICSBASE_HPP_ */
Definition: SRobotIO.hpp:107
virtual sFloat computeEnergyPotential(sutil::CMappedTree< std::string, SRigidBodyDyn > &arg_tree, const Eigen::VectorXd &arg_q)
Definition: CDynamicsBase.hpp:274
virtual sBool computeGCModel(const SRobotSensors *arg_sensor_data, SGcModel *arg_gc_model)=0
virtual sBool computeJacobian(Eigen::MatrixXd &arg_J, const SRigidBodyDyn &arg_link, const Eigen::VectorXd &arg_q, const Eigen::Vector3d &arg_pos_local) const
Definition: CDynamicsBase.hpp:150
virtual sBool computeJacobianWithTransforms(Eigen::MatrixXd &arg_J, SRigidBodyDyn &arg_link, const Eigen::VectorXd &arg_q, const Eigen::Vector3d &arg_pos_local)
Definition: CDynamicsBase.hpp:131
Definition: SRobotParsed.hpp:51
virtual sFloat computeEnergyKinetic(sutil::CMappedTree< std::string, SRigidBodyDyn > &arg_tree, const Eigen::VectorXd &arg_q, const Eigen::VectorXd &arg_dq)
Definition: CDynamicsBase.hpp:264
Definition: SGcModel.hpp:53
const SRobotParsed * robot_parsed_data_
Definition: CDynamicsBase.hpp:313
Definition: CMappedList.hpp:85
virtual sBool computeJacobianTrans(Eigen::MatrixXd &arg_J, const SRigidBodyDyn &arg_link, const SRigidBodyDyn *arg_ancestor, const Eigen::VectorXd &arg_q, const Eigen::Vector3d &arg_pos_local)
Definition: CDynamicsBase.hpp:185
virtual sBool hasBeenInit()
Definition: CDynamicsBase.hpp:305
virtual sBool computeJacobian(Eigen::MatrixXd &arg_J, const SRigidBodyDyn &arg_link, const SRigidBodyDyn *arg_ancestor, const Eigen::VectorXd &arg_q, const Eigen::Vector3d &arg_pos_local)
Definition: CDynamicsBase.hpp:167
virtual sBool computeTransformToAncestor(Eigen::Affine3d &arg_T, SRigidBodyDyn &arg_link, const SRigidBodyDyn *arg_ancestor, const Eigen::VectorXd &arg_q)
Definition: CDynamicsBase.hpp:110
Definition: CDynamicsBase.hpp:55
sBool has_been_init_
Definition: CDynamicsBase.hpp:310
bool sBool
Definition: DataTypes.hpp:54
virtual sBool computeTransform(SRigidBodyDyn &arg_link, const Eigen::VectorXd &arg_q)
Definition: CDynamicsBase.hpp:92
virtual ~CDynamicsBase()
Definition: CDynamicsBase.hpp:288
virtual sBool computeExternalContacts(sutil::CMappedList< std::string, SForce > &arg_contacts)
Definition: CDynamicsBase.hpp:230
virtual sBool computeJacobianRot(Eigen::MatrixXd &arg_J, const SRigidBodyDyn &arg_link, const SRigidBodyDyn *arg_ancestor, const Eigen::VectorXd &arg_q, const Eigen::Vector3d &arg_pos_local)
Definition: CDynamicsBase.hpp:203
Definition: CMappedTree.hpp:66
virtual sBool init(const SRobotParsed &arg_robot_data)=0
virtual sBool integrate(SRobotIO &arg_inputs, const sFloat arg_time_interval)
Definition: CDynamicsBase.hpp:249
virtual sBool computeTransformsForAllLinks(sutil::CMappedTree< std::string, SRigidBodyDyn > &arg_tree, const Eigen::VectorXd &arg_q)
Definition: CDynamicsBase.hpp:80
double sFloat
Definition: DataTypes.hpp:72
Definition: SRigidBodyDyn.hpp:56
Definition: SRobotIO.hpp:49
CDynamicsBase()
Definition: CDynamicsBase.hpp:285