ROS学习笔记基础2(基础知识和ROS架构)

ROS基础知识 阅读详情

ROS学习笔记1(基础知识和ROS架构)

1. 什么是ROS

ROS 是一个适用于机器人的开源的元操作系统,某些时候也是一种机器人框架(robot frameworks)。系统包括如下服务:

1. 硬件抽象
2. 底层设备控制
3. 常用函数实现
4. 进程间消息传递
5. 包管理

从这张图片来看,ROS是2007年诞生与斯坦福大学,斯坦福大学,世界名校,而且是专业研究机器人的,目前也在从事人工智能的研发,ROS诞生于这样的贵族,可见ROS的发展还是非常有前途的

2. ROS和其他机器人平台有什么不同

Brian Gerkey(同时涉猎 Player 和 ROS)向ROS用户所写的关于ROS和Player区别的电子邮件中提到:

这个问题的答案,和许多问题一样,视情况而定。特别是取悦于你想要干什么。Player非常适合简洁的非铰接的移动平台。它的设计为那些激光雷达的先锋提供了简单的传感器和电机操作方法。


然而,ROS是围绕着基于驱动传感器(倾斜式激光,盘式/斜试头部传感器,机械臂传感器)的复杂移动处理平台设计的。与Player相比,ROS可以更方便的借助分布式计算设备,而且我可以肯定,越高级的应用越适用于ROS而不是Player。换句话说,Player提供了更多的硬件驱动,而ROS提供了更多算法。


关于你们针对OpenCV集成提出的问题,我想你们会发现ROS集成OpenCV的代码要比Player多一点。未来,当ROS和OpenCV团队明显重叠时,你们会发现这种差异将变得更大。


我发现ROS利用了大量的来自于Player工程的代码。ROS节点的代码重用了许多Player的驱动,而且Stage和Gazebo可在ROS社区中得到广泛的支持和良好的应用。

总结一下ROS的特点:

  1. 更方便地借助分布式计算设备
  2. 提供更多算法的支持
  3. 分布式的进程(节点),进程被封装在程序包和功能包集中。

3. ROS架构组成

ROS的纵向介绍主要从小到大,从深到浅进行介绍,整个ROS系统分为以下三个层次,如图

在这里插入图片描述

3.1 文件系统级别

img

文件系统级的概念如下:

  1. 功能包:功能包是ROS系统中软件组织的基本形式,包含运行的节点以及配置文件等。
  2. 功能包清单:这个清单是指明功能包的依赖关系、源文件编译标志信息等。功能包中的package.xml文件就是一个功能包清单。
  3. 综合功能包:将几个功能包组织在一起,即可形成综合功能包。
  4. 综合功能包清单:类似普通功能包清单.在格式上也有一定的限制。
  5. 消息类型:ROS中节点之间发送消息时需要事先进行消息说明。ROS中提供了标准类型消息,也可以自行定义。消息类型的说明存储在功能包下的msg文件内。
  6. 服务类型:定义了在ROS系统中由每个进程提供的关于服务请求和响应的数据结构。

3.2 ROS架构组成——计算图层

这个层次最深,主要是描述程序是如何运行的,也就是ROS当中很细节的层次,这个层次我们主要介绍几个概念,这几个概念分别是节点、节点管理器、话题、服务。

(1)节点
就是指功能,或者说是进程,也可以当做一个个软件模块。

(2)节点管理器
节点管理器说白了就是管理节点的,跟指挥中心一样,类似于每一个固定电话是一个节点,那节点管理器就是基站,总站。

在这里插入图片描述

(3)话题

在这里插入图片描述

首先介绍ROS的话题通讯,ROS的话题通讯信息流图如下:

在这里插入图片描述

看到这幅图可能是懵逼的,接下来我们详细介绍。

假设一个节点需要某种类型的信息,假设这种类型是“bar”,也就是我们所说的话题,那这个节点必须接收这种话题的信息,我们把这个节点称之为接收者或者订阅者(listener),因此它会向节点管理器(ROS Master)求助,节点管理器(ROS Master)然后便会帮助这个接收者(listener)找正在发布这种话题“bar”的节点,这个节点我们称之为发布者(talker)找到之后便会帮助这两个节点建立连接,然后通讯。

