@@ -30,9 +30,6 @@ namespace BT
30
30
31
31
struct TreeExecutionServer ::Pimpl
32
32
{
33
- Pimpl (const rclcpp::NodeOptions& node_options);
34
-
35
- rclcpp::Node::SharedPtr node;
36
33
rclcpp_action::Server<ExecuteTree>::SharedPtr action_server;
37
34
std::thread action_thread;
38
35
// thread safe bool to keep track of cancel requests
@@ -50,53 +47,20 @@ struct TreeExecutionServer::Pimpl
50
47
bool factory_initialized_ = false ;
51
48
52
49
rclcpp::WallTimer<rclcpp::VoidCallbackType>::SharedPtr single_shot_timer;
53
-
54
- rclcpp_action::GoalResponse handle_goal (const rclcpp_action::GoalUUID& uuid,
55
- std::shared_ptr<const ExecuteTree::Goal> goal);
56
-
57
- rclcpp_action::CancelResponse
58
- handle_cancel (const std::shared_ptr<GoalHandleExecuteTree> goal_handle);
59
-
60
- void handle_accepted (const std::shared_ptr<GoalHandleExecuteTree> goal_handle);
61
-
62
- void execute (const std::shared_ptr<GoalHandleExecuteTree> goal_handle);
63
50
};
64
51
65
- TreeExecutionServer::Pimpl::Pimpl (const rclcpp::NodeOptions& node_options)
66
- : node(std::make_unique<rclcpp::Node>(" bt_action_server" , node_options))
67
- {
68
- param_listener = std::make_shared<bt_server::ParamListener>(node);
69
- params = param_listener->get_params ();
70
- global_blackboard = BT::Blackboard::create ();
71
- }
72
-
73
- TreeExecutionServer::~TreeExecutionServer ()
74
- {}
75
-
76
- void TreeExecutionServer::executeRegistration ()
52
+ TreeExecutionServer::TreeExecutionServer (const rclcpp::Node::SharedPtr& node)
53
+ : p_(new Pimpl), node_(node)
77
54
{
78
- // Before executing check if we have new Behaviors or Subtrees to reload
79
- p_->factory .clearRegisteredBehaviorTrees ();
80
-
55
+ p_->param_listener = std::make_shared<bt_server::ParamListener>(node_);
81
56
p_->params = p_->param_listener ->get_params ();
82
- // user defined method
83
- registerNodesIntoFactory (p_->factory );
84
- // load plugins from multiple directories
85
- RegisterPlugins (p_->params , p_->factory , p_->node );
86
- // load trees (XML) from multiple directories
87
- RegisterBehaviorTrees (p_->params , p_->factory , p_->node );
88
-
89
- p_->factory_initialized_ = true ;
90
- }
57
+ p_->global_blackboard = BT::Blackboard::create ();
91
58
92
- TreeExecutionServer::TreeExecutionServer (const rclcpp::NodeOptions& options)
93
- : p_(new Pimpl(options))
94
- {
95
59
// create the action server
96
60
const auto action_name = p_->params .action_name ;
97
61
RCLCPP_INFO (kLogger , " Starting Action Server: %s" , action_name.c_str ());
98
62
p_->action_server = rclcpp_action::create_server<ExecuteTree>(
99
- p_-> node , action_name,
63
+ node_ , action_name,
100
64
[this ](const rclcpp_action::GoalUUID& uuid,
101
65
std::shared_ptr<const ExecuteTree::Goal> goal) {
102
66
return handle_goal (uuid, std::move (goal));
@@ -119,18 +83,37 @@ TreeExecutionServer::TreeExecutionServer(const rclcpp::NodeOptions& options)
119
83
};
120
84
121
85
p_->single_shot_timer =
122
- p_->node ->create_wall_timer (std::chrono::milliseconds (1 ), callback);
86
+ node_->create_wall_timer (std::chrono::milliseconds (1 ), callback);
87
+ }
88
+
89
+ TreeExecutionServer::~TreeExecutionServer ()
90
+ {}
91
+
92
+ void TreeExecutionServer::executeRegistration ()
93
+ {
94
+ // Before executing check if we have new Behaviors or Subtrees to reload
95
+ p_->factory .clearRegisteredBehaviorTrees ();
96
+
97
+ p_->params = p_->param_listener ->get_params ();
98
+ // user defined method
99
+ registerNodesIntoFactory (p_->factory );
100
+ // load plugins from multiple directories
101
+ RegisterPlugins (p_->params , p_->factory , node_);
102
+ // load trees (XML) from multiple directories
103
+ RegisterBehaviorTrees (p_->params , p_->factory , node_);
104
+
105
+ p_->factory_initialized_ = true ;
123
106
}
124
107
125
108
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr
126
109
TreeExecutionServer::get_node_base_interface ()
127
110
{
128
- return p_-> node ->get_node_base_interface ();
111
+ return node_ ->get_node_base_interface ();
129
112
}
130
113
131
114
rclcpp::Node::SharedPtr TreeExecutionServer::node ()
132
115
{
133
- return p_-> node ;
116
+ return node_ ;
134
117
}
135
118
136
119
rclcpp_action::GoalResponse
0 commit comments