hpp-pinocchio  4.15.1
Wrapping of the kinematic/dynamic chain Pinocchio for HPP.
device-sync.hh
Go to the documentation of this file.
1 //
2 // Copyright (c) 2016 CNRS
3 // Author: NMansard from Florent Lamiraux
4 //
5 //
6 
7 // Redistribution and use in source and binary forms, with or without
8 // modification, are permitted provided that the following conditions are
9 // met:
10 //
11 // 1. Redistributions of source code must retain the above copyright
12 // notice, this list of conditions and the following disclaimer.
13 //
14 // 2. Redistributions in binary form must reproduce the above copyright
15 // notice, this list of conditions and the following disclaimer in the
16 // documentation and/or other materials provided with the distribution.
17 //
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 // HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
29 // DAMAGE.
30 
31 #ifndef HPP_PINOCCHIO_DEVICE_SYNC_HH
32 #define HPP_PINOCCHIO_DEVICE_SYNC_HH
33 
35 #include <hpp/pinocchio/fwd.hh>
36 
37 namespace hpp {
38 namespace pinocchio {
41  public:
44 
46  ModelConstPtr_t modelPtr() const { return model_; }
48  ModelPtr_t modelPtr() { return model_; }
50  const Model& model() const {
51  assert(model_);
52  return *model_;
53  }
55  Model& model() {
56  assert(model_);
57  return *model_;
58  }
59 
61  GeomModelConstPtr_t geomModelPtr() const { return geomModel_; }
63  GeomModelPtr_t geomModelPtr() { return geomModel_; }
65  const GeomModel& geomModel() const {
66  assert(geomModel_);
67  return *geomModel_;
68  }
71  assert(geomModel_);
72  return *geomModel_;
73  }
74 
76  DataConstPtr_t dataPtr() const { return d().data_; }
78  DataPtr_t dataPtr() { return d().data_; }
80  const Data& data() const {
81  assert(d().data_);
82  return *d().data_;
83  }
85  Data& data() {
86  assert(d().data_);
87  return *d().data_;
88  }
89 
91  GeomDataConstPtr_t geomDataPtr() const { return d().geomData_; }
93  GeomDataPtr_t geomDataPtr() { return d().geomData_; }
95  const GeomData& geomData() const {
96  assert(d().geomData_);
97  return *d().geomData_;
98  }
101  assert(d().geomData_);
102  return *d().geomData_;
103  }
104 
106  // -----------------------------------------------------------------------
109 
112  return d().currentConfiguration_;
113  }
117  virtual bool currentConfiguration(ConfigurationIn_t configuration);
118 
120  const vector_t& currentVelocity() const { return d().currentVelocity_; }
121 
123  bool currentVelocity(vectorIn_t velocity);
124 
126  const vector_t& currentAcceleration() const {
127  return d().currentAcceleration_;
128  }
129 
131  bool currentAcceleration(vectorIn_t acceleration);
133  // -----------------------------------------------------------------------
136 
138  const value_type& mass() const;
139 
141  const vector3_t& positionCenterOfMass() const;
142 
144  const ComJacobian_t& jacobianCenterOfMass() const;
145 
147  // -----------------------------------------------------------------------
150 
154  virtual void controlComputation(const Computation_t& flag);
156  Computation_t computationFlag() const { return d().computationFlag_; }
158  void computeForwardKinematics() { d().computeForwardKinematics(modelPtr()); }
162  d().computeFramesForwardKinematics(modelPtr());
163  }
166  d().updateGeometryPlacements(modelPtr(), geomModelPtr());
167  }
169  // -----------------------------------------------------------------------
170  protected:
171  AbstractDevice();
172  AbstractDevice(const ModelPtr_t& m, const GeomModelPtr_t& gm);
173 
174  virtual DeviceData& d() = 0;
175  virtual DeviceData const& d() const = 0;
176 
177  // Pinocchio objects
180 }; // class AbstractDevice
181 
205  public:
209  DeviceSync(const DevicePtr_t& device, bool lock = true);
210 
213  virtual ~DeviceSync();
214 
218  assert(isLocked());
219  return *d_;
220  }
223  DeviceData const& d() const {
224  assert(isLocked());
225  return *d_;
226  }
227 
229  void lock();
231  bool isLocked() const { return d_ != NULL; }
233  void unlock();
234 
235  private:
236  DevicePtr_t device_;
237  DeviceData* d_;
238 }; // class DeviceSync
239 } // namespace pinocchio
240 } // namespace hpp
241 
242 #endif // HPP_PINOCCHIO_DEVICE_SYNC_HH
hpp::pinocchio::AbstractDevice::geomData
GeomData & geomData()
Access to Pinocchio geomData/.
Definition: device-sync.hh:100
hpp::pinocchio::DeviceSync
Definition: device-sync.hh:204
hpp::pinocchio::DataConstPtr_t
shared_ptr< const Data > DataConstPtr_t
Definition: fwd.hh:130
hpp::pinocchio::AbstractDevice::model
Model & model()
Access to pinocchio model.
Definition: device-sync.hh:55
hpp::pinocchio::AbstractDevice::geomModel_
GeomModelPtr_t geomModel_
Definition: device-sync.hh:179
hpp::pinocchio::ConfigurationIn_t
Eigen::Ref< const Configuration_t > ConfigurationIn_t
Definition: fwd.hh:89
hpp::pinocchio::DevicePtr_t
shared_ptr< Device > DevicePtr_t
Definition: fwd.hh:117
hpp::pinocchio::Model
::pinocchio::ModelTpl< value_type, 0, JointCollectionTpl > Model
Definition: fwd.hh:76
hpp::pinocchio::ComJacobian_t
Eigen::Matrix< value_type, 3, Eigen::Dynamic > ComJacobian_t
Definition: fwd.hh:101
hpp::pinocchio::DeviceSync::d
DeviceData & d()
Definition: device-sync.hh:217
hpp::pinocchio::AbstractDevice::dataPtr
DataPtr_t dataPtr()
Access to Pinocchio data/.
Definition: device-sync.hh:78
hpp::pinocchio::value_type
double value_type
Definition: fwd.hh:50
hpp::pinocchio::AbstractDevice::computeFramesForwardKinematics
void computeFramesForwardKinematics()
Definition: device-sync.hh:161
hpp::pinocchio::AbstractDevice::geomModel
const GeomModel & geomModel() const
Access to pinocchio geomModel.
Definition: device-sync.hh:65
hpp::pinocchio::AbstractDevice::dataPtr
DataConstPtr_t dataPtr() const
Access to Pinocchio data/.
Definition: device-sync.hh:76
hpp::pinocchio::AbstractDevice::updateGeometryPlacements
void updateGeometryPlacements()
Update the geometry placement to the currentConfiguration.
Definition: device-sync.hh:165
hpp::pinocchio::AbstractDevice::geomModelPtr
GeomModelPtr_t geomModelPtr()
Access to pinocchio geomModel.
Definition: device-sync.hh:63
hpp::pinocchio::AbstractDevice::modelPtr
ModelPtr_t modelPtr()
Access to pinocchio model.
Definition: device-sync.hh:48
hpp::pinocchio::DeviceSync::d
DeviceData const & d() const
Definition: device-sync.hh:223
hpp::pinocchio::AbstractDevice::data
Data & data()
Access to Pinocchio data/.
Definition: device-sync.hh:85
hpp::pinocchio::DeviceSync::isLocked
bool isLocked() const
Check if the current DeviceData is locked.
Definition: device-sync.hh:231
hpp::pinocchio::AbstractDevice::currentVelocity
const vector_t & currentVelocity() const
Get current velocity.
Definition: device-sync.hh:120
HPP_PINOCCHIO_DLLAPI
#define HPP_PINOCCHIO_DLLAPI
Definition: config.hh:64
hpp::pinocchio::GeomDataConstPtr_t
shared_ptr< const GeomData > GeomDataConstPtr_t
Definition: fwd.hh:135
fwd.hh
hpp::pinocchio::AbstractDevice::computationFlag
Computation_t computationFlag() const
Get computation flag.
Definition: device-sync.hh:156
hpp::pinocchio::AbstractDevice::model
const Model & model() const
Access to pinocchio model.
Definition: device-sync.hh:50
hpp::pinocchio::DeviceData
Definition: device-data.hh:51
hpp::pinocchio::AbstractDevice::computeForwardKinematics
void computeForwardKinematics()
Compute forward kinematics.
Definition: device-sync.hh:158
hpp::pinocchio::AbstractDevice::data
const Data & data() const
Access to Pinocchio data/.
Definition: device-sync.hh:80
hpp::pinocchio::AbstractDevice::geomDataPtr
GeomDataConstPtr_t geomDataPtr() const
Access to Pinocchio geomData/.
Definition: device-sync.hh:91
hpp::pinocchio::ModelPtr_t
shared_ptr< Model > ModelPtr_t
Definition: fwd.hh:127
device-data.hh
hpp
Utility functions.
Definition: body.hh:39
hpp::pinocchio::GeomModel
::pinocchio::GeometryModel GeomModel
Definition: fwd.hh:78
hpp::pinocchio::Configuration_t
vector_t Configuration_t
Definition: fwd.hh:88
hpp::pinocchio::vectorIn_t
Eigen::Ref< const vector_t > vectorIn_t
Definition: fwd.hh:92
hpp::pinocchio::AbstractDevice::modelPtr
ModelConstPtr_t modelPtr() const
Access to pinocchio model.
Definition: device-sync.hh:46
hpp::pinocchio::vector3_t
Eigen::Matrix< value_type, 3, 1 > vector3_t
Definition: fwd.hh:98
hpp::pinocchio::Data
::pinocchio::DataTpl< value_type, 0, JointCollectionTpl > Data
Definition: fwd.hh:77
hpp::pinocchio::AbstractDevice::geomModel
GeomModel & geomModel()
Access to pinocchio geomModel.
Definition: device-sync.hh:70
hpp::pinocchio::AbstractDevice::currentAcceleration
const vector_t & currentAcceleration() const
Get current acceleration.
Definition: device-sync.hh:126
hpp::pinocchio::DataPtr_t
shared_ptr< Data > DataPtr_t
Definition: fwd.hh:129
hpp::pinocchio::GeomModelPtr_t
shared_ptr< GeomModel > GeomModelPtr_t
Definition: fwd.hh:132
hpp::pinocchio::GeomModelConstPtr_t
shared_ptr< const GeomModel > GeomModelConstPtr_t
Definition: fwd.hh:133
hpp::pinocchio::vector_t
Eigen::Matrix< value_type, Eigen::Dynamic, 1 > vector_t
Definition: fwd.hh:87
hpp::pinocchio::Computation_t
Computation_t
Definition: device-data.hh:40
hpp::pinocchio::AbstractDevice
Abstract class representing a Device.
Definition: device-sync.hh:40
hpp::pinocchio::AbstractDevice::geomData
const GeomData & geomData() const
Access to Pinocchio geomData/.
Definition: device-sync.hh:95
hpp::pinocchio::AbstractDevice::currentConfiguration
const Configuration_t & currentConfiguration() const
Get current configuration.
Definition: device-sync.hh:111
hpp::pinocchio::GeomDataPtr_t
shared_ptr< GeomData > GeomDataPtr_t
Definition: fwd.hh:134
hpp::pinocchio::ModelConstPtr_t
shared_ptr< const Model > ModelConstPtr_t
Definition: fwd.hh:128
hpp::pinocchio::AbstractDevice::model_
ModelPtr_t model_
Definition: device-sync.hh:178
hpp::pinocchio::GeomData
::pinocchio::GeometryData GeomData
Definition: fwd.hh:79
hpp::pinocchio::AbstractDevice::geomModelPtr
GeomModelConstPtr_t geomModelPtr() const
Access to pinocchio geomModel.
Definition: device-sync.hh:61
pinocchio
Definition: collision-object.hh:40
hpp::pinocchio::AbstractDevice::geomDataPtr
GeomDataPtr_t geomDataPtr()
Access to Pinocchio geomData/.
Definition: device-sync.hh:93