Skip to content

Commit 17e5c23

Browse files
committed
config_from_param accepts timeout
1 parent fe1b9e6 commit 17e5c23

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

ros2/config_from_param.hpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ using namespace std::chrono_literals;
1313
namespace XBot {
1414

1515
inline ConfigOptions ConfigOptionsFromParams(rclcpp::Node::SharedPtr node,
16-
std::string prefix = "")
16+
std::string prefix = "",
17+
std::chrono::seconds timeout = 1s)
1718
{
1819
ConfigOptions opt;
1920

@@ -36,24 +37,23 @@ inline ConfigOptions ConfigOptionsFromParams(rclcpp::Node::SharedPtr node,
3637
[&](String::ConstSharedPtr msg) {
3738
jidmap = msg->data;
3839
});
39-
String msg;
40-
if(!rclcpp::wait_for_message(msg,
41-
urdf_sub,
42-
node->get_node_options().context(),
43-
1s))
40+
while(urdf.empty())
4441
{
45-
throw std::runtime_error("could not get urdf from topic " + std::string(urdf_sub->get_topic_name()));
42+
rclcpp::spin_all(node, 1s);
43+
sleep(1);
44+
RCLCPP_INFO(node->get_logger(), "waiting for urdf on topic '%s'...", urdf_sub->get_topic_name());
4645
}
47-
opt.set_urdf(msg.data);
4846

49-
if(!rclcpp::wait_for_message(msg,
50-
srdf_sub,
51-
node->get_node_options().context(),
52-
1s))
47+
opt.set_urdf(urdf);
48+
49+
while(srdf.empty())
5350
{
54-
throw std::runtime_error("could not get srdf from topic " + std::string(srdf_sub->get_topic_name()));
51+
rclcpp::spin_all(node, 1s);
52+
sleep(1);
53+
RCLCPP_INFO(node->get_logger(), "waiting for srdf on topic '%s'...", srdf_sub->get_topic_name());
5554
}
56-
opt.set_srdf(msg.data);
55+
56+
opt.set_srdf(srdf);
5757

5858
opt.set_parameter("model_type", node->get_parameter_or<std::string>("model_type", "pin"));
5959

0 commit comments

Comments
 (0)