服务通信—自定义srv

1.创建工作空间并初始化与生成srv文件

1.创建工作空间并初始化 

mkdir -p demo02_ws/src
cd demo03_ws
catkin_make

2.进入 src 创建 ros 包并添加依赖

配置功能包 plumbing_server_client

导入依赖的包 roscpp rospy std_msg

3.定义srv文件

在src目录下的功能包文件夹中-新建文件夹srv-新建文件ADDints.srv(服务消息的载体)

服务通信—自定义srv_第1张图片

 

4.编辑配置文件

package.xml中添加编译依赖与执行依赖(2处)

  1. message_generation

  2. message_runtime

CMakeLists.txt编辑 msg 相关配置 (4处)

1.加入 message_generation

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  message_generation
)
# 需要加入 message_generation,必须有 std_msgs

2.加入ADDints.srv文件

## 配置 msg 源文件
add_message_files(
  FILES
  ADDints.srv
)

3. 

# 生成消息时依赖于 std_msgs
generate_messages(
  DEPENDENCIES
  std_msgs
)

4. 

#执行时依赖
catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES demo02_talker_listener
  CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
#  DEPENDS system_lib
)

5.编译

若无异常,生成中间文件。找到include的路径(不同版本路径不一样)

例:c++包含的头文件-Addints.h

服务通信—自定义srv_第2张图片

 

二:服务端与客户端源码实现(c++)

1.vscode 配置

找到include的路径(不同版本路径不一样)

右键单击include 在集成终端中打开

输入 pwd 显示路径

/home/rosnotic/demo02_ws/devel_isolated/plumbing_server_client/include/plumbing_server_client

将路径/home/rosnotic/demo02_ws/devel_isolated/plumbing_server_client/include/**径配置进 c_cpp_properties.json

服务通信—自定义srv_第3张图片

2.服务端源码编写

服务通信—自定义srv_第4张图片

 

3.客户端源码编写 

服务通信—自定义srv_第5张图片

4.配置 CMakeLists.txt 

 服务通信—自定义srv_第6张图片

 


 

三:编译与执行(三个命令行窗口

第一个命令行:启动 roscore

第二个命令行:启动服务端节点

 cd demo02_ws
catkin_make

source ./devel/setup.bash

rosrun plumbing_server_client demo01_server

第三个命令行:启动订阅节点

source ./devel/setup.bash

rosservice call Addints(后面用tab补齐)

服务通信—自定义srv_第7张图片

 

你可能感兴趣的:(c++,开发语言)