5 #ifndef __pinocchio_multibody_fcl_hpp__
6 #define __pinocchio_multibody_fcl_hpp__
8 #include "pinocchio/spatial/se3.hpp"
9 #include "pinocchio/multibody/fwd.hpp"
10 #include "pinocchio/container/aligned-vector.hpp"
16 #include <boost/variant.hpp>
18 #ifdef PINOCCHIO_WITH_HPP_FCL
22 #if !(( defined(_MSC_VER) && _MSC_VER < 1900 ) || ( defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) ))
27 inline int _snprintf(
char* buffer, std::size_t buf_size,
const char* format, ...)
32 va_start(args, format);
33 res = vsnprintf(buffer, buf_size, format, args);
42 #include <hpp/fcl/collision_object.h>
43 #include <hpp/fcl/collision.h>
44 #include <hpp/fcl/distance.h>
45 #include <hpp/fcl/shape/geometric_shapes.h>
46 #include "pinocchio/spatial/fcl-pinocchio-conversions.hpp"
58 #include <boost/foreach.hpp>
62 using std::shared_ptr;
63 using std::make_shared;
66 :
public std::pair<GeomIndex, GeomIndex>
69 typedef std::pair<GeomIndex, GeomIndex> Base;
84 void disp (std::ostream & os)
const;
85 friend std::ostream & operator << (std::ostream & os,
const CollisionPair & X);
89 #ifndef PINOCCHIO_WITH_HPP_FCL
94 struct FakeCollisionGeometry
96 FakeCollisionGeometry(){};
98 bool operator==(
const FakeCollisionGeometry &)
const
106 AABB(): min_(0), max_(1){};
112 typedef FakeCollisionGeometry CollisionGeometry;
118 namespace fcl = hpp::fcl;
120 #endif // PINOCCHIO_WITH_HPP_FCL
158 typedef boost::variant<GeometryNoMaterial, GeometryPhongMaterial> GeometryMaterial;
162 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
164 typedef shared_ptr<fcl::CollisionGeometry> CollisionGeometryPtr;
184 PINOCCHIO_DEPRECATED CollisionGeometryPtr &
fcl;
212 PINOCCHIO_COMPILER_DIAGNOSTIC_PUSH
213 PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_DEPRECECATED_DECLARATIONS
230 const FrameIndex parent_frame,
231 const JointIndex parent_joint,
232 const CollisionGeometryPtr & collision_geometry,
235 const Eigen::Vector3d &
meshScale = Eigen::Vector3d::Ones(),
237 const Eigen::Vector4d &
meshColor = Eigen::Vector4d(0,0,0,1),
254 PINOCCHIO_COMPILER_DIAGNOSTIC_POP
256 PINOCCHIO_COMPILER_DIAGNOSTIC_PUSH
257 PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_DEPRECECATED_DECLARATIONS
274 const JointIndex parent_joint,
275 const CollisionGeometryPtr & collision_geometry,
278 const Eigen::Vector3d &
meshScale = Eigen::Vector3d::Ones(),
280 const Eigen::Vector4d &
meshColor = Eigen::Vector4d::Ones(),
284 ,
parentFrame(std::numeric_limits<FrameIndex>::max())
297 PINOCCHIO_COMPILER_DIAGNOSTIC_POP
299 PINOCCHIO_COMPILER_DIAGNOSTIC_PUSH
300 PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_DEPRECECATED_DECLARATIONS
307 PINOCCHIO_COMPILER_DIAGNOSTIC_POP
326 friend std::ostream & operator<< (std::ostream & os,
const GeometryObject & geomObject);
329 #ifdef PINOCCHIO_WITH_HPP_FCL
332 : ::hpp::fcl::ComputeCollision
334 typedef ::hpp::fcl::ComputeCollision Base;
335 typedef shared_ptr<const fcl::CollisionGeometry> ConstCollisionGeometryPtr;
346 ConstCollisionGeometryPtr o1;
347 ConstCollisionGeometryPtr o2;
349 virtual std::size_t run(
const fcl::Transform3f& tf1,
const fcl::Transform3f& tf2,
350 const fcl::CollisionRequest& request, fcl::CollisionResult& result)
const
352 typedef ::hpp::fcl::CollisionGeometry
const * Pointer;
353 const_cast<Pointer&
>(Base::o1) = o1.get();
354 const_cast<Pointer&
>(Base::o2) = o2.get();
355 return Base::run(tf1, tf2, request, result);
360 : ::hpp::fcl::ComputeDistance
362 typedef ::hpp::fcl::ComputeDistance Base;
363 typedef shared_ptr<fcl::CollisionGeometry> ConstCollisionGeometryPtr;
374 ConstCollisionGeometryPtr o1;
375 ConstCollisionGeometryPtr o2;
377 virtual hpp::fcl::FCL_REAL run(
const fcl::Transform3f& tf1,
const fcl::Transform3f& tf2,
378 const fcl::DistanceRequest& request, fcl::DistanceResult& result)
const
380 typedef ::hpp::fcl::CollisionGeometry
const * Pointer;
381 const_cast<Pointer&
>(Base::o1) = o1.get();
382 const_cast<Pointer&
>(Base::o2) = o2.get();
383 return Base::run(tf1, tf2, request, result);
394 #include "pinocchio/multibody/fcl.hxx"
396 #endif // ifndef __pinocchio_multibody_fcl_hpp__