https://i-blog.csdnimg.cn/blog_migrate/982e90fa881ac02ba2061fc750d3e669.png

总体上来说一下步骤(图中步骤是七个,此处精简为五个步骤):

第一步:信息的发布者(talker)和接收者(listener)都必须向节点管理器(ROS Master)注册自己的信息,就跟人员登记一样,节点管理器需要知道你这个节点的地址等信息,为什么需要知道呢,因为ROS的节点在实际机器人设计中,可能都存在于一个计算机之中,也可能分布于不同的计算机,因此需要地址等信息来对节点进行确定;

第二步:节点管理器在确定需要通信的两个节点之后就会对两个节点的信息进行匹配;

第三步:接收者(listener)向发布者(talker)发送自己的TCP通讯协议以及连接请求;

第四步:发布者(talker)确定连接请求,然后将自己的TCP地址发送给接收者(listener);

第五步:两个节点正式建立连接,并以TCP协议进行数据传输。

4. ROS安装文件夹架构

ROS安装之后的安装目录默认在“计算机/opt/ros/”安装目录下,如下图所示,大家打开之后会看到下面这五个文件夹。
在这里插入图片描述

4.1 bin文件夹

文件夹下面保存的基本是一些可执行的程序和命令,很多都是在ROS的终端界面可以直接运行的命令行,而如果需要在终端中调用命令行运行命令,就必须找到这个命令行程序,也就需要找到bin文件夹,也就需要前面所说的脚本文件,此外,还需要设置环境变量,设置环境变量的方法很简单,系统为我们已经准备好了脚本文件,我们只用将这些脚本添加到ROS的终端配置文件里面即可。
在这里插入图片描述

4.2 include文件夹

这个文件夹比较重要,里面放置的是头文件,这个大家就比较熟悉了,学过C语言的都知道,每次我们在写程序的第一行就是#include <stdio.h>,这个里面就包含了一个头文件。

ROS里面的某一具体的头文件属于某一具体的功能包,如果一个功能包需要依赖另外一个功能包,也就是要与另外一个功能包建立联系,那必须要包含另外那个功能包的头文件,功能包的头文件在功能包安装的时候就被存放于这个文件夹。

4.3 lib文件夹

主要存放一些.so结尾的可执行程序
在这里插入图片描述

4.4 etc文件夹

主要存放ros和catkin配置文件

参考文章

ros1 和 ros2的区别 为什么用ros2.00.概述1.基本概念基本概念:ROS网络(ROS Graph)概念简介:节点(Nodes)客户端程序库发现2. ros2 的目标3. ros2 的架构4. ros1 和ros2的通信模型 0.概述 其实是为了解决ros1中的一些问题 主要是从下面几个文章整过来 古月居的博客https://www.guyuehome.com/805 Why ROS 2? http://desi... 阅读详情

相关推荐

ROS2架构介绍

ROS 2 并非简单地对 ROS 1 进行升级,而是一次彻底的重新设计。它通过引入 DDS 作为通信核心,并结合现代软件工程实践,成功解决了 ROS 1 在多机器人系统、实时性、安全性和跨平台支持等方面的诸多痛点。其分层架构、标准化的生命周期管理、丰富的 QoS 策略以及内建的安全机制,使得 ROS 2 能够更好地满足现代复杂机器人应用在可靠性、性能和安全性方面的严苛需求。

weixin_39475026的博客 2523

ROS2 架构梳理汇总整理

本篇文章用来记录和梳理ROS2开发者及个人学习过程中对架构的理解,通过思维导图,分层架构图,逻辑流程图等说明。后续该文章会持续更新,将之前文章中所提到Nodes、Interfaces、Topics、Services、Actions、Parameters、Launch等补充到本文,使整体链接起来。

机器人梦想家 Bing Lee 6139

ROS1和ROS2分析总结

