ROS学习笔记(1):发布者和订阅者

1、ros通信简介

ros的三种通行机制

  • topic 话题
    publishers / subscribers
  • serve 服务
    services / clients
  • action 动作
    action-servers/action-clients

为了确保这种通信机制能够顺利运行,引入了nodes、topic和messages等等的概念,使得这种通信机制更具逻辑性以及便于理解。

在ROS框架下,可以把一个大项目分成若干个小部分,让不同的人去完成,最后通过ROS这个框架,将每个人负责完成的那部分作为一个node,通过在topic上发布和订阅messages,这就实现了各个nodes之间的通信,将各个node连接起来,组合完成这个项目。

2、C++中的类与对象

C++ 中的类(Class)可以看做C语言中结构体(Struct)的升级版。结构体是一种构造类型,可以包含若干成员变量,每个成员变量的类型可以不同;可以通过结构体来定义结构体变量,每个变量拥有相同的性质。

C++ 中的类也是一种构造类型,但是进行了一些扩展,类的成员不但可以是变量,还可以是函数;通过类定义出来的变量也有特定的称呼,叫做“对象”。

3、publishers/subscribers

  • 一个node既可以是publishers也可以是subscribers,可以发布topic的信息,也可以订阅topic上的信息
  • 一个subscriber只需要知道它要订阅的那个topic的名称,并不需要准确知道是哪一个publisher发布的这个topic
  • 一个publisher也只管发布topic的消息就行了,不用管谁会来订阅这个topic上的信息,一个subscriber可以订阅很多个topic上的信息

这个程序用到std_msgs中的消息数据类型和ROS源码,所以创建功能包添加下面两个依赖就足够了

catkin_create_pkg learning_topic roscpp std_msgs

以下是一个publisher节点的代码:

#include <ros/ros.h> //惯例第一头文件,ROS的源码
#include <std_msgs/Float64.h> //传递的消息类型文件,根据实际需要选择对应的消息类型头文件 
 
//每一个节点只有一个main函数 
int 
  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值