SCL  1.0
Standard Control Library : Control, dynamics, physics, and simulation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Macros Groups Pages
CDynamicsAnalyticRPP.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 /*
24  * CDynamicsAnalyticRPP.hpp
25  *
26  * Created on: Sep 11, 2013
27  *
28  * Copyright (C) 2013
29  *
30  * Author: Samir Menon <smenon@stanford.edu>
31  */
32 
33 #ifndef CDYNAMICSANALYTICRPP_HPP_
34 #define CDYNAMICSANALYTICRPP_HPP_
35 
36 #include <scl/DataTypes.hpp>
37 #include <scl/dynamics/CDynamicsAnalyticBase.hpp>
38 
39 namespace scl
40 {
47  {
48  public:
49  /* **************************************************************
50  * CDynamicsAnalyticBase API functions
51  * ************************************************************** */
65  const Eigen::VectorXd &arg_q,
67  sInt arg_link_id,
69  sInt arg_ancestor_link_id,
71  Eigen::Affine3d& arg_T);
72 
84  const Eigen::VectorXd &arg_q,
86  sInt arg_link_id,
88  const Eigen::VectorXd& arg_pos_local,
90  Eigen::MatrixXd& arg_J)
91  { return false; }
92 
104  const Eigen::VectorXd &arg_q,
106  SGcModel& arg_gc_model)
107  { return false; }
108 
109  /* **************************************************************
110  * Analytic Computation functions
111  * ************************************************************** */
112 
115  void computeTOrg_0(const Eigen::VectorXd &arg_q,
116  Eigen::Affine3d& arg_T);
117 
118  void computeT0_1(const Eigen::VectorXd &arg_q,
119  Eigen::Affine3d& arg_T);
120 
121  void computeT1_2(const Eigen::VectorXd &arg_q,
122  Eigen::Affine3d& arg_T);
123 
126  bool computeJcom(const Eigen::VectorXd &arg_q,
127  unsigned int arg_link_id, Eigen::MatrixXd& arg_J);
128 
130  bool computeMgc(const Eigen::VectorXd &arg_q,
131  Eigen::MatrixXd& arg_Mgc);
132 
133  /* **************************************************************
134  * Data access functions
135  * ************************************************************** */
142  virtual sUInt getIdForLink(std::string arg_link_name)
143  {
144  if("link0" == arg_link_name)
145  { return 0; }
146  else if("link1" == arg_link_name)
147  { return 1; }
148  else if("link2" == arg_link_name)
149  { return 2; }
150  else
151  { return -1; }
152  }
153 
154  /* **************************************************************
155  * Initialization functions
156  * ************************************************************** */
159 
162 
172  virtual sBool init(const SRobotParsed& arg_robot_data);
173 
175  virtual sBool hasBeenInit() { return has_been_init_; }
176 
177  /* **************************************************************
178  * Data
179  * ************************************************************** */
180  protected:
181  Eigen::Vector3d pos_root_in_global_org_;
182  };
183 
184 } /* namespace scl */
185 #endif /* CDYNAMICSANALYTICRPP_HPP_ */
sBool has_been_init_
Definition: CDynamicsAnalyticBase.hpp:148
CDynamicsAnalyticRPP()
Definition: CDynamicsAnalyticRPP.hpp:158
virtual sBool computeGCModel(const Eigen::VectorXd &arg_q, SGcModel &arg_gc_model)
Definition: CDynamicsAnalyticRPP.hpp:102
Definition: CDynamicsAnalyticRPP.hpp:46
Definition: SRobotParsed.hpp:51
Definition: SGcModel.hpp:53
virtual sUInt getIdForLink(std::string arg_link_name)
Definition: CDynamicsAnalyticRPP.hpp:142
bool computeJcom(const Eigen::VectorXd &arg_q, unsigned int arg_link_id, Eigen::MatrixXd &arg_J)
Definition: CDynamicsAnalyticRPP.cpp:84
bool sBool
Definition: DataTypes.hpp:54
virtual sBool computeJacobian(const Eigen::VectorXd &arg_q, sInt arg_link_id, const Eigen::VectorXd &arg_pos_local, Eigen::MatrixXd &arg_J)
Definition: CDynamicsAnalyticRPP.hpp:82
void computeTOrg_0(const Eigen::VectorXd &arg_q, Eigen::Affine3d &arg_T)
Definition: CDynamicsAnalyticRPP.cpp:40
virtual sBool computeTransformationMatrix(const Eigen::VectorXd &arg_q, sInt arg_link_id, sInt arg_ancestor_link_id, Eigen::Affine3d &arg_T)
Definition: CDynamicsAnalyticRPP.cpp:168
Definition: CDynamicsAnalyticBase.hpp:54
virtual sBool hasBeenInit()
Definition: CDynamicsAnalyticRPP.hpp:175
int sInt
Definition: DataTypes.hpp:64
virtual sBool init(const SRobotParsed &arg_robot_data)
Definition: CDynamicsAnalyticRPP.cpp:234
bool computeMgc(const Eigen::VectorXd &arg_q, Eigen::MatrixXd &arg_Mgc)
Definition: CDynamicsAnalyticRPP.cpp:144
virtual ~CDynamicsAnalyticRPP()
Definition: CDynamicsAnalyticRPP.hpp:161