机器人操作系统(ROS)教程4:ROS的框架【转】

本文涉及的产品
资源编排,不限时长
简介:

转自:http://www.arduino.cn/thread-11351-1-1.html

在进行ROS的代码开发前,有必要了解一些ROS的概念。
首先,ROS的系统代码分为两部分:main和universe。
1.main:是ROS的核心部分,它提供了一基本的工具,以及整个ROS的核心部分的程序编写。
2.universe:全球范围的代码,有不同国家的ROS社区组织开发和维护。一种是库的代码,如OpenCV、PCL等;库的上一层是从功能角度提供的代码,如人脸识别,他们调用下层的库;最上层的代码是应用级的代码,让机器人完成某一确定的功能。

还可以从另一种方式对ROS进行分级,分为三个级:计算图级、文件系统级、社区级。下面是说明图。
<ignore_js_op> 
一、  计算图级       计算图是ROS处理数据的网络图。程序运行时,所有进程以及他们所进行的数据处理,将会通过一种点对点的网络形式表现出来。这一级主要包括几个重要概念:节点(node)、消息(message)、主题(topic)、服务(service)。

<ignore_js_op> 


       1、  节点       节点就是一些执行运算任务的进程。就像是计算机里的应用程序。你可以通过节点来发布消息使机器人运动。
       2、  消息       节点之间是通过传送消息进行通讯的。

       3、  主题

<ignore_js_op> 


       消息以一种发布/订阅的方式传递。一个节点可以在一个给定的主题中发布消息。一个节点针对某个主题关注与订阅特定类型的数据。可能同时有多个节点发布或者订阅同一个主题的消息。总体上,发布者和订阅者不了解彼此的存在。
这就好比是一个讨论,给定一个讨论的主题。这时一群人加进了讨论,这就叫订阅。而每一个参与者就是节点。在讨论中有的人发布消息(publish),有的人只是聆听,不说话(subscribe)。说话的人和聆听的人并不一定认识。
       4、  服务        在ROS中通讯方式有两种:一种就是上面的节点之间通过发布/订阅话题来进行通讯的方式。还有一种就是服务,在这种方式下:一个用于请求,一个用于回应。这类似于web服务器。



在上面概念的基础上,需要有一个控制器可以使所有节点有条不紊的执行,这就是一个ROS的控制器(ROS Master)。
        ROS Master 通过RPC(Remote Procedure Call Protocol,远程过程调用)提供了登记列表和对其他计算图表的查找。没有控制器,节点将无法找到其他节点,交换消息或调用服务。

        比如控制节点订阅和发布消息的模型如下:

<ignore_js_op> 
ROS的控制器给ROS的节点存储了主题和服务的注册信息。节点与控制器通信从而报告它们的注册信息。当这些节点与控制器通信的时候,它们可以接收关于其他以注册及节点的信息并且建立与其它以注册节点之间的联系。当这些注册信息改变时控制器也会回馈这些节点,同时允许节点动态创建与新节点之间的连接。
        节点与节点之间的连接是直接的,控制器仅仅提供了查询信息,就像一个DNS服务器。节点订阅一个主题将会要求建立一个与出版该主题的节点的连接,并且将会在同意连接协议的基础上建立该连接。

         另:ROS控制器控制服务:

<ignore_js_op> 
二、文件系统级
ROS文件系统级指的是在硬盘上面查看的ROS源代码的组织形式。
它包括两个最基本的概念:Package和Manifest,即包和清单文件。
     Package是组织ROS代码的最基本单位,每一个Package都可以包括库文件,可执行文件,脚本及其它的一些文件。

     Manifest文件是对Package的相关信息的一个描述。他提供了Package之间的依赖性,以及一个包的元信息,比如版本、维护着和许可证等信息。
三、社区级
ROS的社区级概念是ROS网络上进行代码发布的一种表现形式。
代码库的联合系统。使得协作亦能被分发。这种从文件系统级别到社区一级的设计让独立地发展和实施工作成为可能。正是因为这种分布式的结构,似的ROS迅速发展,软件仓库中包的数量指数级增加。









