DART
6.12.2
Loading...
Searching...
No Matches
Contact.hpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2011-2021, The DART development contributors
3
* All rights reserved.
4
*
5
* The list of contributors can be found at:
6
* https://github.com/dartsim/dart/blob/master/LICENSE
7
*
8
* This file is provided under the following "BSD-style" License:
9
* Redistribution and use in source and binary forms, with or
10
* without modification, are permitted provided that the following
11
* conditions are met:
12
* * Redistributions of source code must retain the above copyright
13
* notice, this list of conditions and the following disclaimer.
14
* * Redistributions in binary form must reproduce the above
15
* copyright notice, this list of conditions and the following
16
* disclaimer in the documentation and/or other materials provided
17
* with the distribution.
18
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
19
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
20
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
23
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
26
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
* POSSIBILITY OF SUCH DAMAGE.
31
*/
32
33
#ifndef DART_COLLISION_CONTACT_HPP_
34
#define DART_COLLISION_CONTACT_HPP_
35
36
#include <Eigen/Dense>
37
38
#include "
dart/collision/SmartPointer.hpp
"
39
#include "
dart/dynamics/SmartPointer.hpp
"
40
41
namespace
dart
{
42
namespace
collision {
43
45
struct
Contact
46
{
48
Contact
();
49
51
Eigen::Vector3d
point
;
52
54
Eigen::Vector3d
normal
;
55
60
Eigen::Vector3d
force
;
61
63
CollisionObject
*
collisionObject1
;
64
66
CollisionObject
*
collisionObject2
;
67
69
double
penetrationDepth
;
70
71
// TODO(JS): triID1 will be deprecated when we don't use fcl_mesh
73
int
triID1
;
74
75
// TODO(JS): triID2 will be deprecated when we don't use fcl_mesh
77
int
triID2
;
78
79
// TODO(JS): userData is an experimental variable.
81
void
*
userData
;
82
84
constexpr
static
double
getNormalEpsilon
();
85
88
constexpr
static
double
getNormalEpsilonSquared
();
89
91
static
bool
isZeroNormal
(
const
Eigen::Vector3d&
normal
);
92
94
static
bool
isNonZeroNormal
(
const
Eigen::Vector3d&
normal
);
95
};
96
97
}
// namespace collision
98
}
// namespace dart
99
100
#include "
dart/collision/detail/Contact-impl.hpp
"
101
102
#endif
// DART_COLLISION_CONTACT_HPP_
Contact-impl.hpp
dart::collision::CollisionObject
Definition
CollisionObject.hpp:45
SmartPointer.hpp
SmartPointer.hpp
dart
Definition
BulletCollisionDetector.cpp:60
dart::collision::Contact
Contact information.
Definition
Contact.hpp:46
dart::collision::Contact::collisionObject1
CollisionObject * collisionObject1
First colliding collision object.
Definition
Contact.hpp:63
dart::collision::Contact::force
Eigen::Vector3d force
Contact force acting on bodyNode1 w.r.t.
Definition
Contact.hpp:60
dart::collision::Contact::penetrationDepth
double penetrationDepth
Penetration depth.
Definition
Contact.hpp:69
dart::collision::Contact::userData
void * userData
User data.
Definition
Contact.hpp:81
dart::collision::Contact::triID2
int triID2
Definition
Contact.hpp:77
dart::collision::Contact::triID1
int triID1
Definition
Contact.hpp:73
dart::collision::Contact::point
Eigen::Vector3d point
Contact point w.r.t. the world frame.
Definition
Contact.hpp:51
dart::collision::Contact::normal
Eigen::Vector3d normal
Contact normal vector from bodyNode2 to bodyNode1 w.r.t. the world frame.
Definition
Contact.hpp:54
dart::collision::Contact::isNonZeroNormal
static bool isNonZeroNormal(const Eigen::Vector3d &normal)
Returns !isZeroNormal().
Definition
Contact.cpp:64
dart::collision::Contact::isZeroNormal
static bool isZeroNormal(const Eigen::Vector3d &normal)
Returns true if the length of a normal is less than the epsilon.
Definition
Contact.cpp:55
dart::collision::Contact::Contact
Contact()
Default constructor.
Definition
Contact.cpp:39
dart::collision::Contact::getNormalEpsilon
static constexpr double getNormalEpsilon()
Returns the epsilon to be used for determination of zero-length normal.
Definition
Contact-impl.hpp:42
dart::collision::Contact::collisionObject2
CollisionObject * collisionObject2
Second colliding collision object.
Definition
Contact.hpp:66
dart::collision::Contact::getNormalEpsilonSquared
static constexpr double getNormalEpsilonSquared()
Returns the squired epsilon to be used for determination of zero-length normal.
Definition
Contact-impl.hpp:48
dart
collision
Contact.hpp
Generated on Wed Mar 19 2025 15:03:52 for DART by
1.9.8