Loading...
Searching...
No Matches
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/config.hh"
25#include "sdf/system_util.hh"
26
27namespace 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
const gz::math::Vector3d & Fdir1() const
Get the first friction pyramid direction in collision-fixed reference.
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.
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::Torsional * Torsional() const
Get the torsional friction.
const sdf::BulletFriction * BulletFriction() const
Get the associated BulletFriction 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::ODE * ODE() const
Get the associated ODE object.
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.
const gz::math::Vector3d & Fdir1() const
Get the fdir.
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.
Errors Load(ElementPtr _sdf)
Load the ODE based on a element pointer.
Surface information for a collision.
Definition Surface.hh:305
const sdf::Contact * Contact() const
Get the associated contact 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::Friction * Friction() const
Get the associated friction 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:81
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