@@ -33,7 +33,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
3333#include < tesseract_msgs/ChainGroup.h>
3434#include < tesseract_msgs/CollisionGeometry.h>
3535#include < tesseract_msgs/CollisionMarginData.h>
36- #include < tesseract_msgs/CollisionMarginOverrideType .h>
36+ #include < tesseract_msgs/CollisionMarginPairOverrideType .h>
3737#include < tesseract_msgs/ContactMarginPair.h>
3838#include < tesseract_msgs/ContactResultVector.h>
3939#include < tesseract_msgs/ContactManagersPluginInfo.h>
@@ -1028,15 +1028,15 @@ toMsg(const tesseract_common::PairsCollisionMarginData& contact_margin_pairs)
10281028
10291029tesseract_common::CollisionMarginData fromMsg (const tesseract_msgs::CollisionMarginData& contact_margin_data_msg)
10301030{
1031- tesseract_common::PairsCollisionMarginData contact_margin_pairs = fromMsg (contact_margin_data_msg.margin_pairs );
1032- return tesseract_common::CollisionMarginData (contact_margin_data_msg.default_margin , contact_margin_pairs );
1031+ tesseract_common::CollisionMarginPairData pair_data ( fromMsg (contact_margin_data_msg.margin_pairs ) );
1032+ return tesseract_common::CollisionMarginData (contact_margin_data_msg.default_margin , pair_data );
10331033}
10341034
10351035tesseract_msgs::CollisionMarginData toMsg (const tesseract_common::CollisionMarginData& contact_margin_data)
10361036{
10371037 tesseract_msgs::CollisionMarginData contact_margin_data_msg;
10381038 contact_margin_data_msg.default_margin = contact_margin_data.getDefaultCollisionMargin ();
1039- for (const auto & pair : contact_margin_data.getPairCollisionMargins ())
1039+ for (const auto & pair : contact_margin_data.getCollisionMarginPairData (). getCollisionMargins ())
10401040 {
10411041 tesseract_msgs::ContactMarginPair cmp;
10421042 cmp.first .first = pair.first .first ;
@@ -1047,80 +1047,53 @@ tesseract_msgs::CollisionMarginData toMsg(const tesseract_common::CollisionMargi
10471047 return contact_margin_data_msg;
10481048}
10491049
1050- tesseract_common::CollisionMarginOverrideType
1051- fromMsg (const tesseract_msgs::CollisionMarginOverrideType& contact_margin_override_type_msg )
1050+ tesseract_common::CollisionMarginPairOverrideType
1051+ fromMsg (const tesseract_msgs::CollisionMarginPairOverrideType& contact_margin_pair_override_type_msg )
10521052{
1053- switch (contact_margin_override_type_msg .type )
1053+ switch (contact_margin_pair_override_type_msg .type )
10541054 {
1055- case tesseract_msgs::CollisionMarginOverrideType::OVERRIDE_DEFAULT_MARGIN :
1055+ case tesseract_msgs::CollisionMarginPairOverrideType::MODIFY :
10561056 {
1057- return tesseract_common::CollisionMarginOverrideType::OVERRIDE_DEFAULT_MARGIN ;
1057+ return tesseract_common::CollisionMarginPairOverrideType::MODIFY ;
10581058 }
1059- case tesseract_msgs::CollisionMarginOverrideType::OVERRIDE_PAIR_MARGIN :
1059+ case tesseract_msgs::CollisionMarginPairOverrideType::REPLACE :
10601060 {
1061- return tesseract_common::CollisionMarginOverrideType::OVERRIDE_PAIR_MARGIN ;
1061+ return tesseract_common::CollisionMarginPairOverrideType::REPLACE ;
10621062 }
1063- case tesseract_msgs::CollisionMarginOverrideType::MODIFY_PAIR_MARGIN :
1063+ case tesseract_msgs::CollisionMarginPairOverrideType::NONE :
10641064 {
1065- return tesseract_common::CollisionMarginOverrideType::MODIFY_PAIR_MARGIN;
1066- }
1067- case tesseract_msgs::CollisionMarginOverrideType::MODIFY:
1068- {
1069- return tesseract_common::CollisionMarginOverrideType::MODIFY;
1070- }
1071- case tesseract_msgs::CollisionMarginOverrideType::REPLACE:
1072- {
1073- return tesseract_common::CollisionMarginOverrideType::REPLACE;
1074- }
1075- case tesseract_msgs::CollisionMarginOverrideType::NONE:
1076- {
1077- return tesseract_common::CollisionMarginOverrideType::NONE;
1065+ return tesseract_common::CollisionMarginPairOverrideType::NONE;
10781066 }
10791067 default :
10801068 {
1081- throw std::runtime_error (" fromMsg: Invalid CollisionMarginOverrideType !" );
1069+ throw std::runtime_error (" fromMsg: Invalid CollisionMarginPairOverrideType !" );
10821070 }
10831071 }
10841072}
10851073
1086- tesseract_msgs::CollisionMarginOverrideType
1087- toMsg (const tesseract_common::CollisionMarginOverrideType& contact_margin_override_type )
1074+ tesseract_msgs::CollisionMarginPairOverrideType
1075+ toMsg (const tesseract_common::CollisionMarginPairOverrideType& contact_margin_pair_override_type )
10881076{
1089- tesseract_msgs::CollisionMarginOverrideType contact_margin_override_type_msg ;
1090- switch (static_cast <int >(contact_margin_override_type ))
1077+ tesseract_msgs::CollisionMarginPairOverrideType contact_margin_pair_override_type_msg ;
1078+ switch (static_cast <int >(contact_margin_pair_override_type ))
10911079 {
1092- case static_cast <int >(tesseract_collision::CollisionMarginOverrideType::OVERRIDE_DEFAULT_MARGIN ):
1080+ case static_cast <int >(tesseract_collision::CollisionMarginPairOverrideType::MODIFY ):
10931081 {
1094- contact_margin_override_type_msg .type = tesseract_msgs::CollisionMarginOverrideType::OVERRIDE_DEFAULT_MARGIN ;
1082+ contact_margin_pair_override_type_msg .type = tesseract_msgs::CollisionMarginPairOverrideType::MODIFY ;
10951083 break ;
10961084 }
1097- case static_cast <int >(tesseract_collision::CollisionMarginOverrideType::OVERRIDE_PAIR_MARGIN ):
1085+ case static_cast <int >(tesseract_collision::CollisionMarginPairOverrideType::REPLACE ):
10981086 {
1099- contact_margin_override_type_msg .type = tesseract_msgs::CollisionMarginOverrideType::OVERRIDE_PAIR_MARGIN ;
1087+ contact_margin_pair_override_type_msg .type = tesseract_msgs::CollisionMarginPairOverrideType::REPLACE ;
11001088 break ;
11011089 }
1102- case static_cast <int >(tesseract_collision::CollisionMarginOverrideType::MODIFY_PAIR_MARGIN ):
1090+ case static_cast <int >(tesseract_collision::CollisionMarginPairOverrideType::NONE ):
11031091 {
1104- contact_margin_override_type_msg.type = tesseract_msgs::CollisionMarginOverrideType::MODIFY_PAIR_MARGIN;
1105- break ;
1106- }
1107- case static_cast <int >(tesseract_collision::CollisionMarginOverrideType::MODIFY):
1108- {
1109- contact_margin_override_type_msg.type = tesseract_msgs::CollisionMarginOverrideType::MODIFY;
1110- break ;
1111- }
1112- case static_cast <int >(tesseract_collision::CollisionMarginOverrideType::REPLACE):
1113- {
1114- contact_margin_override_type_msg.type = tesseract_msgs::CollisionMarginOverrideType::REPLACE;
1115- break ;
1116- }
1117- case static_cast <int >(tesseract_collision::CollisionMarginOverrideType::NONE):
1118- {
1119- contact_margin_override_type_msg.type = tesseract_msgs::CollisionMarginOverrideType::NONE;
1092+ contact_margin_pair_override_type_msg.type = tesseract_msgs::CollisionMarginPairOverrideType::NONE;
11201093 break ;
11211094 }
11221095 }
1123- return contact_margin_override_type_msg ;
1096+ return contact_margin_pair_override_type_msg ;
11241097}
11251098
11261099bool toMsg (std::vector<tesseract_msgs::AllowedCollisionEntry>& acm_msg,
@@ -1350,8 +1323,14 @@ bool toMsg(tesseract_msgs::EnvironmentCommand& command_msg, const tesseract_envi
13501323 {
13511324 command_msg.command = tesseract_msgs::EnvironmentCommand::CHANGE_COLLISION_MARGINS;
13521325 const auto & cmd = static_cast <const tesseract_environment::ChangeCollisionMarginsCommand&>(command);
1353- command_msg.collision_margin_data = toMsg (cmd.getCollisionMarginData ());
1354- command_msg.collision_margin_override_type = toMsg (cmd.getCollisionMarginOverrideType ());
1326+
1327+ std::optional<double > default_margin = cmd.getDefaultCollisionMargin ();
1328+ command_msg.has_collision_default_margin = default_margin.has_value ();
1329+ if (default_margin.has_value ())
1330+ command_msg.collision_default_margin = default_margin.value ();
1331+
1332+ command_msg.collision_margin_pair_data = toMsg (cmd.getCollisionMarginPairData ().getCollisionMargins ());
1333+ command_msg.collision_margin_pair_override_type = toMsg (cmd.getCollisionMarginPairOverrideType ());
13551334 return true ;
13561335 }
13571336 case tesseract_environment::CommandType::ADD_CONTACT_MANAGERS_PLUGIN_INFO:
@@ -1538,10 +1517,18 @@ std::shared_ptr<tesseract_environment::Command> fromMsg(const tesseract_msgs::En
15381517 }
15391518 case tesseract_msgs::EnvironmentCommand::CHANGE_COLLISION_MARGINS:
15401519 {
1541- tesseract_common::CollisionMarginData collision_margin_data = fromMsg (command_msg.collision_margin_data );
1542- tesseract_common::CollisionMarginOverrideType override_type = fromMsg (command_msg.collision_margin_override_type );
1543- return std::make_shared<tesseract_environment::ChangeCollisionMarginsCommand>(collision_margin_data,
1544- override_type);
1520+ tesseract_common::CollisionMarginPairData pair_margin_data (fromMsg (command_msg.collision_margin_pair_data ));
1521+ tesseract_common::CollisionMarginPairOverrideType pair_override_type =
1522+ fromMsg (command_msg.collision_margin_pair_override_type );
1523+
1524+ if (command_msg.has_collision_default_margin )
1525+ {
1526+ return std::make_shared<tesseract_environment::ChangeCollisionMarginsCommand>(
1527+ command_msg.collision_default_margin , pair_margin_data, pair_override_type);
1528+ }
1529+
1530+ return std::make_shared<tesseract_environment::ChangeCollisionMarginsCommand>(pair_margin_data,
1531+ pair_override_type);
15451532 }
15461533 case tesseract_msgs::EnvironmentCommand::ADD_CONTACT_MANAGERS_PLUGIN_INFO:
15471534 {
0 commit comments