SurfaceParams.hh
Go to the documentation of this file.
1/*
2 * Copyright (C) 2012 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 GAZEBO_PHYSICS_SURFACEPARAMS_HH_
18#define GAZEBO_PHYSICS_SURFACEPARAMS_HH_
19
20#include <sdf/sdf.hh>
21#include <ignition/math/Vector3.hh>
22
23#include "gazebo/msgs/msgs.hh"
25#include "gazebo/util/system.hh"
26
27namespace gazebo
28{
29 namespace physics
30 {
33
36 class GZ_PHYSICS_VISIBLE FrictionPyramid
37 {
39 public: FrictionPyramid();
40
42 public: virtual ~FrictionPyramid();
43
46 public: double MuPrimary() const;
47
50 public: double MuSecondary() const;
51
54 public: double MuTorsion() const;
55
58 public: double PatchRadius() const;
59
62 public: double SurfaceRadius() const;
63
66 public: bool UsePatchRadius() const;
67
70 public: void SetMuPrimary(double _mu);
71
74 public: void SetMuSecondary(double _mu);
75
78 public: void SetMuTorsion(const double _mu);
79
82 public: void SetPatchRadius(const double _radius);
83
86 public: void SetSurfaceRadius(const double _radius);
87
90 public: void SetUsePatchRadius(const bool _use);
91
94 public: double PoissonsRatio() const;
95
98 public: void SetPoissonsRatio(const double _ratio);
99
102 public: double ElasticModulus() const;
103
106 public: void SetElasticModulus(const double _modulus);
107
115 public: ignition::math::Vector3d direction1;
116
122 private: double Mu(const unsigned int _index) const;
123
130 private: void SetMu(unsigned int _index, double _mu);
131
136 private: double mu[3];
137
143 private: double patchRadius;
144
148 private: double surfaceRadius;
149
154 private: bool usePatchRadius;
155
157 private: double poissonsRatio;
158
160 private: double elasticModulus;
161 };
162
167 class GZ_PHYSICS_VISIBLE SurfaceParams
168 {
170 public: SurfaceParams();
171
173 public: virtual ~SurfaceParams();
174
177 public: virtual void Load(sdf::ElementPtr _sdf);
178
181 public: virtual void FillMsg(msgs::Surface &_msg);
182
185 public: virtual void ProcessMsg(const msgs::Surface &_msg);
186
190 public: virtual FrictionPyramidPtr FrictionPyramid() const;
191
194
197 public: unsigned int collideWithoutContactBitmask;
198
201 public: unsigned int collideBitmask;
202 };
204 }
205}
206#endif
default namespace for gazebo
Parameters used for friction pyramid model.
Definition SurfaceParams.hh:37
void SetPoissonsRatio(const double _ratio)
Set the Poisson's ratio.
void SetElasticModulus(const double _modulus)
Set the elastic modulus.
double MuSecondary() const
Get the friction coefficient in the secondary direction.
void SetMuSecondary(double _mu)
Set the friction coefficient in the secondary direction.
double PatchRadius() const
Get the torsional patch radius.
double ElasticModulus() const
Get the elastic modulus.
void SetMuPrimary(double _mu)
Set the friction coefficient in the primary direction.
ignition::math::Vector3d direction1
Vector for specifying the primary friction direction, relative to the parent collision frame.
Definition SurfaceParams.hh:115
void SetSurfaceRadius(const double _radius)
Set the torsional surface radius.
double MuTorsion() const
Get the torsional friction coefficient.
double MuPrimary() const
Get the friction coefficient in the primary direction.
void SetUsePatchRadius(const bool _use)
Set whether to use the surface radius.
bool UsePatchRadius() const
Get the torsional "use patch radius" flag.
double SurfaceRadius() const
Get the torsional surface radius.
double PoissonsRatio() const
Get the Poisson's ratio.
virtual ~FrictionPyramid()
Destructor.
void SetMuTorsion(const double _mu)
Set the torsional friction coefficient.
void SetPatchRadius(const double _radius)
Set the torsional patch radius.
SurfaceParams defines various Surface contact parameters.
Definition SurfaceParams.hh:168
virtual void FillMsg(msgs::Surface &_msg)
Fill in a surface message.
virtual void ProcessMsg(const msgs::Surface &_msg)
Process a surface message.
unsigned int collideWithoutContactBitmask
Custom collision filtering used when collideWithoutContact is true.
Definition SurfaceParams.hh:197
virtual ~SurfaceParams()
Destructor.
virtual FrictionPyramidPtr FrictionPyramid() const
Get access to FrictionPyramid data, if available.
bool collideWithoutContact
Allow collision checking without generating a contact joint.
Definition SurfaceParams.hh:193
virtual void Load(sdf::ElementPtr _sdf)
Load the contact params.
unsigned int collideBitmask
Custom collision filtering.
Definition SurfaceParams.hh:201
boost::shared_ptr< FrictionPyramid > FrictionPyramidPtr
Definition PhysicsTypes.hh:165
Forward declarations for the common classes.
Definition Animation.hh:27