返回顶部
首页 > 资讯 > 操作系统 >ros是linux发行版本吗
  • 884
分享到

ros是linux发行版本吗

linux 2023-04-13 21:04:21 884人浏览 独家记忆
摘要

本文小编为大家详细介绍“ros是linux发行版本吗”,内容详细,步骤清晰,细节处理妥当,希望这篇“ros是linux发行版本吗”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

本文小编为大家详细介绍“ros是linux发行版本吗”,内容详细,步骤清晰,细节处理妥当,希望这篇“ros是linux发行版本吗”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

ros是linux发行版本。ROS全称Robot Operating System,译为机器人操作系统;它基于Linux内核,只能在Linux下运行。ROS提供一些标准操作系统服务,例如硬件抽象,底层设备控制,常用功能实现,进程间消息以及数据包管理。ROS可以分成两层,低层是上面描述的操作系统层,高层则是广大用户群贡献的实现不同功能的各种软件包,例如定位绘图、行动规划、感知等。

ROS定义介绍

ROS全称Robot Operating System,译为机器人操作系统。基于Linux内核,目前只能在Linux下运行。

ROS设计者将ROS表述为“ROS = Plumbing + Tools + Capabilities + Ecosystem”,即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体。

顾名思义,ROS是一个系统。它和我们用的普通操作系统类似,ROS将底层的机器人硬件封装起来,也就是说,不同的机器人中包含的各种底层参数,在使用ROS进行开发的人员眼里,都是一样的。这里还要提一下,目前ROS没有一个可视化界面。我们所用的windows、Linux能直接看到图像界面并操作,是因为它们有一个可视化界面,而ROS没有。我们所谓的操作系统,并不一定是都要有可视化界面才算的,如果有兴趣的可以去看一下最早期的操作系统,只有命令行,并没有绚丽多彩的界面。

ROS提供一些标准操作系统服务,例如硬件抽象,底层设备控制,常用功能实现,进程间消息以及数据包管理。ROS是基于一种图状架构,从而不同节点的进程能接受,发布,聚合各种信息(例如传感,控制,状态,规划等等)。

ROS可以分成两层,低层是上面描述的操作系统层,高层则是广大用户群贡献的实现不同功能的各种软件包,例如定位绘图,行动规划,感知,模拟等等。

ROS是一个多义词,它还可以是一种通讯机制。在ROS开发中,用节点(node)表示应用程序,一个节点就是一个可执行程序。节点之间就是通过ROS进行通信。ROS通过节点管理器(Master)对各个节点进行管理。至于具体的原理实现等后续再说。

此外,ROS还代表一系列用于机器人开发的工具包、算法、技能、平台、生态等。

ROS的历史。说白了,ROS就是一帮大佬在开发机器人的时候觉得比较好的东西(可以是一些好用的库、软件,也可以是一些思想、协议、标准)汇集在一起后形成的东西。在机器人的开发中,各种各样的机器人没有统一的标准,每次开发一个自己没见过的机器人都需要重新去学习大量的东西,十分的不方便,于是,大佬们借鉴操作系统产生的思想,觉得为什么不可以给机器人也做一套系统来对底层进行封装呢?于是,ROS产生了。经过岁月的打磨,ROS越来越完善,用的人也越来越多了。

ROS功能作用

如果你要问我ROS是干什么的,那你只需要知道一句话就够了。ROS是用来做机器人或者机器臂开发的。

机器人开发的历史中,标准化的工作还是没有做到位。不同的机器人,所用的系统、程序等等都不一样,这样导致只要跨平台,开发起来就十分的困难。为了解决这样的问题,ROS诞生了。ROS可以通过封装,使得底层硬件对于开发者来说变得透明,大大降低了跨平台开发的难度。

之所以选择ROS,上面说了那么多其实大家也应该明白了,无非就是,用的人多,普及范围广。ROS所包含的领域、资料、功能、内容、知识等十分丰富,不用它你想去自己编库么?

1. ROS的性能特色

在正式学习ROS之前,先介绍ROS的几个特性,即元操作系统、分布式通信机制、松耦合软件框架、丰富的开源功能库等,来帮大家建立一些感性的认识。

ROS是一个机器人领域的元操作系统。也就是说,它并不是真正意义上的操作系统,其底层的任务调度、编译、设备驱动等还是由它的原生操作系统ubuntu Linux完成。

