ros系统概览

news/2024/11/17 7:22:04/

文章目录

    • 1,ROS系统介绍
    • 2,系统分层结构

1,ROS系统介绍

ros系统的设计目标是便于智能机器人研发过程中的代码复用,因此ros采用开源的方式来维护整个系统,即通过现有的ros系统来加快智能机器人系统的研发,并为这些研发工作提供完善且丰富的工具,从而使得开发人员可以有能力开发任何所需要的智能机器人。与此同时,又与开源社区保持紧密的互动可以为ROS提供丰富且可用的第三方功能包,从而进一步丰富智能机器人所需要的开发工具,实现系统闭环。

在这里插入图片描述


ROS采用了一种分布式的方式来组织各个功能包,每个功能包可以独立的设计和研发,然后以松散的进行集成,且保持即插即用的便携性。在ROS系统中,所有可执行的程序都被叫做节点(node),并且他的功能不受任何形式的限制,从简单的hello word程序,到各类传感器数据的采集程序,以及带识别功能的摄像头程序都可以是一个节点,各节点之间通过ROS提供的消息传递机制进行通信,这些通信包括点对点的数据通信,单点对多点的·数据通信,以及多点对单点的数据通信。总之,ros系统主要有三个方面的特点:

1,分布式的架构: ROS将每个工作进程都看做是一个独立的节点,并使用节点管理工具进行统一的管理,同事还为这些节点提供了一套完整且高效的消息传递机制。这种架构可以把复杂的机器人系统分散为一个个独立且精巧的程序,从而以即插即用的方式进行功能拼装,以适应不同类型的机器人的协同工作的挑战,此外,分布式架构的实现中大量采用得Socket进行通信,使得这些节点既可以运行在比如说stm32这类的单片机系统上,也可以运行在比如树莓派这类计算设备上面,同时还能运行在大型服务器系统上,甚至可以运行在安卓等系统上。

2,多语言的支持:由于采用分布式加购的特点,使得对于ROS节点来说,只要硬件平台支持Socket,那么就可以在该平台实现节点功能,也因为这个原因,节点程序可以使用任何的编程语言进行编写,因此ROS在许多功能上采用XML这类和编程语言无关的脚本实现。此外,ROS还支持多种现代编程语言,比如C++,python等。

3,良好的可伸缩性:在使用 ROS 进行智能机器人研发中,既可以简单地编写一两个节点单独运行,也可以直接使用社区贡献的功能节点,此外通过 rospack、 roslaunch 等指令将很多个节点组织成一个更为庞大的工程,并指定它们之间的依赖关系及运行时的组织形式,从而得到了功能复杂的智能机器人 。

2,系统分层结构

从软件工程的角度来看, ROS 系统主要分为三个层次,分别是 OS 层、中间层和应用层。

1、 OS 层:由于 ROS 系统并不是传统意义上的操作系统,而是一组智能机器人软件开发工具集,因此需要如 Linux 系统、 Windows 系统这样的操作系统做硬件抽象的支撑和资源的调度,如进程管理、内存管理等,因此正如第四章所说,目前 ROS1 支持的操作系统是 Linux,如Ubuntu、 Arch、 Debian 等,而 ROS2 则除了支持 Linux 系统外,还支持 Windows 和 MAC OS。

2、 中间层:由于操作系统的通用性,因此并不会为了机器人开发对应的中间件,因此 ROS 在通用操作系统上进行了大量的工作,其中最为重要的就是完成了基于 TCP 和 UDP 的机器人通信系统,在再此基础上完成 TCPROS 和 UDPROS,并实现如订阅-发布、客服端-服务器等通信模型。此外, ROS 还开发了大量与机器人相关的基础库,如数据类型库、机器人坐标转换库和运动控制库等,这些库的完成为不同机器人提供统一的接口,而不需要进行重复的开发。

3、 应用层:最后是应用层, ROS 完成了整个机器人系统的核心节点——Master,并且每个可运行的智能机器人系统只有一个 Master。该节点主要负责整个机器人系统中各个节点之间的数据通信和队列调度,同时提供了标准的输入输出接口,使得开发人员不需要关心每个节点具体的数据通信过程,而只需要关心节点功能的实现,提高了智能机器人开发的效率。


从系统实现的角度来看, ROS 系统也可以分为三个层次,分别是计算图、文件系统和开源社区,
在这里插入图片描述

在这里插入图片描述

1,计算图:所谓计算图,是以数学中的“图”概念进行命名,即每个功能节点(Node)是图中的一个节点,节点和节点之间可以是双向通信,也可以是单向通信。

