Skip to content

Commit 56f7a88

Browse files
committed
descartes bug fixes
1 parent 08018c3 commit 56f7a88

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

tesseract/tesseract_planning/tesseract_motion_planners/include/tesseract_motion_planners/core/utils.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ inline bool contactCheckProgram(std::vector<tesseract_collision::ContactResultMa
262262
if (config.type != tesseract_collision::CollisionEvaluatorType::CONTINUOUS &&
263263
config.type != tesseract_collision::CollisionEvaluatorType::LVS_CONTINUOUS)
264264
throw std::runtime_error("contactCheckProgram was given an CollisionEvaluatorType that is inconsistent with the "
265-
"ContactManager type");
265+
"ContactManager type (Continuous)");
266266
bool found = false;
267267

268268
if (config.type == tesseract_collision::CollisionEvaluatorType::LVS_CONTINUOUS)
@@ -442,7 +442,7 @@ inline bool contactCheckProgram(std::vector<tesseract_collision::ContactResultMa
442442
if (config.type != tesseract_collision::CollisionEvaluatorType::DISCRETE &&
443443
config.type != tesseract_collision::CollisionEvaluatorType::LVS_DISCRETE)
444444
throw std::runtime_error("contactCheckProgram was given an CollisionEvaluatorType that is inconsistent with the "
445-
"ContactManager type");
445+
"ContactManager type (Discrete)");
446446
bool found = false;
447447

448448
if (config.type == tesseract_collision::CollisionEvaluatorType::LVS_DISCRETE)

tesseract/tesseract_planning/tesseract_motion_planners/include/tesseract_motion_planners/descartes/impl/descartes_collision_edge_evaluator.hpp

+13-2
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,9 @@ std::pair<bool, FloatType> DescartesCollisionEdgeEvaluator<FloatType>::considerE
9494
if (!discrete_in_contact && !continuous_in_contact)
9595
return std::make_pair(true, 0);
9696

97-
// TODO: Update this
98-
double collision_safety_margin_ = collision_check_config_.collision_margin_data.getMaxCollisionMargin();
97+
// TODO: Update this to consider link pairs
98+
FloatType collision_safety_margin_ =
99+
static_cast<FloatType>(collision_check_config_.collision_margin_data.getMaxCollisionMargin());
99100

100101
if (!discrete_in_contact && continuous_in_contact && allow_collision_)
101102
return std::make_pair(true, collision_safety_margin_ - continuous_results.begin()->begin()->second[0].distance);
@@ -146,6 +147,11 @@ bool DescartesCollisionEdgeEvaluator<FloatType>::continuousCollisionCheck(
146147
}
147148
mutex_.unlock();
148149
tesseract_collision::CollisionCheckConfig config = collision_check_config_;
150+
if (config.type == tesseract_collision::CollisionEvaluatorType::LVS_DISCRETE ||
151+
config.type == tesseract_collision::CollisionEvaluatorType::LVS_CONTINUOUS)
152+
config.type = tesseract_collision::CollisionEvaluatorType::LVS_CONTINUOUS;
153+
else
154+
config.type = tesseract_collision::CollisionEvaluatorType::CONTINUOUS;
149155
config.contact_request.type =
150156
(find_best) ? tesseract_collision::ContactTestType::CLOSEST : tesseract_collision::ContactTestType::FIRST;
151157

@@ -180,6 +186,11 @@ bool DescartesCollisionEdgeEvaluator<FloatType>::discreteCollisionCheck(
180186
mutex_.unlock();
181187

182188
tesseract_collision::CollisionCheckConfig config = collision_check_config_;
189+
if (config.type == tesseract_collision::CollisionEvaluatorType::LVS_DISCRETE ||
190+
config.type == tesseract_collision::CollisionEvaluatorType::LVS_CONTINUOUS)
191+
config.type = tesseract_collision::CollisionEvaluatorType::LVS_DISCRETE;
192+
else
193+
config.type = tesseract_collision::CollisionEvaluatorType::DISCRETE;
183194
config.contact_request.type =
184195
(find_best) ? tesseract_collision::ContactTestType::CLOSEST : tesseract_collision::ContactTestType::FIRST;
185196

0 commit comments

Comments
 (0)