SCL  1.0
Standard Control Library : Control, dynamics, physics, and simulation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Macros Groups Pages
CDynamicsSclSpatial.hpp
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 /*
5  * CDynamicsSclSpatial.hpp
6  *
7  * Created on: Jun 2, 2014
8  * Author: Nayan Singhal <singhalnayan91@gmail.com>
9  * Brains in Silicon Lab,
10  * Stanford University.
11  */
12 
13 #ifndef CDYNAMICSSCLSPATIAL_HPP_
14 #define CDYNAMICSSCLSPATIAL_HPP_
15 
16 #include <scl/DataTypes.hpp>
17 #include <scl/dynamics/CDynamicsBase.hpp>
18 
19 #include <Eigen/Geometry>
20 #include <Eigen/Core>
21 
22 namespace scl_ext
23 {
31  {
32  public:
33  /* *******************************************************************
34  * Dynamics Algorithms
35  * ******************************************************************* */
39  const scl::SRobotIO *arg_io_data,
42  scl::SGcModel *arg_gc_model,
44  Eigen::VectorXd &ret_ddq);
45 
47  bool forwardDynamicsABA(
49  const scl::SRobotIO *arg_io_data,
52  scl::SGcModel *arg_gc_model,
54  Eigen::VectorXd &ret_ddq);
55 
57  bool inverseDynamicsNER(
59  const scl::SRobotIO *arg_io_data,
62  scl::SGcModel *arg_gc_model,
64  Eigen::VectorXd &ret_fgc);
65 
66 
67 
68  /* *******************************************************************
69  * Integrator functions.
70  * ******************************************************************* */
87  scl::SRobotIO& arg_inputs,
91  const scl::sFloat arg_time_interval)
92  { return false; }
93 
95  bool integrator(
97  scl::SRobotIO &arg_io_data,
100  scl::SGcModel *arg_gc_model,
102  const scl::sFloat arg_time_interval);
103 
104  /* *******************************************************************
105  * Dynamics State functions.
106  * ******************************************************************* */
112  const Eigen::VectorXd& arg_q,
114  const Eigen::VectorXd& arg_dq)
115  { return false; }
116 
122  const Eigen::VectorXd& arg_q)
123  { return false; }
124 
128  const scl::SRobotIO *arg_io_data,
131  scl::SGcModel *arg_gc_model,
133  scl::sFloat &ret_kinetic_energy);
134 
138  const scl::SRobotIO *arg_io_data,
141  scl::SGcModel *arg_gc_model,
143  scl::sFloat &ret_potential_energy);
144 
145  /* *******************************************************************
146  * Computational functions.
147  * ******************************************************************* */
154  virtual bool computeGCModel(
156  const scl::SRobotSensors * arg_sensor_data,
159  scl::SGcModel * arg_gc_model)
160  { return false; }
161 
162  /* *******************************************************************
163  * Initialization functions.
164  * ******************************************************************* */
168  virtual bool init(const scl::SRobotParsed& arg_robot_data)
169  {
170  if(arg_robot_data.has_been_init_){
171  robot_parsed_data_ = & arg_robot_data;
172  has_been_init_ = true;
173  return true;
174  }
175  return false;
176  }
177 
180 
182  virtual ~CDynamicsSclSpatial();
183  };
184 
185 } /* namespace scl_ext */
186 
187 #endif /* CDYNAMICSSCLSPATIAL_HPP_ */
bool calculateKineticEnergy(const scl::SRobotIO *arg_io_data, scl::SGcModel *arg_gc_model, scl::sFloat &ret_kinetic_energy)
Definition: CDynamicsSclSpatial.cpp:479
Definition: SRobotIO.hpp:107
bool forwardDynamicsABA(const scl::SRobotIO *arg_io_data, scl::SGcModel *arg_gc_model, Eigen::VectorXd &ret_ddq)
Definition: CDynamicsSclSpatial.cpp:31
virtual bool computeGCModel(const scl::SRobotSensors *arg_sensor_data, scl::SGcModel *arg_gc_model)
Definition: CDynamicsSclSpatial.hpp:154
virtual scl::sFloat computeEnergyPotential(sutil::CMappedTree< std::string, scl::SRigidBodyDyn > &arg_tree, const Eigen::VectorXd &arg_q)
Definition: CDynamicsSclSpatial.hpp:118
Definition: SRobotParsed.hpp:51
Definition: SGcModel.hpp:53
virtual scl::sBool integrate(scl::SRobotIO &arg_inputs, const scl::sFloat arg_time_interval)
Definition: CDynamicsSclSpatial.hpp:83
const SRobotParsed * robot_parsed_data_
Definition: CDynamicsBase.hpp:313
bool calculatePotentialEnergy(const scl::SRobotIO *arg_io_data, scl::SGcModel *arg_gc_model, scl::sFloat &ret_potential_energy)
Definition: CDynamicsSclSpatial.cpp:541
bool forwardDynamicsCRBA(const scl::SRobotIO *arg_io_data, scl::SGcModel *arg_gc_model, Eigen::VectorXd &ret_ddq)
Definition: CDynamicsSclSpatial.cpp:177
virtual bool init(const scl::SRobotParsed &arg_robot_data)
Definition: CDynamicsSclSpatial.hpp:168
bool inverseDynamicsNER(const scl::SRobotIO *arg_io_data, scl::SGcModel *arg_gc_model, Eigen::VectorXd &ret_fgc)
Definition: CDynamicsSclSpatial.cpp:341
Definition: CDynamicsBase.hpp:55
bool integrator(scl::SRobotIO &arg_io_data, scl::SGcModel *arg_gc_model, const scl::sFloat arg_time_interval)
Definition: CDynamicsSclSpatial.cpp:446
sBool has_been_init_
Definition: CDynamicsBase.hpp:310
bool sBool
Definition: DataTypes.hpp:54
sBool has_been_init_
Definition: SObject.hpp:72
Definition: CDynamicsSclSpatial.hpp:30
CDynamicsSclSpatial()
Definition: CDynamicsSclSpatial.cpp:22
double sFloat
Definition: DataTypes.hpp:72
virtual ~CDynamicsSclSpatial()
Definition: CDynamicsSclSpatial.cpp:27
Definition: SRobotIO.hpp:49
virtual scl::sFloat computeEnergyKinetic(sutil::CMappedTree< std::string, scl::SRigidBodyDyn > &arg_tree, const Eigen::VectorXd &arg_q, const Eigen::VectorXd &arg_dq)
Definition: CDynamicsSclSpatial.hpp:108