ROS学习笔记(1):publishers and subscribers
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