Skip to content

Commit a007234

Browse files
committed
Added return value override to task composer node for debugging and testing
1 parent 904856f commit a007234

2 files changed

Lines changed: 21 additions & 2 deletions

File tree

tesseract_task_composer/core/include/tesseract_task_composer/core/task_composer_node.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ class TaskComposerNode
7373
TaskComposerNode(std::string name = "TaskComposerNode",
7474
TaskComposerNodeType type = TaskComposerNodeType::NODE,
7575
TaskComposerNodePorts ports = TaskComposerNodePorts(),
76-
bool conditional = false);
76+
bool conditional = false,
77+
int return_value_override = -1);
7778
explicit TaskComposerNode(std::string name,
7879
TaskComposerNodeType type,
7980
TaskComposerNodePorts ports,
@@ -220,6 +221,13 @@ class TaskComposerNode
220221
/** @brief The nodes ports definition */
221222
TaskComposerNodePorts ports_;
222223

224+
/**
225+
* @brief Value with which to override the return value nominally provided by runImpl() in the TaskComposerNodeInfo.
226+
* @details The return value provided by runImpl() will be overriden with this value when it is >= 0.
227+
* This value can be set to force a task to behave in a specific way (e.g., for debugging or unit tests).
228+
*/
229+
int return_value_override_{ -1 };
230+
223231
/** @brief Indicate if task triggers abort */
224232
bool trigger_abort_{ false };
225233

tesseract_task_composer/core/src/task_composer_node.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,16 @@ namespace tesseract_planning
8787
TaskComposerNode::TaskComposerNode(std::string name,
8888
TaskComposerNodeType type,
8989
TaskComposerNodePorts ports,
90-
bool conditional)
90+
bool conditional,
91+
int return_value_override)
9192
: name_(std::move(name))
9293
, ns_(name_)
9394
, type_(type)
9495
, uuid_(boost::uuids::random_generator()())
9596
, uuid_str_(boost::uuids::to_string(uuid_))
9697
, conditional_(conditional)
9798
, ports_(std::move(ports))
99+
, return_value_override_(return_value_override)
98100
{
99101
}
100102

@@ -126,6 +128,9 @@ TaskComposerNode::TaskComposerNode(std::string name,
126128

127129
output_keys_ = n.as<TaskComposerKeys>();
128130
}
131+
132+
if (YAML::Node n = config["return_value_override"])
133+
return_value_override_ = n.as<int>();
129134
}
130135
catch (const std::exception& e)
131136
{
@@ -158,6 +163,12 @@ int TaskComposerNode::run(TaskComposerContext& context, OptionalTaskComposerExec
158163
try
159164
{
160165
results = runImpl(context, executor);
166+
if (return_value_override_ >= 0)
167+
{
168+
results.return_value = return_value_override_;
169+
results.status_message += " (Return value overridden to " + std::to_string(return_value_override_) + ")";
170+
results.color = "yellow";
171+
}
161172
}
162173
catch (const std::exception& e)
163174
{

0 commit comments

Comments
 (0)