参考文章:
https://blog.csdn.net/buaazyp/article/details/80661173
【ROS入门-3】嘴对嘴讲解ROS的核心概念——节点与节点管理器
ROS核心概念(节点Node & 节点管理器ROS Master & 话题Topic & 消息Message & 服务Service & 参数parameter&功能包package)
1. ROS节点和ROS节点管理器
每个节点是在整个机器人中完成一个具体功能的这样一个一个的进程,相当于我们win系统里面的某一个具体的进程。
总结一下节点的特性:
-
执行具体任务的进程、独立运行的可执行文件。
-
不同节点可使用不同的编程语言,可分布式运行在不同的主机。
-
节点在系统中的名称必须是唯一的。
-
所有节点之间的消息通信都必须使用节点管理器。
可以使用rosrun
命令运行一个包内的节点(不需要知道这个包的路径)。
rosrun [包名字] [节点名字]
节点管理器(Master)负责节点到节点的连接和消息通信,类似于服务器(Server)。
没有节点管理器,就不能在节点之间建立访问和消息交流(如话题和服务)。
总结一下节点管理器的特性:
-
为节点提供命名和注册服务。
-
跟踪和记录话题/服务通信,辅助节点相互查找、建立连接。
-
提供参数服务器,节点使用此服务器存储和检索运行时的参数。
2. 消息与话题
话题通讯是一种异步通讯,还有一种同步通信机制--服务。
话题(节点之间的输送管道):
- 节点间用来传输数据的重要总线
- 使用发布/订阅模型,数据由发布者传输到订阅者,同一个话题的订阅者或发布者可以不唯一
- 发布者和订阅者并不了解彼此,系统中可能同时有多个节点发布或者订阅同一个话题
消息(话题数据):
- 具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型;
- 使用编程语言无关的.msg文件定义,编译过程中生成对应的代码文件。
- 每一个消息都是严格的数据结构
话题通信机制的步骤:
- Talker注册
- Listener注册
- ROS Master进行信息匹配
- Listener发送连接请求
- Talker确定连接请求
- Listerner尝试与Talker建立网络连接
- Talker向Listerner发布数据
3. 服务
服务(Serve)是一种同步通信机制。服务比较像打电话,话题有点像写信,更像写篇博客或者发个朋友圈。
- 使用客户端/服务器(C/S)模型,客户端发送请求数据,服务器完成处理后返回应答数据;
- 使用编程语言无关的.srv文件定义请求和应答数据结构,编译过程中生成对应的代码文件。
服务通信机制:
- Talker注册
- Listener注册
- ROS Master进行信息匹配
- Listerner与Talker建立网络连接
- Talker向Listerner发布服务应答数据
4. 话题与服务的区别
https://blog.csdn.net/shouwangyunkai666/article/details/96454543
话题是ROS中基于发布/订阅模型的异步通信模式,这种方式将信息的产生和使用双方解耦,常用于不断更新的、含有较少逻辑处理的数据通信;而服务多用于处理ROS中的同步通信,采用客户端/服务器模型,常用于数据量较少但有强逻辑处理的数据交换。
5. 参数
参数服务器(parameter server):是指在功能包中使用参数时,注册各参数的服务器。参数服务器也是主节点的一个功能。
6. 文件系统
功能包:
功能包清单:
元功能包:
7.课后作业与反思