Skip to content

Commit 0582a86

Browse files
committed
updated
1 parent 2543444 commit 0582a86

File tree

2 files changed

+36
-2
lines changed

2 files changed

+36
-2
lines changed

btcpp_ros2_samples/src/set_bool_node.cpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,25 @@ BT::NodeStatus SetBoolService::onFailure(BT::ServiceNodeErrorCode error)
3232
//------------------------------------------------------
3333
//------------------------------------------------------
3434

35+
NamespacedSetBool::NamespacedSetBool(const std::string& name, const BT::NodeConfig& conf,
36+
const BT::RosNodeParams& params)
37+
: BT::ActionNodeBase(name, conf)
38+
, local_bb_(BT::Blackboard::create(conf.blackboard))
39+
, service_name_(params.default_port_value)
40+
{
41+
BT::NodeConfig impl_config;
42+
impl_config.blackboard = local_bb_;
43+
impl_config.input_ports["service_name"] = "{=}";
44+
impl_config.input_ports["value"] = "{=}";
45+
46+
BT::RosNodeParams impl_params = params;
47+
impl_params.default_port_value = {}; // postpone this
48+
set_bool_service_ = std::make_unique<SetBoolService>(name, impl_config, impl_params);
49+
}
50+
3551
NamespacedSetBool::NamespacedSetBool(const std::string& name, const BT::NodeConfig& conf,
3652
const std::string& service_name,
37-
std::weak_ptr<rclcpp::Node> node)
53+
rclcpp::Node::SharedPtr node)
3854
: BT::ActionNodeBase(name, conf)
3955
, local_bb_(BT::Blackboard::create(conf.blackboard))
4056
, service_name_(service_name)
@@ -43,6 +59,7 @@ NamespacedSetBool::NamespacedSetBool(const std::string& name, const BT::NodeConf
4359
impl_config.blackboard = local_bb_;
4460
impl_config.input_ports["service_name"] = "{=}";
4561
impl_config.input_ports["value"] = "{=}";
62+
4663
BT::RosNodeParams impl_params;
4764
impl_params.nh = node;
4865
set_bool_service_ = std::make_unique<SetBoolService>(name, impl_config, impl_params);

btcpp_ros2_samples/src/set_bool_node.hpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,28 @@ class SetBoolService : public BT::RosServiceNode<SetBool>
2727

2828
//------------------------------------------------------
2929

30+
// This is a workaround that can be used when we want to use SetBoolService,
31+
// but the service name has a namespace.
32+
// Therefore, instead of:
33+
//
34+
// <SetBool service_name="robotA/set_bool" value="true" />
35+
//
36+
// We can rewrite it as:
37+
//
38+
// <RobotSetBool robot="{robot_id}" command="true" />
39+
//
40+
// Registration in C++:
41+
//
42+
// factory.registerNodeType<RobotSetBool>("SetRobotBool", "set_bool", node);
43+
3044
class NamespacedSetBool : public BT::ActionNodeBase
3145
{
3246
public:
3347
NamespacedSetBool(const std::string& name, const BT::NodeConfig& conf,
34-
const std::string& service_name, std::weak_ptr<rclcpp::Node> node);
48+
const BT::RosNodeParams& params);
49+
50+
NamespacedSetBool(const std::string& name, const BT::NodeConfig& conf,
51+
const std::string& service_name, rclcpp::Node::SharedPtr node);
3552

3653
static BT::PortsList providedPorts()
3754
{

0 commit comments

Comments
 (0)