ROS实际上是运行在Ubuntu Linux上的亚操作系统,或者说软件框架,但提供硬件抽象、函数调用、进程管理这些类似操作系统的功能,也提供用于获取、编译、跨平台的函数和工具。

ROS的核心思想就是将机器人的软件功能做成一个个节点,节点之间通过互相发送消息进行沟通。这些节点可以部署在同一台主机上,也可以部署在不同主机上,甚至还可以部署在互联网上。ROS网络通信机制中的主节点(master)负责对网络中各个节点之间的通信过程进行管理调度,同时提供一个用于配置网络中全局参数的服务。

ROS是松耦合软件框架,利用分布式通信机制实现节点间的进程通信。ROS的软件代码以松耦合方式组织,开发过程灵活,管理维护方便。

ROS具有丰富的开源功能库。ROS是基于BSD(Berkeley Software Distribution,伯克利软件发行)协议的开源软件,允许任何人修改、重用、重发布以及在商业和闭源产品中使用,使用ROS能够快捷地搭建自己的机器人原型。

2. ROS的发行版本

与Linux发行版类似,ROS发行版内置了一系列常用功能包,即将ROS系统打包安装到原生系统中。ROS最初是基于Ubuntu系统开发的,ROS的发行版本名称也和Ubuntu采用了同样的规则,即版本名称由两个相同首字母的英文单词组成,版本首字母按字母表递增顺序选取,图1-1展示了ROS的一些主要版本。

ros是linux发行版本吗
图1-1 ROS的主要版本

ROS系统架构

安装完ROS后,很多朋友应该迫不及待想立马开始写程序。由于ROS的架构比较复杂,为了后面容易理解遇到的各种概念,这里先讨论一下ROS的系统架构,好让大家对ROS中的各种概念有全面性把控。按照官方的说法,可以分别从计算图文件系统开源社区视角来理解ROS架构。

1. 从计算图视角理解ROS架构

ROS中可执行程序的基本单位叫节点(node),节点之间通过消息机制进行通信,这样就组成了一张网状图,也叫计算图,如图1-3所示。

ros是linux发行版本吗
图1-3 ROS的计算图结构

节点是可执行程序,通常也叫进程。ROS功能包中创建的每个可执行程序在被启动加载到系统进程中后,就是一个ROS节点,如图1-3中的节点1、节点2、节点3等。

节点之间通过收发消息进行通信,消息收发机制分为话题(topic)、服务(service)和动作(action)三种,如图1-3中的节点2与节点3、节点2与节点5采用话题通信,节点2与节点4采用服务通信,节点1与节点2采用动作通信。计算图中的节点、话题、服务、动作都要有唯一名称作为标识。

ROS利用节点将代码和功能解耦,提高了系统的容错性和可维护性。所以最好让每个节点都具有特定的单一功能,而不是创建一个包罗万象的庞大节点。如果用c++编写节点,需要用到ROS提供的roscpp库;如果用python编写节点,需要用到ROS提供的rospy库。

消息是构成计算图的关键,包括消息机制和消息类型两部分。消息机制有话题、服务和动作三种,每种消息机制中传递的数据都具有特定的数据类型(即消息类型),消息类型可分为话题消息类型、服务消息类型和动作消息类型。消息机制和消息类型将在1.5节中展开讲解。

数据包(rosbag)是ROS中专门用来保存和回放话题中数据的文件,可以将一些难以收集的传感器数据用数据包录制下来,然后反复回放来进行算法性能调试。

参数服务器能够为整个ROS网络中的节点提供便于修改的参数。参数可以认为是节点中可供外部修改的全局变量,有静态参数和动态参数。静态参数一般用于在节点启动时设置节点工作模式;动态参数可以用于在节点运行时动态配置节点或改变节点工作状态,比如电机控制节点里的PID控制参数。

主节点负责各个节点之间通信过程的调度管理。因此主节点必须要最先启动,可以通过roscore命令启动。

2. 从文件系统视角理解ROS架构

ROS程序的不同组件要放在不同的文件夹中,这些文件夹根据不同的功能对文件进行组织,这就是ROS的文件系统结构,如图1-4所示。

ros是linux发行版本吗
图1-4 ROS的文件系统结构

