@@ -13,7 +13,8 @@ using namespace std::chrono_literals;
1313namespace XBot {
1414
1515inline 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