(3)ROS学习——创建ROS消息和ROS服务

ROS学习——创建ROS消息和ROS服务

一、msg和srv介绍

1、 msg(消息):msg文件就是文本文件,用于描述ROS消息的字段。它们用于为不同编程语言编写的消息生成源代码。

2、srv(服务):一个srv文件描述一个服务。它由两部分组成:请求(request)和响应(response)。

3、msg文件存放在软件包的msg目录下,srv文件则存放在srv目录下。

二、 使用 msg

下面,我们将在之前创建的软件包里定义一个新的消息。

1、在 catkin_ws/src/learning_communication 文件中,创建一个文件夹,命名为 msg,在这个msg文件夹里面,创建一个 .msg 文件,命名为msg.msg

2、打开msg.msg,复制如下内容,当然,你可以仿造上面的形式多增加几行以得到更为复杂的消息

int64 num
string first_name
string last_name
uint8 age
uint32 score

3、我们要确保msg文件能被转换为C++、Python和其他语言的源代码。

打开package.xml, 确保它包含以下两行且没有被注释。
把这两行的 <!-- 、-- > 删除 (注意不是整行删除)

< !--    <build_depend>message_generation</build_depend> -- >

< !--   <exec_depend>message_runtime</exec_depend> -- >

4、打开 catkin_ws/src/learning_communication 下的CMakeLists.txt
在find_package函数中添加message_generation依赖项,这样就能生成消息了。
直接将message_generation添加到COMPONENTS列表中即可,如下所示:

#不要直接复制这一大段,只需将message_generation加在括号闭合前即可
find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  message_generation
)

5、找到如下代码块,加入新消息名称:

## Generate messages in the 'msg' folder
# add_message_files(
#   FILES
#   Message1.msg
#   Message2.msg
# )

删除#符号来取消注释,然后将Message*.msg替换为你的msg.msg文件名,就像下边这样:

## Generate messages in the 'msg' folder
 add_message_files(
   FILES
    msg.msg
 )

6、编译

cd ~/catkin_ws/

catkin_make

7、使用 rosmsg
以上就是创建消息的所有步骤。让我们通过rosmsg show命令看看ROS能否识别它。

rosmsg show msg

显示如下:
消息类型包含两部分:

  • learning_communication/msg-- 消息所在的位置

  • int64 num
    string first_name
    string last_name
    uint8 age
    uint32 score – 消息名.

三、使用srv

让我们使用之前创建的包再来创建服务:

1、在 catkin_ws/src/learning_communication 文件中,创建一个文件夹,命名为 srv,在这个srv文件夹里面,创建一个 .srv 文件,命名为 AddTwoInts.srv

2、打开 AddTwoInts.srv,复制如下内容
srv文件分为请求和响应两部分,由’—'分隔,其中 a 和 b 是请求, 而sum 是响应。

int64 a
int64 b
---
int64 sum

3、我们要确保srv文件能被转换为C++、Python和其他语言的源代码。(这一步在上面使用msg已经做好了,这里不需要了)

4、在find_package函数添加message_generation依赖项()(这一步在上面使用msg已经做好了,这里不需要了)

5、找到如下代码块,加入新服务名称:

## Generate services in the 'srv' folder
# add_service_files(
#   FILES
#   Service1.srv
#   Service2.srv
# )

删除#符号来取消注释,然后将Service*.srv替换为srv.srv文件名,就像下边这样:

## Generate services in the 'srv' folder
 add_service_files(
   FILES
   AddTwoInts.srv
 )

6、编译

cd ~/catkin_ws/

catkin_make

7、使用 rosmsg
以上就是创建服务的所有步骤。让我们通过rossrv show命令看看ROS能否识别它。

 rossrv show learning_communication/AddTwoInts

猜你喜欢

转载自blog.csdn.net/m0_46278925/article/details/113487303
ROS