工作空间是一个包含功能包、编译包和编译后可执行文件的文件夹,用户可以根据自己的需要创建多个工作空间,在每个工作空间中开发不同用途的功能包。在图1-4中,我们创建了一个名为catkin_ws的工作空间,其中包含src、build和devel三个文件夹。

  • src文件夹放置各个功能包和配置功能包的CMake配置文件CMakeLists.txt。这里说明一下,由于ROS中的源码采用catkin工具进行编译,而catkin工具又基于CMake技术,所以我们在src源文件空间和各个功能包中都会见到一个CMake配置文件CMakeLists.txt,这个文件起到配置编译的作用。

  • build文件夹放置编译CMake和catkin功能包时产生的缓存、配置、中间文件等。

  • devel文件夹放置编译好的可执行程序,这些可执行程序是不需要安装就能直接运行的。一旦功能包源码编译和测试通过后,可以将这些编译好的可执行文件直接导出与其他开发人员分享。

功能包是ROS中软件组织的基本形式,具有创建ROS程序的最小结构和最少内容,它包含ROS节点源码、脚本、配置文件等。

i. CMakeLists.txt是功能包配置文件,用于编译Cmake功能包编译时的编译配置。

ii. package.xml是功能包清单文件,用xml的标签格式标记该功能包的各类相关信息,比如包的名称、开发者信息、依赖关系等,主要是为了使功能包的安装和分发更容易。

iii. include/<pkg_name>是功能包头文件目录,可以把功能包程序中包含的*.h头文件放在这里。include目录之所以还要加一级路径<pkg_name>是为了更好地区分自己定义的头文件和系统标准头文件,<pkg_name>用实际功能包的名称替代。不过这个文件夹不是必要项,比如有些程序没有头文件。

iv. msg、srv和action这三个文件夹分别用于存放非标准话题消息、服务消息和动作消息的定义文件。ROS支持用户自定义消息通信过程中使用的消息类型。这些自定义消息不是必要的,比如程序只使用标准消息类型。

v. scripts目录存放Bash、Python等脚本文件,为非必要项。

vi. launch目录存放节点的启动文件,*.launch文件用于启动一个或多个节点,在含有多个节点的大型项目中很有用,为非必要项。

vii. src目录存放功能包节点所对应的源代码,一个功能包中可以有多个节点程序来完成不同的功能,每个节点程序都可以单独运行。这里src目录存放的是这些节点程序的源代码,你可以按需创建文件夹和文件来组织源代码,源代码可以用C++、Python等编写。

3. 从开源社区视角理解ROS架构

ROS是开源软件,各个独立的网络社区分享和贡献软件及教程,形成了强大的ROS开源社区,如图1-5所示。

ros是linux发行版本吗
图1-5 ROS的开源社区结构

ROS的发展依赖于开源和共享的软件,这些代码由不同的机构共享和发布,比如GitHub源码共享、Ubuntu软件仓库发布、第三方库等。ROS的官方wiki是重要的文档讨论社区,在里面可以很方便地发布与修改相应的文档页面。ROS的answer主页里有大量ROS开发者的提问和回答,对ROS开发中遇到的各种问题的讨论很活跃。

读到这里,这篇“ros是linux发行版本吗”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网服务器栏目。

--结束END--

本文标题: ros是linux发行版本吗

