Surface.hh
Go to the documentation of this file.
1 /*
2  * Copyright 2020 Open Source Robotics Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17 #ifndef SDF_SURFACE_HH_
18 #define SDF_SURFACE_HH_
19 
20 #include <gz/math/Vector3.hh>
21 #include <gz/utils/ImplPtr.hh>
22 #include "sdf/Element.hh"
23 #include "sdf/Types.hh"
24 #include "sdf/sdf_config.h"
25 #include "sdf/system_util.hh"
26 
27 namespace sdf
28 {
29  // Inline bracket to help doxygen filtering.
30  inline namespace SDF_VERSION_NAMESPACE {
33  {
35  public: Contact();
36 
43  public: Errors Load(ElementPtr _sdf);
44 
49  public: sdf::ElementPtr Element() const;
50 
53  public: uint16_t CollideBitmask() const;
54 
56  public: void SetCollideBitmask(const uint16_t _bitmask);
57 
59  GZ_UTILS_IMPL_PTR(dataPtr)
60  };
61 
64  {
66  public: ODE();
67 
74  public: Errors Load(ElementPtr _sdf);
75 
78  public: double Mu() const;
79 
82  public: void SetMu(double _mu);
83 
86  public: double Mu2() const;
87 
90  public: void SetMu2(double _mu2);
91 
94  public: const gz::math::Vector3d &Fdir1() const;
95 
98  public: void SetFdir1(const gz::math::Vector3d &_fdir);
99 
102  public: double Slip1() const;
103 
106  public: void SetSlip1(double _slip1);
107 
110  public: double Slip2() const;
111 
114  public: void SetSlip2(double _slip2);
115 
120  public: sdf::ElementPtr Element() const;
121 
123  GZ_UTILS_IMPL_PTR(dataPtr)
124  };
125 
128  {
130  public: BulletFriction();
131 
138  public: Errors Load(ElementPtr _sdf);
139 
142  public: double Friction() const;
143 
146  public: void SetFriction(double _friction);
147 
151  public: double Friction2() const;
152 
155  public: void SetFriction2(double _friction);
156 
160  public: const gz::math::Vector3d &Fdir1() const;
161 
165  public: void SetFdir1(const gz::math::Vector3d &_fdir);
166 
169  public: double RollingFriction() const;
170 
173  public: void SetRollingFriction(double _friction);
174 
179  public: sdf::ElementPtr Element() const;
180 
182  GZ_UTILS_IMPL_PTR(dataPtr)
183  };
184 
187  {
189  public: Torsional();
190 
197  public: Errors Load(ElementPtr _sdf);
198 
201  public: double Coefficient() const;
202 
205  public: void SetCoefficient(double _coefficient);
206 
210  public: bool UsePatchRadius() const;
211 
216  public: void SetUsePatchRadius(bool _usePatchRadius);
217 
220  public: double PatchRadius() const;
221 
224  public: void SetPatchRadius(double _radius);
225 
228  public: double SurfaceRadius() const;
229 
232  public: void SetSurfaceRadius(double _radius);
233 
236  public: double ODESlip() const;
237 
240  public: void SetODESlip(double _slip);
241 
246  public: sdf::ElementPtr Element() const;
247 
249  GZ_UTILS_IMPL_PTR(dataPtr)
250  };
251 
254  {
256  public: Friction();
257 
264  public: Errors Load(ElementPtr _sdf);
265 
269  public: const sdf::ODE *ODE() const;
270 
273  public: void SetODE(const sdf::ODE &_ode);
274 
278  public: const sdf::BulletFriction *BulletFriction() const;
279 
282  public: void SetBulletFriction(const sdf::BulletFriction &_bullet);
283 
287  public: const sdf::Torsional *Torsional() const;
288 
291  public: void SetTorsional(const sdf::Torsional &_torsional);
292 
297  public: sdf::ElementPtr Element() const;
298 
300  GZ_UTILS_IMPL_PTR(dataPtr)
301  };
302 
305  {
307  public: Surface();
308 
315  public: Errors Load(ElementPtr _sdf);
316 
321  public: sdf::ElementPtr Element() const;
322 
326  public: const sdf::Contact *Contact() const;
327 
330  public: void SetContact(const sdf::Contact &_contact);
331 
335  public: const sdf::Friction *Friction() const;
336 
339  public: void SetFriction(const sdf::Friction &_friction);
340 
346  public: sdf::ElementPtr ToElement() const;
347 
354  public: sdf::ElementPtr ToElement(sdf::Errors &_errors) const;
355 
357  GZ_UTILS_IMPL_PTR(dataPtr)
358  };
359  }
360 }
361 
362 #endif
BulletFriction information for a friction.
Definition: Surface.hh:128
double Friction() const
Get the friction coefficient in first friction pyramid direction.
sdf::ElementPtr Element() const
Get a pointer to the SDF element that was used during load.
const gz::math::Vector3d & Fdir1() const
Get the first friction pyramid direction in collision-fixed reference.
double RollingFriction() const
Get the rolling friction coefficient.
void SetFriction(double _friction)
Set friction coefficient in first friction pyramid direction.
Errors Load(ElementPtr _sdf)
Load BulletFriction friction based on a element pointer.
void SetRollingFriction(double _friction)
Set the rolling friction coefficient.
void SetFdir1(const gz::math::Vector3d &_fdir)
Set the first friction pyramid direction in collision-fixed reference.
double Friction2() const
Get the friction coefficient in second friction pyramid direction.
void SetFriction2(double _friction)
Set friction coefficient in second friction pyramid direction.
Contact information for a surface.
Definition: Surface.hh:33
Errors Load(ElementPtr _sdf)
Load the contact based on a element pointer.
uint16_t CollideBitmask() const
Get the collide bitmask parameter.
sdf::ElementPtr Element() const
Get a pointer to the SDF element that was used during load.
void SetCollideBitmask(const uint16_t _bitmask)
Set the collide bitmask parameter.
Friction information for a surface.
Definition: Surface.hh:254
const sdf::BulletFriction * BulletFriction() const
Get the associated BulletFriction object.
const sdf::ODE * ODE() const
Get the associated ODE object.
void SetODE(const sdf::ODE &_ode)
Set the associated ODE object.
Errors Load(ElementPtr _sdf)
Load the friction based on a element pointer.
void SetBulletFriction(const sdf::BulletFriction &_bullet)
Set the associated BulletFriction object.
const sdf::Torsional * Torsional() const
Get the torsional friction.
sdf::ElementPtr Element() const
Get a pointer to the SDF element that was used during load.
void SetTorsional(const sdf::Torsional &_torsional)
Set the torsional friction.
ODE information for a friction.
Definition: Surface.hh:64
double Slip1() const
Get the slip1.
double Mu2() const
Get the Mu2.
void SetFdir1(const gz::math::Vector3d &_fdir)
Set fdir.
void SetMu(double _mu)
Set Mu.
double Mu() const
Set the Mu.
ODE()
Default constructor.
void SetSlip2(double _slip2)
Set Slip2.
double Slip2() const
Get the Slip2.
void SetSlip1(double _slip1)
Set Slip1.
sdf::ElementPtr Element() const
Get a pointer to the SDF element that was used during load.
void SetMu2(double _mu2)
Set Mu2.
const gz::math::Vector3d & Fdir1() const
Get the fdir.
Errors Load(ElementPtr _sdf)
Load the ODE based on a element pointer.
Surface information for a collision.
Definition: Surface.hh:305
const sdf::Friction * Friction() const
Get the associated friction object.
sdf::ElementPtr ToElement() const
Create and return an SDF element filled with data from this surface.
void SetContact(const sdf::Contact &_contact)
Set the associated contact object.
sdf::ElementPtr ToElement(sdf::Errors &_errors) const
Create and return an SDF element filled with data from this surface.
void SetFriction(const sdf::Friction &_friction)
Set the associated friction object.
sdf::ElementPtr Element() const
Get a pointer to the SDF element that was used during load.
Errors Load(ElementPtr _sdf)
Load the surface based on a element pointer.
const sdf::Contact * Contact() const
Get the associated contact object.
Torsional friction.
Definition: Surface.hh:187
Errors Load(ElementPtr _sdf)
Load torsional friction based on a element pointer.
void SetPatchRadius(double _radius)
Set the radius of contact patch surface.
void SetODESlip(double _slip)
Set the ODE force dependent slip for torsional friction.
double ODESlip() const
Get the ODE force dependent slip for torsional friction.
sdf::ElementPtr Element() const
Get a pointer to the SDF element that was used during load.
void SetSurfaceRadius(double _radius)
Set the surface radius on the contact point.
double SurfaceRadius() const
Get the surface radius on the contact point.
bool UsePatchRadius() const
Get whether the patch radius is used to calculate torsional friction.
void SetUsePatchRadius(bool _usePatchRadius)
Set whether to use patch radius for torsional friction calculation.
double Coefficient() const
Get the torsional friction coefficient.
double PatchRadius() const
Get the radius of contact patch surface.
void SetCoefficient(double _coefficient)
Set the torsional friction coefficient.
std::vector< Error > Errors
A vector of Error.
Definition: Types.hh:95
std::shared_ptr< Element > ElementPtr
Definition: Element.hh:55
namespace for Simulation Description Format parser
Definition: Actor.hh:35
#define SDFORMAT_VISIBLE
Use to represent "symbol visible" if supported.
Definition: system_util.hh:25