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>
36 Archive & ar, pinocchio::CollisionPair & collision_pair,
const unsigned int )
38 ar & make_nvp(
"pair", base_object<pinocchio::CollisionPair::Base>(collision_pair));
41 template<
class Archive,
typename Derived>
43 Archive & ar, pinocchio::ModelItem<Derived> & model_item,
const unsigned int )
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>
53 Archive & ar, pinocchio::GeometryObject & geometry_object,
const unsigned int )
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(
68 const pinocchio::GeometryObject * geometry_object_ptr,
72 "base", *
static_cast<const pinocchio::GeometryObject::Base *
>(geometry_object_ptr));
75 template<
class Archive>
76 void load_construct_data(
77 Archive & ar, pinocchio::GeometryObject * geometry_object_ptr,
const unsigned int )
79 pinocchio::GeometryObject::Base base_obj;
80 ar >> make_nvp(
"base", base_obj);
82 new (geometry_object_ptr) pinocchio::GeometryObject(
86 template<
class Archive>
88 serialize(Archive & ar, pinocchio::GeometryModel & geom_model,
const unsigned int )
90 ar & make_nvp(
"ngeoms", geom_model.
ngeoms);
96 template<
class Archive>
98 serialize(Archive & ar, pinocchio::GeometryData & geom_data,
const unsigned int )
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.