roscore:启动ROS的核心服务,包括参数服务器、日志节点等。这是运行所有ROS程序前首先要运行的命令。rosrun:允许用户直接通过包名运行包内的节点,而不需要知道这个包的路径。用法为rosrun [package_name] [node_name]。roslaunch:用于启动一个或多个ROS节点,通常是通过一个launch文件来定义的。

winstongit的专栏 2046

ROS2 框架图

ROS2的框架图体现了以通信为核心、以抽象层为桥梁、以工具链为支撑的设计思想。开发者可通过分层架构灵活选择底层中间件,利用RCL库快速实现功能,同时借助工具链高效调试和部署系统。这种设计既保留了ROS的易用性,又通过DDS增强了实时性和可靠性,成为机器人、自动驾驶、工业自动化等领域的主流开发平台。

u010632343的博客 1602

ROS2 学习笔记5:了解ROS2 服务Service

在ros2里面,节点可通过服务进行通信。不像话题那样,一个节点发布消息可以被一个或多个订阅器接收的的通信方式;服务是一种请求/响应模式,客户端节点发出请求,服务端节点处理这个请求并给出响应。通常,不会连续调用一个服务;话题,甚至动作更符合这种场景。在本教程中,你使用了命令行工具去识别,详细说明和调用服务。

weixin_43180456的博客 1796

ROS学习笔记3:ROS架构(了解)

一个节点可以针对一个给定的话题(Topic)发布消息(这个节点称为发布者Talker),也可以关注某个话题并订阅特定类型的数据(这个节点称为订阅者Listener)。ROS是一个优秀的机器人分布式框架。服务类型定义了ROS客户端/服务器通信模型下的请求和应答数据类型,可以使用ROS系统提供的服务类型,也可以使用.srv文件在功能包的srv文件夹中进行定义。消息是ROS节点之间发布/订阅的通信信息,可以使用ROS提供的消息类型,也可以使用.msg文件在功能包的msg文件夹下自定义所需要的消息类型。

qq_71734878的博客 4258

ROS2入门到精通教程(四)ROS2体系框架

ROS2组成体系一节中,我们已经简单了解了ROS2的体系框架,并且随着前面介绍了ROS2功能包的编写、编译、执行流程,也对ROS2应用程序的构建有了基本的认识。本节会进一步从微观和宏观两个维度来介绍ROS2的不同部分,以帮助大家了解ROS2的学习、工作内容以及以后可选择的发展方向。微观上会介绍ROS2的文件系统、ROS2的核心模块(通信与工具),这些都是官方提供的标准内容。宏观上会介绍关于ROS2的技术支持、ROS2的应用方向,这部分则是得益于ROS2的强大社区.。

熊猫小妖的AI世界 1511

什么是ROS?ROS和ROS 2区别有哪些?为什么建议使用ROS 2?

尽管ROS还存在不少的局限性,但是 ROS开源社区内的功能包数量逐年呈指数级上涨,不少开发者和研究机构还针对ROS 的局限性进行了改良,为机器人开发者带来了巨大的便利。(2)ROS 1.0的通信基于 TCPROS/UDPROS,强依赖于 Master 节点的处理,而 ROS 2.0取消了 Master,通信是基于数据分发服务(Data Distribution Service,DDS)的,同时 ROS 2.0内部提供了 DDS 的抽象层实现,用户可以不用关注底层的 DDS 使用了哪个API。

Ada_yQ的博客 2570

ROS2软件架构全面解析-学习如何设计通信中间件框架

ROS(Robot Operating System) 2 是一个用于开发机器人应用的软件平台,也称为机器人软件开发工具包 (SDK)。ROS2是ROS1的迭代升级版本 ,最主要的升级点是引入DDS(Data Distribution Service)为基础的底层通信系统。 这篇博客中将介绍、分析ROS2通信中间件软件架构,并且分析其中优点

chinamaoge的博客 3661

ROS2总体架构

