文章插图
ROS是机器人操作系统(Robot Operating System)的简称,用于编写机器人的软件程序 。
ROS是一种具有高度灵活性的软件架构,能够帮助软件开发者快速创建机器人应用软件 。ROS提供了一系列程序库和工具,包括:硬件抽象、设备驱动、库函数、可视化、进程间消息传递和软件包管理等 。
ROS是一个分布式的进程(也就是“节点”)框架,这些进程被封装在不同的程序包或功能包中 。
ROS可以分成两层:底层是操作系统层(通常不需要用户关心),上层则是实现不同功能的软件包,如感知、定位、规划、控制等 。
了解了ROS的目录文件结构之后:ROS的目录文件结构
本文主要介绍几个ROS的重要概念:节点(node)、消息(message)、主题(topic)、服务(service),ROS控制器(ROS master),帮助初学者快速了解ROS 。
1、节点(node)节点是进行运算任务的进程 。一个系统可以由很多节点组成,节点也可以称为软件模块 。
ROS是以节点的形式开发的,节点是根据其目的,可以细分的可执行程序的最小单位 。节点使基于ROS的系统在运行时更加形象化,当许多节点同时进行时,可以将不同节点的通讯绘制成下图 。
文章插图
2、消息(message)节点之间通过传送消息进行通讯 。每一个消息都是一种数据结构 。
ROS的消息支持标准的数据类型(整型、浮点型、布尔型等),还包括数组、结构体、自定义的数据类型等等 。
3、主题(topic)【ROS的几个重要概念:节点、消息、主题、服务】消息以一种 发布/订阅 的方式传递,一个或多个节点可以在一个给定的主题中发布消息,多个节点可以订阅同一个主题 。
文章插图
发布者和订阅者不了解彼此的存在 。
4、服务(service)基于主题 发布/订阅 的通信方法是一种异步方法,该 发布/订阅 模型是一种很灵活的通讯模式 。但在某些情况下,需要一种同时使用请求和响应的同步消息交换方案,ROS提供了叫做服务的消息同步方法,是一种一对一的机制 。
一个服务被分成服务服务器和服务客户端,其中服务服务器只在有请求(request)的时候才响应(response),而服务客户端会在发送请求后接收响应 。与话题不同,服务是一次性消息通信 。
因此,当服务的请求和响应完成时,两个连接的节点将被断开 。
服务通常被用作请求机器人执行特定操作时使用的命令,或者用于根据特定条件需要产生事件的节点 。
由于它是一次性的通信方式,在网络上的负载很小,所以它也被用作代替 基于主题 发布/订阅 的通信手段 。
5、ROS控制器(ROS master)在上面概念的基础上,需要有一个控制器,可以使所有节点有条不紊地执行,这就是ROS的控制器(ROS master) 。
ROS master 通过RPC(Remote Procedure Call Protocol,远程过程调用)提供登记列表和对其他节点/主题的查找 。
文章插图
总结为一句话就是:ROS中最小的进程单元就是节点(node),节点之间通过主题(topic)传递消息数据(message) 。
文章插图
消息记录包(bag)是一种用于保存和回放ROS消息数据的文件格式 。
ROS提供了可以将bag文件可视化的图形工具,详见:ROS bag的绘图工具:rqt_bag和PlotJuggler
推荐阅读
- 颠覆了我认知!阿里架构师原来是这样定义微服务、分布式构架的
- HashMap这次是真的懂了,扰动函数、负载因子、扩容拆分全搞定
- 万字详文:Java内存泄漏、性能优化、宕机死锁的N种姿势
- 孝庄皇后死后埋在哪里了? 孝庄太后的一生
- 春秋时期晋国是怎么灭亡的 晋国不亡秦国能统一
- 历史上的虢国夫人 虢国夫人是哪个朝代
- 千里江山图王希孟画了多久 王希孟的《千里江山图》
- 二战美国投向日本核弹 美国给日本投的核弹
- 古代人披风用来做什么的 古代将士的披风叫什么
- 黄魁与黄金芽的对比,太平猴魁的选购方法