27 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
29 Contact(
const std::optional<std::string> & r1,
30 const std::optional<std::string> & r2,
31 const std::string & r1Surface,
32 const std::string & r2Surface,
34 const Eigen::Vector6d & dof = Eigen::Vector6d::Ones())
35 : r1(r1), r2(r2), r1Surface(r1Surface), r2Surface(r2Surface), friction(friction), dof(dof)
39 std::optional<std::string>
r1;
40 std::optional<std::string>
r2;
44 mutable Eigen::Vector6d
dof;
62 std::unordered_set<Contact, std::hash<Contact>, std::equal_to<Contact>, Eigen::aligned_allocator<Contact>>;
75 auto hash_combine = [](
const std::string & robot,
const std::string & surface)
77 auto h = std::hash<std::string>{}(robot);
78 h ^= std::hash<std::string>{}(surface) + 0x9e3779b9 + (h << 6) + (h >> 2);
81 return hash_combine(c.r1.value_or(
""), c.r1Surface) ^ hash_combine(c.r2.value_or(
""), c.r2Surface);
#define MC_CONTROL_DLLAPI
Definition: api.h:50
mc_control::Contact Contact
Definition: Controller.h:22
Definition: CompletionCriteria.h:11
std::unordered_set< Contact, std::hash< Contact >, std::equal_to< Contact >, Eigen::aligned_allocator< Contact > > ContactSet
Definition: Contact.h:62
MCController is the base class to implement all controllers. It assumes that at least two robots are ...
Definition: MCController.h:99
Definition: Configuration.h:56
Simplify access to values hold within a JSON file.
Definition: Configuration.h:166