IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 初识ROS -> 正文阅读

[人工智能]初识ROS

??需要用到ROS,就来学学ROS。作为小白一个,文章难免出错,请各位海涵。帮我多多指错。这篇文章的目的是让新手对于ROS有个简单的认识,讲的基本都是概念上的东西。希望这篇文章能够解释清楚以下几个问题:
??1.ROS是什么/ROS能干什么?
??2.ROS的基础结构是什么?
??3.ROS部分专有名词的解释:ROS节点(node)、节点管理器(master)、参数服务器(parameter server)、消息(message)、话题(topic)、服务(service)、消息记录包(bag)

1.ROS是什么/ROS能干什么?

??ROS全称是Robot Operating System,也就是机器人操作系统。从字面上就知道是帮助我们操作机器人的。但和Linux这种底层的os不同,ROS是基于底层os的,也就是在Linux之上,可以理解成在Linux之上做了封装以便于可以直接调用那些用于操作机器人的各种包。ROS的有几个版本,对应的也有不同的Linux环境(网上一查都有,不是重点,在此不再赘述。不过笔者用的是kinetic对应的就是ubuntu16.04啦~)。
??那ROS有什么好处呢?为什么要用ROS呢?这要从ROS的设计目标谈起:ROS便于机器人研发中的代码复用,是一种分布式的进程框架,核心在于可以同步或者异步传递消息数据的中间件框架。简单点儿说就是ROS的模块性和复用性特别好,这样开发者就可以专注于主逻辑的设计。也有点儿像拼积木(积木块已经被造好)。我觉得另一个优势是:ROS使用简化的类型描述语言描述ros发布的数据,通过这种描述语言,ros可以使用多种编程语言(C++ PYTHON java matlab)编写不同节点,实现节点间的通信(不局限于一种,可太棒了!)

??对于ROS能干什么?其实我觉得就是用来开发机器人吧。现在各种机器人无论是UAV、UGV其实都是基于ROS上在做开发滴。要想让robot做点儿个性化的事情,ROS应该是要学滴。而且ROS现在已经被认定为了一个标准(好消息:开源!)。

2.ROS的基础结构是什么?

??先不关与ROS具体有什么,先从宏观上给它打个样儿。ROS的体系结构大致有三部分:ROS文件系统、ROS计算图、ROS社区
??ROS文件系统:文件系统其实就是ROS文件的组织结构,了解了文件系统就会知道程序执行到哪步时调用了哪个文件。文件系统有很多基础性的概念:package、manifest。
??ROS计算图:计算图相当于ROS运行的机制,包括节点如何通信等等。有的地方也叫做计算网络,所有节点都可以连入这个网络中进行通信。我觉得这个是ROS的最核心部分吧。设计的概念包括:node、master、message、topic、service
??ROS社区:很少看到有把社区放在架构里面的,但ROS目前看来像一个完全开源的东西。开源项目就需要社区去维护,可能最开始设计定下的基调就是这样吧。
(上文提到了很多概念,我在下文都会一一解释)

3.ROS概念解释(按照结构划分说了)

package(功能包)

??package其实可以算组织ROS代码的一个基本单位。ROS中package更多指的是代码包。如果说最大的应该算workspace(工作空间),工作空间内包括代码空间(src),编译空间(build),开发空间(devel,保存编译完的包),安装空间(install)。package也就是代码空间下的一个基本单位。一个应用对应于一个package。ROS利用package实现模块性和复用性
??package的结构如下图(因为只是介绍基本概念,所以就不详细说各个文件的作用了~)
在这里插入图片描述
??图源:ROS学习笔记(一) ROS文件系统_我本傲骄的博客-CSDN博客

manifest

??全称叫package manifest,为package之间提供依赖性。其中保存的是package的一些基本信息:版本、维护者、依赖选项、编译标志等等。落实到具体文件就是package里面那个package.xml

metapackage(元功能包)

??metapackage是比package高一个级别的概念,是package的集合。以前也叫stack,现在以及废弃

metapackage manifest

??这个比manifest高一个级别,功能类似于manifest,只不过是针对于metapackage

node(节点)

??ROS整体上是一个分布式的架构,也就是有很多个节点组成。或许也可以说成ROS的基本动作执行单位,可以为节点分配任务。
作为一个整体,节点之间也要有相互的协作。ROS有自己的通信机制,下面介绍一下:
??ROS的通信手段有两种:消息传递、服务调用

message(消息)/topic(主题)

??message就对应于消息传递,但消息不能直接就传过去。要借助载体:也就是topic。如果一个节点想发送消息,就要选择一个topic(这个topic可以是自己创造的或者是别人创造的),选topic发message这个动作就是pulish(发布)。如果想接受消息,也要通过topic。而这个动作叫做subscribe(订阅)。

server(服务)

??server对应于服务调用,不过server受众小一点儿。单指两个节点之间。服务调用的流程是:client节点发送request给server节点,server节点执行处理后,发送response给client节点
??那消息传递和服务调用有什么区别呢?
????1)服务调用实现一对一,消息传递实现多对多。服务调用只是两方之间,消息传递中同一个topic可以有多个发布者和多个订阅者(也有一个限制:两个发布者发布的同名消息,类型必须一致)
????2)服务调用(双向),消息传递(单向)。服务中发送方会等待接收方的response,而消息传递中发布者发送完就不再管这个消息了——单向传输系统(有点儿像计网中TCP和UDP)

master(节点管理器)

??节点多了总要有个头儿,master就是负责管理所有节点。它会掌管与各个节点之间有关的topic、service信息列表。虽然说有管理者,但通信时消息直接从发布节点到订阅节点,中间不经过节点管理器。ROS参数服务器是节点管理器的一部分,所有节点都可访问修改数据(数据/配置信息)。所有例子中先rescore一下,启动的就是master.

bag(消息记录包)

??一个包是ROS中用于存储ROS 消息数据的文件格式。即保存和回放ROS消息数据的文件格式。包的扩展名为.bag。个人感觉这个存在感不是很强,不了解就不介绍了~

??这里解释一个例子:判断ros是否安装成功都会使用一个小乌龟移动的例子,那为什么小海龟可以移动呢?这个过程是这样的:
/teleop_turtle 节点会以消息的形式将这些运动控制命令发布到 话题/turtle1/cmd_vel; 与此同时,因为turtlesim_node 订阅了该话题,因此它会接收到这个些消息,控制海龟按照该预定的速度移动

参考资料:

ROS入门学习 - coding-for-self - 博客园(cnblogs.com)
ROS核心概念、工作空间 和 功能包。ROS学习资源_Bruce’s blog-CSDN博客

因作者水平有限,如果错误之处,请在下方评论区指出,谢谢!

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-11 12:42:26  更:2021-11-11 12:43:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 6:30:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码