在这里插入图片描述

Node与Node之间的数据采用消息(Message)的方式进行传递,并且Message中的数据以固定的结构进行组织,除了支持基本的数据类型,如整形等,还支持嵌套的数据类型,以及自定义的数据类型。而节点与节点之间有三种方式,第一种是订阅-发布,第二种是客户端-服务器,第三种是动作(action)。

2,文件系统:一个完整的智能机器人系统包含众多的功能节点,而每个节点又包含了许多的消息类型、服务类型、功能代码等,因此 ROS 系统必须制定出一套文件系统的规则来组织这些功能节点,以及功能节点中的功能文件。在 ROS 系统中,首先需要有个工作空间(Workspace),该空间中存放源代码(src)、编译的过程文件(devel),以及编译完成的目标文件(build),而在源代码文件夹中又存放了各个功能节点,这些功能节点以包(Package)的形式存在,随后
在每个功能包中又包含了消息类型(msg)、服务类型(srv)、功能代码(src)等。

在这里插入图片描述

3、 开源社区: ROS 的开源社区活跃,并且提供非常的丰富资源,包括众多可用的功能包,以及智能机器人的开发知识,其中软件包的获取通过几条简单的指令就可以集成和使用,而知识的获取则通过邮件列表、论坛、博客等形式获取,如图4-7所示。具体来说 ROS 社区主要有六方面功能,分别是定期的 ROS 新版发行、软件源的维护、 ROS Wiki、邮件列表、 ROSAnswer,以及博客。

在这里插入图片描述


http://www.ppmy.cn/news/829217.html

相关文章

VisProg解析:根据自然语言指令解决复杂视觉任务

VisProg:根据自然语言指令解决复杂视觉任务 1. 介绍 VisProg 是一种神经符号系统,可以根据自然语言指令解决复杂的组合视觉任务。VisProg 使用 GPT3 的上下文学习能力来生成 Python 程序,然后执行这些程序以获得解决方案和全面且可解释的基…

【LiteOS】小白进阶之系统移植配置解析

LiteOS 配置文件是操作系统移植的核心部分 - los_config.h。 1、配置时钟 系统时钟的配置,需要根据不同的 CPU 以及 CPU 初始化的时钟频率来修改: #define OS_SYS_CLOCK 16000000 2、地址配置 extern char __data_end; e…

揭开液体活检技术的神秘面纱

液体活检(liquid biopsy)是新兴的肿瘤诊断技术,与传统检测手段相比具有创伤性小、取样便捷、可实时动态检测等优势,在肿瘤早期筛查、分子分型、复发监测和预后评估等方面起到重要作用。 图 1 与传统的组织活检相比,液…

YOLO系列(v1~v3)的学习及YOLO-Fastest在海思平台的部署(上)

YOLO系列(v1~v3)的学习及YOLO-Fastest在海思平台的部署(上) YOLO系列(v1~v3)的学习及YOLO-Fastest在海思平台的部署(中) YOLO系列(v1~v3)的学习及YOLO-Fastes…

自动控制的历史发展

本文转载自https://zhuanlan.zhihu.com/p/65339164那些年的神贴——自动控制的故事,原作者应该是《大话自动化:从蒸汽机到人工智能》的作者晨枫,其在网上发表过《自动控制的故事》和大量有关工业自动化的文章。 写在前面: 从文章来看&#…

centos7源码安装ntp_CentOS7系列--2.1CentOS7中安装配置NTP服务

CentOS7安装配置NTP服务 NTP服务是时间同步服务 1. 安装NTPd [rootcentos7 ~]# yum install -y ntp [jackcentos7 ~]$ vi /etc/ntp.conf 添加如下的代码 restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap 更改时间同步服务器 #server 0.centos.pool.ntp.org iburst #ser…

skewx 字体模糊_Pixelmator:从此修图不再叫做 “PS”

大部分小伙伴们在购入 Mac 电脑后,第一件事就是装上一些或许自己根本用不到的软件,例如:Pages、Kaynote、Garageband、iPhoto、Lightroom 等等,其中还包括 Photoshop 等其他专业性较强的应用。通过这个现象,也反应出 P…

python项目开发实例-有趣的十个Python实战项目,让你瞬间爱上Python!

前言 Python 是一种极具可读性和通用性的编程语言。Python 这个名字的灵感来自于英国喜剧团体 Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣。Python 易于设置,并且是用相对直接的风格来编写,对错误会提供即时反馈,对初学者而言是个很好的选…