SCL  1.0
Standard Control Library : Control, dynamics, physics, and simulation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Macros Groups Pages
CSimbodyDynamics.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 CSimbodyDynamics.hpp
24  *
25  * Created on: Jul 24, 2012
26  *
27  * Copyright (C) 2012
28  *
29  * Author: Samir Menon <smenon@stanford.edu>
30  */
31 
32 #ifndef CSIMBODYDYNAMICS_HPP_
33 #define CSIMBODYDYNAMICS_HPP_
34 
35 #include <scl/DataTypes.hpp>
36 #include <scl/data_structs/SRobotIO.hpp>
37 #include <scl/data_structs/SGcModel.hpp>
38 #include <scl/dynamics/CDynamicsBase.hpp>
39 
40 #include <Simbody.h>
41 
42 #include <string>
43 #include <Eigen/Dense>
44 
45 namespace scl
46 {
50  {
51  public:
58  virtual bool init(const SRobotParsed& arg_robot_data);
59 
60  virtual bool computeGCModel(
63  SRobotSensors const * sensor_data,
69  SGcModel * js_model);
70 
79  virtual const void* getIdForLink(std::string arg_link_name);
80 
95  const void* arg_link_id,
97  Eigen::Affine3d& arg_T);
98 
110  const void* arg_link_id,
112  const Eigen::VectorXd& arg_pos_global,
114  Eigen::MatrixXd& arg_J);
115 
133  virtual sBool integrate(
137  SRobotIO& arg_inputs,
143  const sFloat arg_time_interval);
144 
147 
150 
153 
155  virtual ~CSimbodyDynamics();
156 
157  private:
159  sBool addNonRootLink(SimTK::MobilizedBody& arg_parent, const SRigidBody& arg_child_lnk);
160 
162  std::string robot_name_;
163 
165  size_t ndof_;
166 
168  Eigen::Vector3d gravity_;
169 
171  SimTK::MultibodySystem simbody_system_;
172  SimTK::SimbodyMatterSubsystem simbody_matter_;
173  SimTK::GeneralForceSubsystem simbody_forces_;
174  SimTK::RungeKuttaMersonIntegrator* simbody_rkm_integ_;
175  SimTK::TimeStepper* simbody_ts_;
176  SimTK::State simbody_state_;
177  };
178 
179 } /* namespace scl */
180 #endif /* CSIMBODYDYNAMICS_HPP_ */
Definition: SRobotIO.hpp:107
std::string robot_name_
Definition: CSimbodyDynamics.hpp:162
Definition: SRobotParsed.hpp:51
Definition: SGcModel.hpp:53
virtual const void * getIdForLink(std::string arg_link_name)
Definition: CSimbodyDynamics.cpp:235
Definition: SRigidBody.hpp:94
Definition: CSimbodyDynamics.hpp:49
Definition: CDynamicsBase.hpp:55
virtual sBool computeTransform_Depracated(const void *arg_link_id, Eigen::Affine3d &arg_T)
Definition: CSimbodyDynamics.cpp:252
virtual sBool integrate(SRobotIO &arg_inputs, const sFloat arg_time_interval)
Definition: CSimbodyDynamics.cpp:301
Eigen::Vector3d gravity_
Definition: CSimbodyDynamics.hpp:168
bool sBool
Definition: DataTypes.hpp:54
CSimbodyDynamics()
Definition: CSimbodyDynamics.cpp:41
sBool addNonRootLink(SimTK::MobilizedBody &arg_parent, const SRigidBody &arg_child_lnk)
Definition: CSimbodyDynamics.cpp:142
virtual ~CSimbodyDynamics()
Definition: CSimbodyDynamics.cpp:51
virtual bool computeGCModel(SRobotSensors const *sensor_data, SGcModel *js_model)
Definition: CSimbodyDynamics.cpp:212
virtual sBool computeJacobian_Depracated(const void *arg_link_id, const Eigen::VectorXd &arg_pos_global, Eigen::MatrixXd &arg_J)
Definition: CSimbodyDynamics.cpp:272
virtual sFloat getKineticEnergy_Depracated()
Definition: CSimbodyDynamics.cpp:336
size_t ndof_
Definition: CSimbodyDynamics.hpp:165
virtual sFloat getPotentialEnergy_Depracated()
Definition: CSimbodyDynamics.cpp:343
double sFloat
Definition: DataTypes.hpp:72
SimTK::MultibodySystem simbody_system_
Definition: CSimbodyDynamics.hpp:171
Definition: SRobotIO.hpp:49
virtual bool init(const SRobotParsed &arg_robot_data)
Definition: CSimbodyDynamics.cpp:60