5#ifndef __pinocchio_serialization_multibody_geometry_hpp__
6#define __pinocchio_serialization_multibody_geometry_hpp__
8#include <boost/serialization/vector.hpp>
9#include <boost/serialization/map.hpp>
10#include <boost/serialization/shared_ptr.hpp>
12#ifdef PINOCCHIO_WITH_HPP_FCL
13 #define HPP_FCL_SKIP_EIGEN_BOOST_SERIALIZATION
14 #include <hpp/fcl/serialization/collision_data.h>
15 #undef HPP_FCL_SKIP_EIGEN_BOOST_SERIALIZATION
16 #include <hpp/fcl/serialization/geometric_shapes.h>
17 #include <hpp/fcl/serialization/hfield.h>
18 #if HPP_FCL_VERSION_AT_LEAST(3, 0, 0)
19 #include <hpp/fcl/serialization/octree.h>
21 #include <hpp/fcl/serialization/convex.h>
22 #include <hpp/fcl/serialization/BVH_model.h>
25#include "pinocchio/multibody/geometry.hpp"
26#include "pinocchio/serialization/aligned-vector.hpp"
27#include "pinocchio/serialization/spatial.hpp"
28#include "pinocchio/serialization/fcl.hpp"
32 namespace serialization
34 template<
class Archive>
38 ar & make_nvp(
"pair", base_object<pinocchio::CollisionPair::Base>(collision_pair));
41 template<
class Archive,
typename Derived>
45 ar & make_nvp(
"name", model_item.name);
46 ar & make_nvp(
"parentFrame", model_item.parentFrame);
47 ar & make_nvp(
"parentJoint", model_item.parentJoint);
48 ar & make_nvp(
"placement", model_item.placement);
51 template<
class Archive>
55 ar & make_nvp(
"base", base_object<pinocchio::GeometryObject::Base>(geometry_object));
56 ar & make_nvp(
"geometry", geometry_object.
geometry);
57 ar & make_nvp(
"meshPath", geometry_object.
meshPath);
58 ar & make_nvp(
"meshScale", geometry_object.
meshScale);
60 ar & make_nvp(
"meshColor", geometry_object.
meshColor);
65 template<
class Archive>
66 void save_construct_data(
75 template<
class Archive>
76 void load_construct_data(
80 ar >> make_nvp(
"base", base_obj);
86 template<
class Archive>
90 ar & make_nvp(
"ngeoms", geom_model.
ngeoms);
96 template<
class Archive>
100 ar & make_nvp(
"oMg", geom_data.oMg);
104#ifdef PINOCCHIO_WITH_HPP_FCL
112 ar & make_nvp(
"radius", geom_data.
radius);
std::vector< fcl::CollisionRequest > collisionRequests
Defines what information should be computed by collision test. There is one request per pair of geome...
PairIndex collisionPairIndex
Index of the collision pair.
std::vector< Scalar > radius
Radius of the bodies, i.e. distance of the further point of the geometry model attached to the body f...
std::vector< fcl::DistanceResult > distanceResults
Vector gathering the result of the distance computation for all the collision pairs.
std::map< JointIndex, GeomIndexList > outerObjects
A list of associated collision GeometryObjects to a given joint Id.
std::vector< bool > activeCollisionPairs
Vector of collision pairs.
std::vector< fcl::CollisionResult > collisionResults
Vector gathering the result of the collision computation for all the collision pairs.
std::vector< fcl::DistanceRequest > distanceRequests
Defines what information should be computed by distance computation. There is one request per pair of...
std::map< JointIndex, GeomIndexList > innerObjects
Map over vector GeomModel::geometryObjects, indexed by joints.
GeometryObjectVector geometryObjects
Vector of GeometryObjects used for collision computations.
MatrixXi collisionPairMapping
Matrix relating the collision pair ID to a pair of two GeometryObject indexes.
Index ngeoms
The number of GeometryObjects.
CollisionPairVector collisionPairs
Vector of collision pairs.
Eigen::Vector4d meshColor
RGBA color value of the GeometryObject::geometry object.
std::string meshPath
Absolute path to the mesh file (if the geometry pointee is also a Mesh)
bool overrideMaterial
Decide whether to override the Material.
bool disableCollision
If true, no collision or distance check will be done between the Geometry and any other geometry.
Eigen::Vector3d meshScale
Scaling vector applied to the GeometryObject::geometry object.
std::string meshTexturePath
Absolute path to the mesh texture file.
CollisionGeometryPtr geometry
The FCL CollisionGeometry (might be a Mesh, a Geometry Primitive, etc.)
FrameIndex parentFrame
Index of the parent frame.
JointIndex parentJoint
Index of the parent joint.
std::string name
Name of the kinematic element.
SE3 placement
Position of kinematic element in parent joint frame.