4.ros2服务器&客户端实例

简介

1.话题的缺点。

        在ros通讯时,话题会按时持续的发送数据,这导致在我们不需要这些数据时发送一些无用数据,而且还消耗电脑资源。

2.服务器的优点

        在客户端访问主机前,主机一直在静默,知道客户端请求才发送消息。

实例

1.1创建功能包

//创建example_cpp功能包。(存放实例)
ros2 pkg create example_cpp --build-type ament_cmake --dependencies rclcpp  --license Apache-2.0

1.2在src中创建客户端

        创建service_client_01.cpp,代码如下还有注释

#include "rclcpp/rclcpp.hpp"
#include "example_interfaces/srv/add_two_ints.hpp"

class ServiceClient01 : public rclcpp::Node 
{
public:
    // 构造函数,有一个参数为节点名称
    ServiceClient01(std::string name) : Node(name) 
    {
        RCLCPP_INFO(this->get_logger(), "节点已启动:%s.", name.c_str());
        // 创建客户端
        client_ = this->create_client<example_interfaces::srv::AddTwoInts>("add_two_ints_srv");
    }

    void send_request(int a, int b) 
    {
        // 打印日志,输出计算a+b
        RCLCPP_INFO(this->get_logger(), "计算%d+%d", a, b);

        while (!client_->wait_for_service(std::chrono::seconds(1))) // 使用while循环等待服务端上线,每秒检测一次
        {
            if (!rclcpp::ok()) // 如果rclcpp的状态被打断,则打印错误日志并返回
            {
                RCLCPP_ERROR(this->get
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值