ROS节点中创建msg和srv文件(kinetic/melodic)

1.msg文件创建

#创建msg文件夹

roscd ros_pkg

mkdir msg

cd msg

#创建msg文件

touch a_msg.msg

gedit a_msg.msg

在a_msg.msg文件中写入msg内容,举个栗子

#数据类型 数据名称
int8 A
int8 B

修改package.xml,添加如下内容

<build_depend>message_generation</build_depend>

<run_depend>message_runtime</run_depend>

修改CMakeList.txt,添加如下内容

find_package(catkin REQUIRED COMPONENTS
   ...
   ...
   std_msgs
   message_generation
   ...
)
catkin_package(
  ...
  CATKIN_DEPENDS message_runtime ...
  ...)
add_message_files(
  FILES
  a_msg.msg
)
generate_messages(
  DEPENDENCIES
  std_msgs
)

 

 

2.srv文件创建

#创建srv文件夹

cd ros_pkg

mkdir srv

cd srv

#创建srv文件

touch b_srv.srv

gedit b_srv.srv

在b_srv.srv文件中写入srv内容,举个栗子,注意三个减号(---)

int64 A    #Request
int64 B
---
int64 sum  #Response

同上,修改package.xml和CMakeList.txt文件,注意Files文件添加行改为如下内容

add_service_files(
  FILES
  b_srv.srv
)

3.验证是否成功

cd workspace

catkin_make

source devel/setup.bash

rosmsg show ros_pkg/a_msg

rossrv show ros_pkg/b_srv

如果show得到的内容跟a.msg和b.srv中写的内容一致,则编译正确!

 

4.msg和srv文件的使用,在cpp文件中添加如下头文件

//使用msg文件
#include "ros_pkg/a_msg.h"

ros_pkg::a_msg msg;
msg.A = 1;
msg.B = 2;


//使用srv文件
#include "ros_pkg/b_srv.h"

int add(ros_pkg::b_srv::Request &req, ros_pkg::b_srv::Response &res){
  res.sum = req.A + req.B;
  return res.sum;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值