Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions behaviortree_ros2/src/bt_executor_parameters.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ bt_server:
type: int,
default_value: 1667,
read_only: true,
description: "Server port value to publish Groot2 messages on",
description: "Server port of the legacy debugger; its publisher uses groot2_port - 1",
validation: {
bounds<>: [1, 49151]
bounds<>: [2, 49151]
}
}
plugins: {
Expand Down
10 changes: 7 additions & 3 deletions behaviortree_ros2/src/tree_execution_server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -215,16 +215,20 @@ void TreeExecutionServer::execute(
// Create shared_ptr to p_->tree without deleting capabilities
auto non_deleting_tree_ptr = std::shared_ptr<BT::Tree>(&(p_->tree), [](BT::Tree*){ /* do nothing */ });
BT::DebuggableTree debugTree{non_deleting_tree_ptr, true, debug_flag};
BT::PublisherZMQ publisher(debugTree, p_->params.groot2_port);
// The second argument of PublisherZMQ is the message rate, so the ports are passed explicitly: groot2_port is the
// server port and groot2_port - 1 the publisher port (1666 and 1667 by default). Two executors on one host need
// different values.
const auto groot2_port = static_cast<unsigned>(p_->params.groot2_port);
BT::PublisherZMQ publisher(debugTree, 25, groot2_port - 1, groot2_port);

// Optional protocol-2 endpoint, independent of the existing Eurecat debugger.
// Scope ensures destruction before the next goal replaces p_->tree.
std::unique_ptr<BT::Groot2Publisher> viewer_publisher;
if(p_->params.enable_bt_viewer)
{
const auto port = p_->params.bt_viewer_port;
// The legacy publisher above uses its default ports 1666 and 1667.
if(port <= 1667 && port + 1 >= 1666)
// The legacy publisher above uses groot2_port - 1 and groot2_port.
if(port <= p_->params.groot2_port && port + 1 >= p_->params.groot2_port - 1)
{
RCLCPP_WARN(kLogger, "BT viewer ports overlap legacy debugger; viewer disabled");
}
Expand Down
Loading