中间层主要由数据分发服务DDS与ROS2封装的关于机器人开发的中间件组成,DDS是一种去中心化的数据通讯方式,它引入了服务质量管理 (Quality of Service)机制,借助该机制可以保证在某些较差网络环境下也可以具备良好的通讯效果,ROS2中间件则主要由客户端库、DDS抽象层(RMW层)与进程内通讯API构成;ROS1和ROS2的系统架构可以划分为三层,分别是应用层,中间层,系统层,其中中间层是ROS和ROS2的主要差别。

2398

ONFI5.0命令字实战指南:从基础操作到高级应用

本文深入解析ONFI5.0协议的核心——命令字,提供从基础操作到高级应用的实战指南。详细拆解了NAND闪存的复位、读状态、数据读取(00-30)、页编程(80-10)和块擦除(60-D0)等关键命令周期,并探讨了多平面操作与缓存操作等高级性能优化技巧,帮助开发者高效、稳定地与NAND芯片进行底层交互。

vscode5coder的博客 462

ROS学习笔记2-ROS架构与基础知识

ROS学习笔记2-ROS架构的基本概念概述ROS架构设计架构层面系统实现层面节点消息话题服务节点管理器(ROS master)文件系统 概述 ROS架构的三个层次:基于linux系统的OS层;实现ROS核心通信机制及众多机器人开发库的中间层;在ROS Master的管理下保证功能节点的正常运行的应用层 从系统实现角度将ROS划分为三个层次:计算图、文件系统和开源社区 三种通讯机制:基于发布/订阅的话题通信、基于客户端/服务器的服务通信、基于RPC的参数通信 ROS架构设计 架构层面 OS层:操作系统

与君决绝的小窝 1085

VS2019 从零构建 OSG+OSGEarth+OSGQt 开发环境实战指南

本文提供了一份详细的实战指南,指导开发者如何在Windows系统下使用VS2019从零开始编译和配置OSG、OSGEarth与OSGQt开发环境。文章涵盖了从环境准备、源码获取、CMake配置、Visual Studio编译到最终测试的完整流程,并分享了关键的避坑技巧,旨在帮助三维GIS与可视化开发者高效搭建稳定、可控的专业开发平台。

weixin_28826961的博客 366

ROS2 基础知识学习笔记

命令语法功能说明cdcd <目录路径>改变工作目录,未指定路径时回到用户主目录。pwd显示当前工作目录的绝对路径。mkdirmkdir [选项] <目录名称>创建一个目录/文件夹。touchtouch <文件名称>创建一个空文件。nanonano <文件名称>使用 nano 编辑器编辑文件。lsls [选项] [目录名称...]列出目录/文件夹中的文件列表。geditgedit <文件名称>打开 gedit 编辑器编辑文件,若文件不存在则新建。mv。

Master_Zhang_的博客 5127

Ollama内网离线部署大模型实战:从模型文件到私有化服务

本文详细介绍了如何在内网离线环境下,利用Ollama部署私有化大模型服务。内容涵盖从获取GGUF格式模型文件、手动安装Ollama、编写核心Modelfile配置文件,到创建运行模型、性能调优及安全加固的全流程实战指南,旨在帮助企业安全、可控地构建内部AI能力。

weixin_29209805的博客 214

别再买模块了!手把手教你用FT232RL-REEL芯片,从零设计一个USB转串口电路板

本文详细介绍了如何使用FT232RL-REEL芯片从零设计USB转串口电路板,涵盖核心器件选型、原理图设计、PCB布局布线及焊接调试等关键步骤。通过实战案例和性能对比,展示自制电路板在成本、性能和可靠性上的优势,特别适合硬件爱好者和工程师参考。

weixin_30561425的博客 431

ROS基础学习笔记

本篇是对ROS基础学习的一个总结。初学者可通过本篇博文对ROS有一个总体上的了解,也可获取一些学习资料,但是无法代替详尽的学习教程;有一定ROS基础者,可以通过本篇博文对ROS的基础知识进行一个回顾,需要用到相关资料时可以进行查阅(ROS大神可以自动忽略本篇博文)。 1. 学习资料推荐 ROS官方教程(中文版):http://wiki.ros.org/cn/ROS/Tutorials ROS学习笔...