本文链接: https://lsjlt.com/news/201490.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • ros是linux发行版本吗
    本文小编为大家详细介绍“ros是linux发行版本吗”,内容详细,步骤清晰,细节处理妥当,希望这篇“ros是linux发行版本吗”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 ...
    99+
    2023-04-13
    linux
  • linux发行版本多的原因是什么
    这篇文章主要介绍“linux发行版本多的原因是什么”,在日常操作中,相信很多人在linux发行版本多的原因是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux发行版本多的原因是什么”的疑惑有所帮助!...
    99+
    2023-07-05
  • linux的发行版本有什么
    本篇内容介绍了“linux的发行版本有什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!linux的发行版本有:1、Red Hat;2、Ub...
    99+
    2023-06-21
  • 202310个最佳的Linux发行版本
    Hello,大家好!我是木荣君,作为一名嵌入式软件攻城狮,日常打交道最多的就是Linux系统。我们可以在Linux系统上进行开发、安装所需软件、部署服务等等一系列操作。那么今天给大家分享一下目前最流行的Linux发行版本,供大家参考 ...
    99+
    2023-08-19
    linux ubuntu 服务器
  • Linux发行版本中如何安装git
    这篇文章给大家分享的是有关Linux发行版本中如何安装git的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。于Debian /...
    99+
    2023-06-28
  • 怎么查看Linux发行版名称和版本号
    这篇文章主要介绍“怎么查看Linux发行版名称和版本号”,在日常操作中,相信很多人在怎么查看Linux发行版名称和版本号问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么查看Linux发行版名称和版本号”的疑...
    99+
    2023-06-16
  • win101909版本是专业版吗
    win101909版本是专业版吗?很多的电脑用户都更新了win10的1909版本不过很多人都不清楚这个版本是不是专业版,比较专业版的功能很齐全能够使用的更舒适,今天就给你们带来了win101909版本是不是专业版详细介绍,快来一起了解一下吧...
    99+
    2023-07-10
  • Kali Linux发布2020.1a版本
    Kali Linux发布2020.1a版本Kali Linux发布2020.1a版本。现在该版本暂时只能从cdimage.kali.org下载。该版本修复了2010.1不联网安装时,没有桌面的bug。2010.1默认的桌...
    99+
    2023-06-05
  • Linux发行版有哪些
    这篇文章主要介绍了Linux发行版有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Linux基金会官网Linux.com公布了一个引起争议的最佳Linux发行版名单:系统...
    99+
    2023-06-12
  • Linux发行版怎么选
    本文小编为大家详细介绍“Linux发行版怎么选”,内容详细,步骤清晰,细节处理妥当,希望这篇“Linux发行版怎么选”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、你需要知道这些linux历史知道一点相关操作系...
    99+
    2023-06-16
  • java: 错误: 不支持发行版本 5 java: 错误: 不支持发行版本8 java: 错误: 不支持发行版本17
    🍓🍓原因 该错误表示你使用的Java编译器不支持Java 5版本的发行。Java版本的发行是根据不同的功能和语言变化来区分的。 要解决这个问题,你可以尝试以下几种方法: 检查编译器配置:确保你的IDE或编译...
    99+
    2023-08-16
    java python 开发语言
  • Linux的发行版有哪些
    这篇文章主要讲解了“Linux的发行版有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux的发行版有哪些”吧!Kali Linux信息安全或网络安全是技术领域发展最快的领域,Lin...
    99+
    2023-06-15
  • Linux发行版都有什么
    这篇文章跟大家分析一下“Linux发行版都有什么”。内容详细易懂,对“Linux发行版都有什么”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“Linux发行版都有什么”的知识吧。与...
    99+
    2023-06-28
  • 新兴的桌面发行版 Septor Linux 发布 2019 版
    Septor Linux 是一个新兴的桌面 GNU/Linux 发行版,基于 Debian “Testing” 分支,支持以 live 模式启动。其以 Tor 加密网络流量来匿名地访问网络,并搭载了一些常见的日用或匿名性...
    99+
    2023-06-05
  • Java:不支持发行版本5
    错误 Java:不支持发行版本5 详细错误 同学在github上找到一个微服务项目(基于maven进行构建),进行二开,导入项目运行控制台报错 Java:不支持发行版本5,笔者修改项目结构( F ...
    99+
    2023-08-17
    java 开发语言
  • 要安装哪个 MySQL 版本和发行版?
    让我们根据各种属性了解需要安装哪个版本和发行版的 MySQL -哪个版本?确定您是否希望安装开发版本或GA(通用版本)版本。开发版本具有新功能,但不建议在生产环境中使用。另一方面,GA 版本(也称为生产版本或稳定版本)用于生产,因为它们没有...
    99+
    2023-10-22
  • 小Linux发行版的大用处指的是什么
    今天就跟大家聊聊有关小Linux发行版的大用处指的是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。什么是小Linux(Small Linux)发行版有哪些小Linux它们有什么用...
    99+
    2023-06-17
  • python获取Linux发行版名称
    我必须从python脚本中获取linux发行版名称。dist平台模块中有一个方法: import platform platform.dist() 但在我的Arch Linux下它返回: >>&g...
    99+
    2022-06-04
    python linux 发行版名称
  • Linux发行版的示例分析
    这篇文章给大家分享的是有关Linux发行版的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux 是什么简单来说, Linux 是一个类 Unix 的开源操作系统。就像 Windows 或者 Mac ...
    99+
    2023-06-16
  • Linux发行版该怎么选择
    这篇文章主要为大家展示了“Linux发行版该怎么选择”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux发行版该怎么选择”这篇文章吧。包管理器或许这是各发行版之间最显著的不同了,Linux与...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作