《ROS机器人开发实践》学习四——自定义话题消息与服务数据

日期:2021/09/06

一、自定义话题消息

由上文的例子,节点之间传递的消息类型为String类型,为ROS元功能包common_msg提供,其中包含大量的消息类型,可满足一般场景下的应用,但是对于特定的应用场景,用户也可自定义消息类型。

自定义话题消息的具体步骤可参考书本,定义完成后,需要对自定义的msg文件进行编译,编译前需要对packag.xml进行修改,添加:

  <build_depend>message_generation</build_depend>
  <exec_depend>message_runtime</exec_depend>

**注意:**这里第二行代码书本为run_depend这个需要根据xml文件的format来进行修改,如果<package format="2">则需要使用exec_depend,否则会出现编译错误。

接下来是对CMakeLists.txt进行修改,需要添加以下代码:

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  message_generation
)

add_message_files(
  FILES
  Person.msg
)

generate_messages(
  DEPENDENCIES
  std_msgs
)

添加完成后,保存退出,进入catkin_ws目录进行编译,编译完成后可使用:rosmsg show Person查看自定消息类型,查询成功则代表自定义成功。

二、自定义服务数据

服务是节点之间同步通信的一种方式,由客户端(Client)节点发布请求,由服务端(Service)节点处理后反馈应答。

根据书本例子进行学习,由Client发布有两个需要相加的int类型变量,由Service节点接收请求后完成运算并返回加法运算结果。以下为具体步骤:
1、建立srv文件

cd catlkin_ws/src/learning_communication
sudo mkdir srv
cd srv
sudo gedit AddTwoInts.srv

2、在.srv文件中添加请求与应答两个数据域并保存

int64 a
int64 b
---
int64 sum

3、根据书本在packags.xml和CMakelist.txt中添加编译配置,编译.srv文件;
4、创建server.cpp和client.cpp,再次修改CMakelist.txt加入这个.cpp文件的编译配置;
5、编译catkin_ws空间,并添加环境变量,然后运行server和client节点,具体运行结果见书本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值