思我所 2万+

电源完整性必看!用SIwave提取PDN阻抗曲线的3个关键设置与常见报错解决

本文深入探讨了在SIwave中进行电源完整性(PI)仿真时,提取PDN阻抗曲线的三个核心设置要点。重点解析了端口阻抗设为0.1欧姆的物理意义与SYZ参数仿真中的阻抗匹配原则,并提供了针对常见收敛性问题和模型误差的实战排查思路,旨在帮助工程师获得更精确可靠的仿真结果,为去耦电容优化提供依据。

b9c0d的博客 352

ROS 和 ROS2 架构和通信

ROS 和 ROS2 架构和通信1. ROS 架构设计1.1 OS 层1.2 中间层1.3 应用层2. ROS 的通信机制2.1 话题通信机制2.1.1 Talker 注册2.1.2 Listener 注册2.1.3 ROS Master 进行信息匹配2.1.4 Listener 发送连接请求2.1.5 Talker 确认连接请求2.1.6 Listener 尝试与 Talker 建立网络连接2.1.7 Talker 向 Listener 发布数据2.2 服务通信机制2.2.1 Talker 注册2.2.2

泠山的博客 6878

Simulink/Requirements Toolbox 学习(一):概述

编写、导入、导出需求并使需求正式化;两种创建需求的模块:需求编辑器、需求透视;描述需求的方式:文本、图像和关键字;通过导入和导出需求文件,与第三方需求管理工具(例如 Microsoft Word、Microsoft Excel®、IBM DOORS和 IBM DOORS Next)集成。涉及模块:Requirements Eidtor、Requirements Table等;

855

GraphRAG + Ollama 本地化部署实战:从零搭建知识图谱问答系统

本文详细介绍了如何在本地部署GraphRAG与Ollama,搭建一个完全自主可控的知识图谱问答系统。通过逐步指导环境配置、项目初始化、核心设置修改以及源码适配,成功将GraphRAG从依赖云端OpenAI API转向本地Ollama服务,并选用qwen2.5:7b和nomic-embed-text模型。该方案有效解决了数据隐私与持续API成本问题,特别适合中小企业构建内部知识库或智能客服系统。

x2y3z4a5b的博客 918

ROS2基础知识

ROS2学习笔记

scarecrow_sun的博客 1693

自动权重化图卷积网络(Auto-Weighted GCN)算法在反洗钱识别中的应用及代码实现

该算法通过自动学习节点之间的权重信息,能够更好地捕捉AML数据中的关系和结构,从而提高反洗钱识别的准确性和效果。传统的AML识别方法通常依赖于专家定义的规则和手动提取的特征,但这些方法在应对大规模和复杂的数据时存在一定的局限性。GCN通过在图上执行卷积操作来捕捉节点之间的关系和结构信息,从而实现对图数据的学习和表示。自动权重化图卷积网络是一种基于GCN的改进算法,能够自动学习节点之间的权重信息,从而更好地捕捉图中的关系。利用自动计算的权重值执行图卷积操作。根据节点之间的相似度,计算每个节点的权重。

syntax_api860的博客 376

【ros/ros2】ros1和ros2的区别-要点记录

ros1和ros2的区别,要点记录

shuaixio的博客 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【ROS2】为什么要使用ROS2?《ROS2系统特性介绍》

2010年,ROS1首次发布正式版本,其研发的初衷是为设计PR2(个人服务型机器人)共用的软件架构。但随着ROS1技术的普及,ROS1开始广泛融入各领域无人系统的研发,陆续暴露了系统的诸多问题。为了适应新时代机器人研发的需要,2022年5月,ROS开发者团队推出新版本ROS2。.........

后厂村路蔡徐坤的博客 9615

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ros基础知识总结

ros基础总结

lduzhenlin的专栏 3378

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

上一篇: 用Python和类的方法模拟新浪微博的批量虚假粉丝
下一篇: Linux查看cpu,内存占用率,查看终止进程
刘凯KAI
博客等级 码龄15年 663粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值