pinocchio  2.7.0
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
copy.hpp
1 //
2 // Copyright (c) 2016-2020 CNRS INRIA
3 //
4 
5 #ifndef __pinocchio_copy_hpp__
6 #define __pinocchio_copy_hpp__
7 
8 #include "pinocchio/multibody/model.hpp"
9 #include "pinocchio/multibody/data.hpp"
10 #include "pinocchio/algorithm/check.hpp"
11 
12 namespace pinocchio
13 {
25  template<typename Scalar, int Options, template<typename,int> class JointCollectionTpl>
26  inline void
27  copy(const ModelTpl<Scalar,Options,JointCollectionTpl> & model,
28  const DataTpl<Scalar,Options,JointCollectionTpl> & origin,
29  DataTpl<Scalar,Options,JointCollectionTpl> & dest,
30  KinematicLevel kinematic_level);
31 
32  template<typename Scalar, int Options, template<typename,int> class JointCollectionTpl>
33  PINOCCHIO_DEPRECATED inline void
34  copy(const ModelTpl<Scalar,Options,JointCollectionTpl> & model,
35  const DataTpl<Scalar,Options,JointCollectionTpl> & origin,
36  DataTpl<Scalar,Options,JointCollectionTpl> & dest,
37  int kinematic_level)
38  {
39  copy(model,origin,dest,static_cast<KinematicLevel>(kinematic_level));
40  }
41 
42 } // namespace pinocchio
43 
44 /* --- Details -------------------------------------------------------------------- */
45 //#include "pinocchio/algorithm/copy.hxx"
46 
48 namespace pinocchio
49 {
50  template<typename Scalar, int Options, template<typename,int> class JointCollectionTpl>
51  inline void
55  KinematicLevel kinematic_level)
56  {
58  typedef typename Model::JointIndex JointIndex;
59 
60  PINOCCHIO_CHECK_INPUT_ARGUMENT(kinematic_level>=POSITION);
61 
62  for(JointIndex jid=1; jid<(JointIndex)model.njoints; ++jid)
63  {
64  dest.oMi[jid] = origin.oMi [jid];
65  if(kinematic_level >= VELOCITY)
66  {
67  dest.v[jid] = origin.v [jid];
68  }
69  if(kinematic_level >= ACCELERATION)
70  {
71  dest.a[jid] = origin.a [jid];
72  dest.a_gf[jid] = origin.a_gf[jid];
73  dest.f[jid] = origin.f [jid];
74  }
75  }
76  }
77 
78 
79 } // namespace pinocchio
81 
82 #endif // ifndef __pinocchio_copy_hpp__
pinocchio::KinematicLevel
KinematicLevel
List of Kinematics Level supported by Pinocchio.
Definition: fwd.hpp:54
pinocchio::DataTpl
Definition: data.hpp:29
pinocchio::POSITION
@ POSITION
Refers to the quantities related to the 0-order kinematics (joint placements, center of mass position...
Definition: fwd.hpp:56
pinocchio::VELOCITY
@ VELOCITY
Refers to the quantities related to the 1st-order kinematics (joint velocities, center of mass veloci...
Definition: fwd.hpp:57
pinocchio::copy
void copy(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const DataTpl< Scalar, Options, JointCollectionTpl > &origin, DataTpl< Scalar, Options, JointCollectionTpl > &dest, KinematicLevel kinematic_level)
Copy part of the data from origin to dest. Template parameter can be used to select at which differen...
Definition: copy.hpp:52
pinocchio::ModelTpl< Scalar, Options, JointCollectionTpl >
pinocchio::ACCELERATION
@ ACCELERATION
Refers to the quantities related to the 2nd-order kinematics (joint accelerations,...
Definition: fwd.hpp:58
pinocchio
Main pinocchio namespace.
Definition: treeview.dox:11