contact_allowed_validator.cpp
Go to the documentation of this file.
1 
28 
29 #include <boost/serialization/nvp.hpp>
30 #include <boost/serialization/vector.hpp>
31 #include <boost/serialization/shared_ptr.hpp>
32 #include <boost/serialization/base_object.hpp>
33 
34 namespace tesseract_common
35 {
36 template <class Archive>
37 void ContactAllowedValidator::serialize(Archive& /*ar*/, const unsigned int /*version*/)
38 {
39 }
40 
42  : acm_(std::move(acm))
43 {
44 }
45 
46 bool ACMContactAllowedValidator::operator()(const std::string& link_name1, const std::string& link_name2) const
47 {
48  return acm_.isCollisionAllowed(link_name1, link_name2);
49 }
50 
51 template <class Archive>
52 void ACMContactAllowedValidator::serialize(Archive& ar, const unsigned int /*version*/)
53 {
54  ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(ContactAllowedValidator);
55  ar& BOOST_SERIALIZATION_NVP(acm_);
56 }
57 
59  std::vector<std::shared_ptr<const ContactAllowedValidator>> validators,
61  : validators_(std::move(validators)), type_(type)
62 {
63 }
64 
65 bool CombinedContactAllowedValidator::operator()(const std::string& link_name1, const std::string& link_name2) const
66 {
67  assert(!validators_.empty());
69  {
70  bool value{ false };
71  for (const auto& validator : validators_)
72  value = value || (*validator)(link_name1, link_name2);
73 
74  return value;
75  }
76 
77  bool value{ true };
78  for (const auto& validator : validators_)
79  value = value && (*validator)(link_name1, link_name2);
80 
81  return value;
82 }
83 
84 template <class Archive>
85 void CombinedContactAllowedValidator::serialize(Archive& ar, const unsigned int /*version*/)
86 {
87  ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(ContactAllowedValidator);
88  ar& BOOST_SERIALIZATION_NVP(validators_);
89  ar& BOOST_SERIALIZATION_NVP(type_);
90 }
91 
92 } // namespace tesseract_common
93 
97 BOOST_CLASS_EXPORT_IMPLEMENT(tesseract_common::ACMContactAllowedValidator)
99 BOOST_CLASS_EXPORT_IMPLEMENT(tesseract_common::CombinedContactAllowedValidator)
tesseract_common::CombinedContactAllowedValidatorType
CombinedContactAllowedValidatorType
Identify how the two should be combined.
Definition: contact_allowed_validator.h:82
tesseract_common::ContactAllowedValidator
Should return true if links are allowed to be in collision, otherwise false.
Definition: contact_allowed_validator.h:39
tesseract_common::CombinedContactAllowedValidator
Definition: contact_allowed_validator.h:90
tesseract_common
Definition: allowed_collision_matrix.h:19
tesseract_common::AllowedCollisionMatrix::isCollisionAllowed
virtual bool isCollisionAllowed(const std::string &link_name1, const std::string &link_name2) const
This checks if two links are allowed to be in collision.
Definition: allowed_collision_matrix.cpp:100
TESSERACT_SERIALIZE_ARCHIVES_INSTANTIATE
#define TESSERACT_SERIALIZE_ARCHIVES_INSTANTIATE(Type)
Definition: serialization.h:49
tesseract_common::ACMContactAllowedValidator::operator()
bool operator()(const std::string &link_name1, const std::string &link_name2) const override
Definition: contact_allowed_validator.cpp:46
tesseract_common::ACMContactAllowedValidator::ACMContactAllowedValidator
ACMContactAllowedValidator()=default
tesseract_common::CombinedContactAllowedValidator::serialize
void serialize(Archive &ar, const unsigned int version)
Definition: contact_allowed_validator.cpp:85
tesseract_common::ACMContactAllowedValidator
Definition: contact_allowed_validator.h:58
tesseract_common::CombinedContactAllowedValidator::type_
CombinedContactAllowedValidatorType type_
Definition: contact_allowed_validator.h:106
tesseract_common::CombinedContactAllowedValidator::CombinedContactAllowedValidator
CombinedContactAllowedValidator()=default
tesseract_common::CombinedContactAllowedValidatorType::OR
@ OR
Combines the two ContactAllowedValidator with OR operator.
type
type
tesseract_common::AllowedCollisionMatrix
Definition: allowed_collision_matrix.h:28
tesseract_common::CombinedContactAllowedValidator::operator()
bool operator()(const std::string &link_name1, const std::string &link_name2) const override
Definition: contact_allowed_validator.cpp:65
tesseract_common::ACMContactAllowedValidator::acm_
tesseract_common::AllowedCollisionMatrix acm_
Definition: contact_allowed_validator.h:72
serialization.h
Additional Boost serialization wrappers.
contact_allowed_validator.h
tesseract_common::ACMContactAllowedValidator::serialize
void serialize(Archive &ar, const unsigned int version)
Definition: contact_allowed_validator.cpp:52
tesseract_common::ContactAllowedValidator::serialize
void serialize(Archive &ar, const unsigned int version)
Definition: contact_allowed_validator.cpp:37
tesseract_common::CombinedContactAllowedValidator::validators_
std::vector< std::shared_ptr< const ContactAllowedValidator > > validators_
Definition: contact_allowed_validator.h:105


tesseract_common
Author(s): Levi Armstrong
autogenerated on Sun May 18 2025 03:01:40