ROS-7.3.创建和运行服务服务器与客户端节点

介绍

服务服务服务器(service server)和服务客户端(service client)组成,其中服务服务器仅在收到请求(request)时才会响应(response),而服务客户端则会发送请求并接收响应。与话题不同,服务是一次性消息通信。因此,当服务的请求和响应完成时,两个节点的连接会被断开。
这种服务通常在让机器人执行特定任务时用到。或者用于需要在特定条件下做出反应的节点。
优点:由于是一次性的通信方式,因此对网络的负载很小,所以是一种非常有用的通信手段,例如被用作一种代替话题的通信手段

创建功能包

$cd ~/catkin_ws/src
$catkin_create_pkg ros_tutorials_service message_generation std_msgs roscpp

其中:
message_generation是用于创建新消息的功能包;
std_msgs是ROS的标准消息功能包;
roscpp是在ROS中使用C/C++的客户端程序库。
这些依赖包必须在提前安装好;可以选择在创建功能包是指定依赖关系,也可以在创建功能包之后在package.xml中进行修改。

修改功能包配置文件

在创建功能包的时候,会在“~/catkin_ws/src”目录中生成ros_tutorials_service功 能 包 目 录 , 在 这 个 功 能 包 目 录 中 会 生 成 RO S 功 能 包 所 要 配 备 的 默 认 目 录 , 以 及CMakeLists.txt和package.xml文件。下面使用ls命令检查内容。

$cd ros_tutorials_service
$ls
include			→头文件目录
CMakeLists.txt	→构建配置文件
src				→源代码目录
package.xml		→功能包配置文件

修改构建配置文件

ROS所必需的配置文件之一package.xml是一个包含功能包信息的XML文件,它描述了功能包名称、作者、许可证和依赖包。使用以下命令使用编辑器(gedit、vim、emacs等)打开文件,并修改它,以匹配当前节点。推荐使用subl,嘿嘿。
ROS的构建系统catkin以CMake为基础,它在功能包目录中的CMakeLists.txt文件里描述了构建环境。该文件设置可执行文件的创建、依赖包优先构建、链接生成等。与上述ros_tutorials_topic不同,如果添加了发布者节点、订阅者节点和msg文件,则ros_tutorials_service功能包将添加新的服务服务器节点、服务客户端节点和服务文件(*.srv)。

$ subl CMakeLists.txt
##这是进行catkin构建时所需的组件包。
##依赖包是message_generation、std_msgs和roscpp。如果这些包不存在,在构建过程中会发生错误。
find_package(catkin REQUIRED COMPONENTS message_generation std_msgs roscpp)

##服务声明:SrvTutorial.srv
add_service_files(FILESS rvTutorial.srv)

##这是一个设置依赖消息的选项。
##如果未安装std_msgs,则在构建过程中会发生错误。
generate_messages(DEPENDENCIESstd_msgs)
##这是catkin功能包选项,它描述了库、catkin构建依赖和依赖系统的功能包。
catkin_package(
	LIBRARIESros_tutorials_service
	CATKIN_DEPENDS std_msgs roscpp
)
##设置包含目录。
include_directories(${
   catkin_INCLUDE_DIRS})

##这是service_server节点的构建选项。
##设置可执行文件、目标链接库和附加依赖项。
add_executable(service_server src/service_server.cpp)
add_dependencies(service_server${
   ${
   PROJECT_NAME}_EXPORTED_TARGETS}${
   catkin_EXPORTED_TARGETS})
target_link_libraries(service_server${
   catkin_LIBRARIES})
##这是节点的构建选项。
add_executable(service_client src/service_client.cpp)
add_dependencies(service_client${
   ${
   PROJECT_NAME}_EXPORTED_TARGETS}${
   catkin_EXPORTED_TARGETS})
target_link_libraries(service_client${
   catkin_LIBRARIES})<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DoubleYuanL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值