hpp-pinocchio 6.1.0
Wrapping of the kinematic/dynamic chain Pinocchio for HPP.
 
Loading...
Searching...
No Matches
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
36#include <hpp/pinocchio/fwd.hh>
37
38namespace hpp {
39namespace pinocchio {
42 public:
45
47 ModelConstPtr_t modelPtr() const { return model_; }
51 const Model& model() const {
52 assert(model_);
53 return *model_;
54 }
55
57 assert(model_);
58 return *model_;
59 }
60
66 const GeomModel& geomModel() const {
67 assert(geomModel_);
68 return *geomModel_;
69 }
70
72 assert(geomModel_);
73 return *geomModel_;
74 }
75
81 const GeomModel& visualModel() const {
82 assert(visualModel_);
83 return *visualModel_;
84 }
85
87 assert(visualModel_);
88 return *visualModel_;
89 }
90
92 DataConstPtr_t dataPtr() const { return d().data_; }
94 DataPtr_t dataPtr() { return d().data_; }
96 const Data& data() const {
97 assert(d().data_);
98 return *d().data_;
99 }
100
102 assert(d().data_);
103 return *d().data_;
104 }
105
107 GeomDataConstPtr_t geomDataPtr() const { return d().geomData_; }
109 GeomDataPtr_t geomDataPtr() { return d().geomData_; }
111 const GeomData& geomData() const {
112 assert(d().geomData_);
113 return *d().geomData_;
114 }
115
117 assert(d().geomData_);
118 return *d().geomData_;
119 }
120
122 // -----------------------------------------------------------------------
125
128 return d().currentConfiguration_;
129 }
130
133 virtual bool currentConfiguration(ConfigurationIn_t configuration);
134
136 const vector_t& currentVelocity() const { return d().currentVelocity_; }
137
140
143 return d().currentAcceleration_;
144 }
145
147 bool currentAcceleration(vectorIn_t acceleration);
149 // -----------------------------------------------------------------------
152
154 const value_type& mass() const;
155
158
161
163 // -----------------------------------------------------------------------
166
174
180 d().computeForwardKinematics(modelPtr(), flag);
181 }
182
185 d().computeFramesForwardKinematics(modelPtr());
186 }
187
189 d().updateGeometryPlacements(modelPtr(), geomModelPtr());
190 }
191
192 // -----------------------------------------------------------------------
193 protected:
196 const GeomModelPtr_t& vm);
197
198 virtual DeviceData& d() = 0;
199 virtual DeviceData const& d() const = 0;
200
201 // Pinocchio objects
204}; // class AbstractDevice
205
229 public:
233 DeviceSync(const DevicePtr_t& device, bool lock = true);
234
237 virtual ~DeviceSync();
238
242 assert(isLocked());
243 return *d_;
244 }
245
247 DeviceData const& d() const {
248 assert(isLocked());
249 return *d_;
250 }
251
253 void lock();
255 bool isLocked() const { return d_ != NULL; }
257 void unlock();
258
259 private:
260 DevicePtr_t device_;
261 DeviceData* d_;
262}; // class DeviceSync
263} // namespace pinocchio
264} // namespace hpp
265
266#endif // HPP_PINOCCHIO_DEVICE_SYNC_HH
virtual DeviceData & d()=0
ModelPtr_t model_
Definition device-sync.hh:202
void computeFramesForwardKinematics()
Definition device-sync.hh:184
const vector_t & currentVelocity() const
Get current velocity.
Definition device-sync.hh:136
const value_type & mass() const
Get mass of robot.
GeomData & geomData()
Access to Pinocchio geomData/.
Definition device-sync.hh:116
virtual bool currentConfiguration(ConfigurationIn_t configuration)
GeomDataPtr_t geomDataPtr()
Access to Pinocchio geomData/.
Definition device-sync.hh:109
void computeForwardKinematics()
Compute forward kinematics computing everything.
Definition device-sync.hh:175
GeomModelConstPtr_t geomModelPtr() const
Access to pinocchio collision model.
Definition device-sync.hh:62
const GeomData & geomData() const
Access to Pinocchio geomData/.
Definition device-sync.hh:111
void updateGeometryPlacements()
Update the geometry placement to the currentConfiguration.
Definition device-sync.hh:188
ModelConstPtr_t modelPtr() const
Access to pinocchio model.
Definition device-sync.hh:47
const Configuration_t & currentConfiguration() const
Get current configuration.
Definition device-sync.hh:127
GeomModelConstPtr_t visualModelPtr() const
Access to pinocchio visual model.
Definition device-sync.hh:77
Model & model()
Access to pinocchio model.
Definition device-sync.hh:56
GeomModelPtr_t visualModel_
Definition device-sync.hh:203
Data & data()
Access to Pinocchio data/.
Definition device-sync.hh:101
GeomDataConstPtr_t geomDataPtr() const
Access to Pinocchio geomData/.
Definition device-sync.hh:107
const vector3_t & positionCenterOfMass() const
Get position of center of mass.
const GeomModel & geomModel() const
Access to pinocchio collision model.
Definition device-sync.hh:66
GeomModel & geomModel()
Access to pinocchio collision model.
Definition device-sync.hh:71
HPP_PINOCCHIO_DEPRECATED void controlComputation(const Computation_t &)
Definition device-sync.hh:169
DataPtr_t dataPtr()
Access to Pinocchio data/.
Definition device-sync.hh:94
DataConstPtr_t dataPtr() const
Access to Pinocchio data/.
Definition device-sync.hh:92
void computeForwardKinematics(int flag)
Definition device-sync.hh:179
bool currentVelocity(vectorIn_t velocity)
Set current velocity.
HPP_PINOCCHIO_DEPRECATED Computation_t computationFlag() const
Definition device-sync.hh:171
GeomModelPtr_t visualModelPtr()
Access to pinocchio visual model.
Definition device-sync.hh:79
GeomModelPtr_t geomModelPtr()
Access to pinocchio collision model.
Definition device-sync.hh:64
const GeomModel & visualModel() const
Access to pinocchio visual model.
Definition device-sync.hh:81
const Model & model() const
Access to pinocchio model.
Definition device-sync.hh:51
AbstractDevice(const ModelPtr_t &m, const GeomModelPtr_t &gm, const GeomModelPtr_t &vm)
GeomModelPtr_t geomModel_
Definition device-sync.hh:203
virtual DeviceData const & d() const =0
const ComJacobian_t & jacobianCenterOfMass() const
Get Jacobian of center of mass with respect to configuration.
ModelPtr_t modelPtr()
Access to pinocchio model.
Definition device-sync.hh:49
bool currentAcceleration(vectorIn_t acceleration)
Set current acceleration.
GeomModel & visualModel()
Access to pinocchio visual model.
Definition device-sync.hh:86
const Data & data() const
Access to Pinocchio data/.
Definition device-sync.hh:96
const vector_t & currentAcceleration() const
Get current acceleration.
Definition device-sync.hh:142
DeviceData const & d() const
Definition device-sync.hh:247
void lock()
Lock the current DeviceData.
DeviceData & d()
Definition device-sync.hh:241
bool isLocked() const
Check if the current DeviceData is locked.
Definition device-sync.hh:255
DeviceSync(const DevicePtr_t &device, bool lock=true)
void unlock()
Unlock the current DeviceData.
#define HPP_PINOCCHIO_DLLAPI
Definition config.hh:88
Definition body.hh:40
shared_ptr< Device > DevicePtr_t
Definition fwd.hh:121
shared_ptr< const GeomData > GeomDataConstPtr_t
Definition fwd.hh:139
::pinocchio::DataTpl< value_type, 0, ::pinocchio::JointCollectionDefaultTpl > Data
Definition fwd.hh:80
Computation_t
Definition device-data.hh:40
@ COMPUTE_ALL
Definition device-data.hh:46
shared_ptr< GeomModel > GeomModelPtr_t
Definition fwd.hh:136
::pinocchio::GeometryData GeomData
Definition fwd.hh:82
Eigen::Matrix< value_type, Eigen::Dynamic, 1 > vector_t
Definition fwd.hh:91
shared_ptr< const Data > DataConstPtr_t
Definition fwd.hh:134
shared_ptr< Configuration_t > ConfigurationPtr_t HPP_PINOCCHIO_DEPRECATED
Definition fwd.hh:95
shared_ptr< GeomData > GeomDataPtr_t
Definition fwd.hh:138
Eigen::Matrix< value_type, 3, 1 > vector3_t
Definition fwd.hh:102
shared_ptr< const Model > ModelConstPtr_t
Definition fwd.hh:132
double value_type
Definition fwd.hh:51
vector_t Configuration_t
Definition fwd.hh:92
::pinocchio::GeometryModel GeomModel
Definition fwd.hh:81
shared_ptr< const GeomModel > GeomModelConstPtr_t
Definition fwd.hh:137
::pinocchio::ModelTpl< value_type, 0, ::pinocchio::JointCollectionDefaultTpl > Model
Definition fwd.hh:77
Eigen::Matrix< value_type, 3, Eigen::Dynamic > ComJacobian_t
Definition fwd.hh:105
shared_ptr< Model > ModelPtr_t
Definition fwd.hh:131
Eigen::Ref< const vector_t > vectorIn_t
Definition fwd.hh:96
shared_ptr< Data > DataPtr_t
Definition fwd.hh:133
Eigen::Ref< const Configuration_t > ConfigurationIn_t
Definition fwd.hh:93
Utility functions.
Definition device-data.hh:51