大家好我是《动手学ROS2》教程作者小鱼。

如果你想和小鱼一起学习ROS2,可以关注小鱼的微信公众号《鱼香ROS》,加入鱼群和小鱼一起学习。

今天小鱼来说说ROS2的客户端中wait_for_service()函数函数使用方法,帮助大家理解。

一、函数介绍

1.1 函数功能:

等待服务端准备完成。

1.2 函数输入输出:

参数
返回值
最大超时时间,有默认值-1
wait_for_serveice
bool是否在线

输入参数:std::chorm

输出参数:bool类型

  • 如果在没有超时的情况下,服务端准备完毕,返回true
  • 否则一律返回false

1.3函数原型

template<typename RepT = int64_t, typename RatioT = std::milli>
bool rclcpp::ClientBase::wait_for_service	(	std::chrono::duration< RepT, RatioT > 	timeout = std::chrono::duration<RepT, RatioT>(-1)	)	

参数只有一个,而且有默认值,这个参数表示等待的超时时间。

二、使用方法

2.1 等待服务上线,不上线每一秒钟打印一个日志信息

client_->wait_for_service(std::chrono::seconds(1))
    void buy_novel(){
        RCLCPP_INFO(this->get_logger(), "买小说去喽");
        village_interfaces::srv::SellNovel_Request request;
        request.money = 10;
        while(!client_->wait_for_service(std::chrono::seconds(1))){
            RCLCPP_INFO(this->get_logger(), "等待服务端上线中");
        }
    };

在这里插入图片描述

参考链接:API文档

写在最后

我是小鱼,机器人领域资深玩家,现深圳某独脚兽机器人算法工程师一枚

初中学习编程,高中开始学习机器人,大学期间打机器人相关比赛实现月入2W+(比赛奖金)

目前在输出机器人学习指南、论文注解、工作经验,欢迎大家关注小鱼,一起交流技术,学习机器人
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