【ROS2】初级:客户端-编写一个简单的服务和客户端(C++)

目标:使用 C++ 创建并运行服务和客户端节点。

 教程级别:初学者

 时间:20 分钟

 目录

  •  背景

  •  先决条件

  •  任务

    • 1. 创建一个包

    • 2. 编写服务节点

    • 3. 编写客户端节点

    • 4. 构建并运行

  •  摘要

  •  下一步

  •  相关内容

 背景

当节点通过服务进行通信时,发送数据请求的节点称为客户端节点,而响应请求的节点称为服务节点。请求和响应的结构由一个 .srv 文件决定。

这里使用的例子是一个简单的整数加法系统;一个节点请求两个整数的和,另一个节点则响应结果。

 先决条件

在之前的教程中,您学习了如何创建工作区和创建包。

 任务

1. 创建一个包

打开一个新的终端并且初始化您的 ROS 2 安装,这样 ros2 命令就会生效。

导航到在之前教程中创建的 ros2_ws 目录。

请记住,包应该在 src 目录中创建,而不是在工作区的根目录中。导航到 ros2_ws/src 并创建一个新包:

cxy@ubuntu2404-cxy:~/ros2_ws/src$ ros2 pkg create --build-type ament_cmake --license Apache-2.0 cpp_srvcli --dependencies rclcpp example_interfaces
going to create a new package
package name: cpp_srvcli
destination directory: /home/cxy/ros2_ws/src
package format: 3
version: 0.0.0
description: TODO: Package description
maintainer: ['cxy <cxy@todo.todo>']
licenses: ['Apache-2.0']
build type: ament_cmake
dependencies: ['rclcpp', 'example_interfaces']
creating folder ./cpp_srvcli
creating ./cpp_srvcli/package.xml
creating source and include folder
creating folder ./cpp_srvcli/src
creating folder ./cpp_srvcli/include/cpp_srvcli
creating ./cpp_srvcli/CMakeLists.txt

您的终端将返回一条消息,确认您的包 cpp_srvcli 及其所有必要的文件和文件夹已创建。

`--dependencies` 参数将自动将必要的依赖项行添加到 package.xml 和 CMakeLists.txt 中。`example_interfaces` 是包含您将需要用来构建请求和响应的 `.srv` 文件 https://github.com/ros2/example_interfaces/blob/jazzy/srv/AddTwoInts.srv 的包。

int64 a
int64 b
---
int64 sum

请求的前两行是参数,破折号以下的是响应。

 1.1 更新 package.xml 

因为在创建包时您使用了 --dependencies 选项,所以您无需手动添加依赖项到 package.xml 或 CMakeLists.txt 。

一如既往,不过,请确保将描述、维护者电子邮件和姓名以及许可信息添加到 package.xml 。

<description>C++ client server tutorial</description>
<maintainer email="you@email.com">Your Name</maintainer>
<license>Apache-2.0</license>
<?xml version="1.0"?> <!-- XML文件的版本为1.0 -->
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?> <!-- XML模型的位置和模式类型 -->
<package format="3"> <!-- 定义一个格式为3的包 -->
  <name>cpp_srvcli</name> <!-- 包的名称为cpp_srvcli -->
  <version>0.0.0</version> <!-- 包的版本为0.0.0 -->
  <description>C++ client server tutorial</description> <!-- 包的描述为C++ client server tutorial -->
  <maintainer email="cxy@126.com">cxy</maintainer> <!-- 包的维护者的名字和邮箱 -->
  <license>Apache-2.0<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值