本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sky-heaven/p/6049355.html,如需转载请自行联系原作者

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
相关文章
|
7天前
|
人工智能 物联网 Android开发
探索移动应用开发的未来之路:跨平台框架与操作系统的融合
在本文中,我们将深入探讨移动应用领域的最新发展趋势,特别是跨平台框架如何重新塑造移动应用的开发和部署。通过分析当前市场上流行的移动操作系统,如Android和iOS,以及它们对跨平台技术的支持情况,我们将展示开发者如何在保持原生性能的同时,实现代码复用和应用快速部署。文章还将探讨人工智能、物联网等新兴技术如何与移动应用开发相结合,为未来的移动生态系统带来创新。最后,我们将讨论这些技术变革对用户体验、安全性和隐私保护的影响。
|
24天前
|
前端开发 Android开发 开发者
《移动应用开发的未来:跨平台框架与操作系统的协同进化》
在移动技术不断演进的背景下,移动应用开发正面临着前所未有的挑战与机遇。本文深入探讨了移动应用开发的现状与未来趋势,特别是跨平台框架的发展如何影响开发者和用户。通过分析Flutter、React Native等主流框架的优势与局限,结合iOS和Android操作系统的最新更新,文章揭示了跨平台技术如何在提高开发效率的同时保证用户体验。此外,本文还讨论了移动操作系统对应用性能的影响,以及开发者如何利用这些系统特性来优化应用。
|
1月前
|
Linux 数据安全/隐私保护 虚拟化
04. 【Linux教程】安装 Linux 操作系统
04. 【Linux教程】安装 Linux 操作系统
74 3
04. 【Linux教程】安装 Linux 操作系统
|
1月前
|
机器学习/深度学习 传感器 算法
强化学习(RL)在机器人领域的应用,尤其是结合ROS(Robot Operating System)和Gazebo(机器人仿真环境)
强化学习(RL)在机器人领域的应用,尤其是结合ROS(Robot Operating System)和Gazebo(机器人仿真环境)
59 2
|
1月前
|
Unix Shell Python
Python教程:开箱即用的Python os模块知识
注:文末有福利小工具源码 Python 的 os 模块提供了许多接口用于与操作系统进行交互,包括文件操作、目录操作、路径操作、环境变量操作、系统信息获取等
24 1
|
23天前
|
Linux 网络安全 数据安全/隐私保护
网络安全教程-------渗透工具Kali,官网链接,ARM的介绍,Mobil,华为小米,oppe手机,是无法刷入第三方的操作系统的,E+手机,谷歌的picksoul,或者三星手机,系统盘是WSL的
网络安全教程-------渗透工具Kali,官网链接,ARM的介绍,Mobil,华为小米,oppe手机,是无法刷入第三方的操作系统的,E+手机,谷歌的picksoul,或者三星手机,系统盘是WSL的
|
28天前
|
机器人 API 开发者
Python基于Mirai开发的QQ机器人保姆式教程(亲测可用)
Python基于Mirai开发的QQ机器人保姆式教程(亲测可用)
|
29天前
|
机器人 定位技术 C++
技术笔记:ROS中测试机器人里程计信息
技术笔记:ROS中测试机器人里程计信息
|
2月前
|
开发框架 前端开发 Android开发
移动应用开发的未来:跨平台框架与原生操作系统的融合
【5月更文挑战第31天】 在本文中,我们将探讨移动应用开发领域的最新趋势,特别是跨平台开发框架和原生移动操作系统之间的融合。随着移动设备用户数量的不断增加,开发人员面临着在不同平台上提供一致体验的挑战。我们分析了跨平台工具如React Native和Flutter的兴起,以及它们如何利用原生系统特性来优化性能和用户体验。此外,文章还讨论了移动操作系统的最新进展,包括Android和iOS对开发者支持的增强。最后,我们提出了一个关于未来移动应用开发的预测,并强调了持续集成、自动化测试和云服务在现代移动开发流程中的重要性。
|
2月前
|
机器学习/深度学习 人工智能 前端开发
移动应用开发的未来:跨平台框架与操作系统的融合
【5月更文挑战第31天】 随着智能手机和平板电脑等移动设备在现代生活中的普及,移动应用已成为日常生活不可或缺的一部分。本文将探讨移动应用开发的最新趋势,特别是跨平台开发框架的兴起以及它们如何与各种移动操作系统相互作用。通过分析当前市场上流行的跨平台解决方案如React Native、Flutter和Xamarin,我们揭示了这些技术如何使开发人员能够更高效地创建兼容多个平台的应用程序。同时,文章还将讨论移动操作系统的最新发展,以及它们是如何适应并支持这些新的开发实践。最后,我们将展望移动应用开发的未来发展,包括人工智能、机器学习集成以及对用户体验的影响。

推荐镜像

更多