pinocchio  3.7.0
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
 
Loading...
Searching...
No Matches
fcl.hpp
1//
2// Copyright (c) 2015-2023 CNRS INRIA
3//
4
5#ifndef __pinocchio_multibody_fcl_hpp__
6#define __pinocchio_multibody_fcl_hpp__
7
8#include "pinocchio/spatial/se3.hpp"
9#include "pinocchio/multibody/fwd.hpp"
10#include "pinocchio/multibody/model-item.hpp"
11#include "pinocchio/container/aligned-vector.hpp"
12
13#ifdef PINOCCHIO_WITH_HPP_FCL
14
15 #if (WIN32)
16 // It appears that std::snprintf is missing for Windows.
17 #if !( \
18 (defined(_MSC_VER) && _MSC_VER < 1900) \
19 || (defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)))
20 #include <cstdio>
21 #include <stdarg.h>
22namespace std
23{
24 inline int _snprintf(char * buffer, std::size_t buf_size, const char * format, ...)
25 {
26 int res;
27
28 va_list args;
29 va_start(args, format);
30 res = vsnprintf(buffer, buf_size, format, args);
31 va_end(args);
32
33 return res;
34 }
35} // namespace std
36 #endif
37 #endif
38
39 #include <hpp/fcl/collision_object.h>
40 #include <hpp/fcl/collision.h>
41 #include <hpp/fcl/distance.h>
42 #include <hpp/fcl/shape/geometric_shapes.h>
43 #include "pinocchio/collision/fcl-pinocchio-conversions.hpp"
44#endif
45
46#include <map>
47#include <vector>
48#include <utility>
49#include <memory>
50#include <limits>
51#include <assert.h>
52
53#include <boost/foreach.hpp>
54
55namespace pinocchio
56{
57
58#ifndef PINOCCHIO_WITH_HPP_FCL
59
60 namespace fcl
61 {
62
63 struct FakeCollisionGeometry
64 {
65 FakeCollisionGeometry() {};
66
67 bool operator==(const FakeCollisionGeometry &) const
68 {
69 return true;
70 }
71 };
72
73 struct AABB
74 {
75 AABB()
76 : min_(0)
77 , max_(1) {};
78
79 int min_;
80 int max_;
81 };
82
83 typedef FakeCollisionGeometry CollisionGeometry;
84
85 } // namespace fcl
86
87#else
88
89 namespace fcl = hpp::fcl;
90
91 inline bool operator==(const fcl::CollisionObject & lhs, const fcl::CollisionObject & rhs)
92 {
93 return lhs.collisionGeometry() == rhs.collisionGeometry()
94 && lhs.getAABB().min_ == rhs.getAABB().min_ && lhs.getAABB().max_ == rhs.getAABB().max_;
95 }
96
97#endif // PINOCCHIO_WITH_HPP_FCL
98
99} // namespace pinocchio
100
101#endif // ifndef __pinocchio_multibody_fcl_hpp__
Main pinocchio namespace.
Definition treeview.dox:11