ROS2 引言

ROS保姆级0基础入门教程⭐ |第一章 ROS的概述与环境搭建(4万字教程,建议收藏) ROS全称Robot Operating System(机器人操作系统) ROS是适用于机器人的开源元操作系统; ROS集成了大量的工具,库,协议,提供类似OS所提供的功能,简化对机器人的控制; 还提供了用于在多台计算机上获取,构建,编写和运行代码的工具和库,ROS在某些方面类似于“机器人框架”; ROS设计者将ROS表述为“ROS = Plumbing + Tools + Capabilities + Ecosystem”,即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体。 阅读详情

引言

机器人发展的三个重要时期
在这里插入图片描述

  • 电气时代:主要应用于工业生产,俗称工业机器人,没有太多智能而言,完全按照人类的命令执行动作
  • 数字时代:计算机和视觉技术逐渐应用,出现了AGV、视觉检测等应用,机器人传感器更加丰富,但是依然缺少自主思考的过程,智能化
    有限,只能感知局部环境
  • 智能机器人时代:机器人成为了AI技术的最佳载体

教程链接

  1. 课程视频
  2. 图文教程
  3. 教程源码
    - Gitee
    - Github
  4. 教程问答
  5. 博客泡圈

系统架构

ROS是什么?

对于越来越复杂的智能机器人系统,已经不是一个人或者一个团队可以独立完成的,如何高效开发机器人,是技术层面上非常重要的一个问题,一群斯坦福大学的有志青年尝试给出一个答案,那就是机器人操作系统。

ROS的发展

在这里插入图片描述
经历前几年野蛮而快速的增长,ROS逐渐迭代稳定,2014年起,ROS跟随Ubuntu系统,每两年推出一个长期支持版,每个版本支持五年时间,这标志着ROS的成熟,也让ROS加快了普及的步伐。ROS被越来越多机器人使用,受限于当初设计的局限性,ROS的问题也逐渐暴露。为了能够真正设计一款适用于所有机器人的操作系统,ROS2在2017年底正式发布。

ROS的特点

  • 提高机器人软件复用率
  • 不要重新造轮子

ROS已经广泛用于各种机器人的开发,无论是机械臂、移动机器人、水下机器人,还是人形机器人、复合机器人,统统都可以看到ROS的身影,ROS已经成为机器人领域的普遍标准。
如一家做汽车的公司,从零制造汽车并不是一个明智的做法,他们通常会采购A家的轮子、B家的引擎、C家的多媒体系统,最后把这些整合到一起做成汽车。同理,我们也可以将ROS社区中已有的各种软件集合到一起,在此之上去实现自己的创意,同时还可以将自己的成果分享给别人,这样大家都可以站在巨人的肩膀上,向前走的更远,一步一步,智能机器人才会有更多沉淀和更长远的进步。

ROS 全球社区

  1. answers.ros.org,这是一个ROS问答网站,大家可以在上边提出任何关于ROS的问题,全球很多开发者都很乐意回答我们的问题;
  2. wiki.ros.org,这是ROS的维基百科,记录了ROS教程和各种功能包的使用;
  3. discourse.ros.org,这是ROS论坛,关于ROS开发的新鲜事都可以在这里发表和查看,比如ROS的活动、新功能包的发布等等。
  4. index.ros.org,是ROS各种资源的一个索引网站;
  5. packages.ros.org,是ROS功能包存储的数据库。

ROS2对比ROS1

ROS1局限性

在这里插入图片描述
ROS最早的设计目标就是开发这样一款PR2家庭服务机器人,这款机器人绝大部分时间都是独立工作,为了让他具备充足的能力:

  • 搭载了工作站级别的计算平台和各种先进的通信设备,不用担忧算力不够,有足够的实力支持各种复杂的实时运算和处理;
  • 由于是单兵作战,通信绝大部分都自己内部完成,那就可以用有线连接,保证了良好的网络连接,没有丢数据或者黑客入侵的风险;
  • 这台机器人最终虽然小批量生产,但是由于高昂的成本和售价,也只能用于学术研究。

随着ROS的普及,应用ROS的机器人类型已经和PR2机器人有了天翻地覆的问题,也并不具备PR2这样的条件,那原本针对PR2设计的软件框架,就会出现一些问题,比如:

  • 要在资源有限的嵌入式系统中运行;
  • 要在有干扰的地方保证通信的可靠性;
  • 要做成产品走向市场,甚至用在自动驾驶汽车和航天机器人上。

全新的ROS2

  • 多机器人系统:未来机器人一定不会是独立的个体,机器人和机器人之间也需要通信和协作,ROS2为多机器人系统的应用提供了标准方法和通信机制。
  • 跨平台:为了让所有机器人都可以运行ROS2,ROS2可以跨平台运行于Linux、Windows、MacOS、RTOS,甚至是没有任何系统的微控制器(MCU)上
  • 实时性
  • 网络连接:无论在怎样的网络环境下,ROS2都可以尽量保障机器人大量数据的完整性和安全性,比如在wifi信号不好的时候数据也要尽力发送过去,在有黑客入侵风险的场景下要对数据进行加密解密。
  • 产品化
  • 项目管理:机器人开发是一个复杂的系统工程,设计、开发、调试、测试、部署等全流程的项目管理工具和机制,也会在ROS2中体现,更方便我们去开发一款机器人

在这里插入图片描述

  • 系统架构进行了颠覆性的变化,ROS1中所有节点都需要在节点管理器ROS Master的管理下进行工作,一旦Master出现问题,系统就面临宕机的风险,ROS2实现了真正的分布式,不再有Master这个角色,借助一种全新的通信框架DDS,为所有节点的通信提供可靠保障。
  • 软件API进行了重新设计,ROS1原有的接口已经无法满足需求,ROS2结合C++最新标准和Python3语言特性,设计了更具通用性的API,虽然导致原有ROS1的代码无法直接在ROS2中运行,但是尽量保留了类似的使用方法,同时提供了大量移植的说明。
  • 编译系统进行了升级,ROS1中使用的rosbuild和catkin问题诸多,尤其是针对代码较多的大项目以及Python编写的项目,编译、链接经常会出错,ROS2对这些问题也进行了优化,重新优化后的编译系统叫做ament和colcon,大家在后续的课程中就会体验到新版编译器的使用方法。

ROS2 VS ROS1

在这里插入图片描述

  • 在ROS1中,应用层里Master这个节点管理器的角色至关重要,所有节点都得听它指挥,类似是一个公司的CEO,有且只有一个,如果这个CEO突然消失,公司肯定会成一团乱麻。ROS2把这个最不稳定的角色请走了,节点可以通过另外一套discovery——自发现机制,找到彼此,从而建立稳定的通信连接。
  • 中间层是ROS封装好的标准通信接口,我们写程序的时候,会频繁和这些通信接口打交道,比如发布一个图像的数据,接收一个雷达的信息,客户端库会再调用底层复杂的驱动和通信协议,让我们的开发变得更加简单明了。
  • 在ROS1中,ROS通信依赖底层的TCP和UDP协议,而在ROS2中,通信协议更换成了更加复杂但也更加完善的DDS系统。
  • 如果是在进程内需要进行大量数据的通信,ROS1和ROS2都提供了基于共享内存的通信方法,只不过名字不太一样而已。
  • 最下边是系统层,也就是可以将ROS安装在哪些操作系统上,ROS1主要安装在Linux上,ROS2的可选项就很多了,Linux、windows、MacOS、RTOS都可以。

DDS通信

在这里插入图片描述
ROS2相比ROS1最大的变化,除了省略了Master之外,应该就是通信系统的变化了。

DDS其实是物联网中广泛应用的一种通信协议,类似于我们常听说的5G通信一样,DDS是一个国际标准,能够实现该标准的软件系统并不是唯一的,不过这就带来一个问题,每个DDS厂家的软件接口肯定是不一样的,如果我们按照某一家的接口写完了程序,想要切换其他厂家的DDS,不是要重新写代码么?为了解决这个问题,ROS2设计了一个ROS Middleware,简称RMW,也就是指定一个标准的接口,比如如何发数据,如何收数据,数据的各种属性如何配置,都定义好了,如果厂家想要接入ROS社区,就得按照这个标准写一个适配的接口,把自家的DDS给移植过来,这样就把问题交给了最熟悉自家DDS的厂商。
举一个例子,比如我们在产品开发时,可以先用开源版本的DDS满足基本需求,部署交付的产品时,再更换为商业版本更稳定的DDS,这样可以减少开发成本。

核心概念

在这里插入图片描述

命令行

在这里插入图片描述
ROS1中的命令行相对分散,每一个功能都是一个独立的命令,比如rosrun启动某一个节点,rostopic控制话题相关的功能。

ROS2对命令行做了大幅度的集成,所有命令都集成在一个ros2的主命令中,比如ros2 run,表示启动某一个节点,ros2 topic表示话题相关的功能。

总结:ROS2 VS ROS1

  • 节点干掉了Master
  • 通信换成了DDS
  • 核心概念没变化
  • 编程难度有上升
ROS基础知识 阅读详情

相关推荐

【ROS2】MOMO的鱼香ROS2(三)ROS2入门篇——ROS2第一个节点

【ROS2】MOMO的鱼香ROS2(三)ROS2入门篇——ROS2第一个节点

qq_44703886的博客 3600

ROS2 学习(一)ROS2 简介与基本使用

ROS2 学习(一)ROS2 简介与基本使用

qq_42994487的博客 4万+

【ROS2】MOMO的鱼香ROS2(七)ROS2进阶篇——从驱动IMU开始后篇:ROS2发布

【ROS2】MOMO的鱼香ROS2(七)ROS2进阶篇——从驱动IMU开始后篇:ROS2发布

qq_44703886的博客 2365

ROS机器人操作系统——什么是ROS(一)

ROS机器人操作系统 文章目录ROS机器人操作系统前言一、ROS是什么?二、ROS的发展史三、ROS的特点总结 前言 大一下的时候接触过ROS,也只是单纯的知道这个东西,了解了一点皮毛,并没有系统的去学习。一年过去了,无人驾驶以及机器视觉还是更加吸引我,于是我打算重拾ROS,希望能在别人开源的基础上做到二次开发,实现我想要的功能。 一、ROS是什么? 随着机器人领域的快速发展和复杂化,代码的复用性和模块化的需求原来越强烈,而已有的开源机器人系统又不能很好的适应需求。2010年Willow Garage公司

戚晨夕的博客 4万+

ROS2入门21讲__第01讲__ROS/ROS2是什么

在上图中,我们可以看到PR2机器人已经可以完成叠毛巾、熨烫衣服、打台球、剪头发等一系列复杂的应用功能,以叠毛巾为例,这在当时是轰动机器人圈的重要研究,因为第一次有机器人可以完成柔性物体的处理,虽然效率很低,在100分钟之内只完成了5条毛巾的整理,但是在学术层面却推动机器人向前走了一大步。”的目标,促使社区快速发展和繁荣,时至今日,ROS已经广泛用于各种机器人的开发,无论是机械臂、移动机器人、水下机器人,还是人形机器人、复合机器人,统统都可以看到ROS的身影,ROS已经成为机器人领域的普遍标准。

sangyongqi的博客 1402

【ROS2】MOMO的鱼香ROS2(四)ROS2入门篇——ROS2节点通信之话题与服务

【ROS2】MOMO的鱼香ROS2(四)ROS2入门篇——ROS2节点通信之话题与服务

qq_44703886的博客 3270

1.2 ROS安装

1.2 ROS安装 我们使用的是 ROS 版本是 Noetic,那么可在ubuntu20.04、Mac 或 windows10 系统上安装,虽然一般用户平时使用的操作系统以windows居多,但是ROS之前的版本基本都不支持windows,所以当前我们选用的操作系统是 ubuntu,以方便向历史版本过渡。ubuntu安装常用方式有两种: 实体机安装 ubuntu (较为常用的是使用双系统,windows 与 ubuntu 并存); 虚拟机安装 ubuntu。 两种方式比较,各有优缺点: 方案1可以保证

赵虚左 807

【ROS2】MOMO的鱼香ROS2(五)ROS2入门篇——ROS2接口与自定义

【ROS2】MOMO的鱼香ROS2(四)ROS2入门篇——ROS2接口与自定义

qq_44703886的博客 4171

【ROS2】MOMO的鱼香ROS2(二)ROS2入门篇——ROS2初体验

【ROS2】MOMO的鱼香ROS2(二)ROS2入门篇——ROS2初体验

qq_44703886的博客 1万+

【ROS2】MOMO的鱼香ROS2(七)ROS2进阶篇——从驱动IMU开始前篇:串口数据读取

【ROS2】MOMO的鱼香ROS2(七)ROS2进阶篇——从驱动IMU开始前篇:串口数据读取

qq_44703886的博客 2705

【ROS2】MOMO的鱼香ROS2(六)ROS2入门篇——ROS2通信之参数与动作

ROS2通信之参数与动作

qq_44703886的博客 2097

ROS1到ROS2迁移教程(以rslidar_to_velodyne功能包为例)+ ROS2版本LIO-SAM试跑

ROS1到ROS2迁移教程(以rslidar_to_velodyne功能包为例)+ ROS2版本LIO-SAM试跑

lixushi的博客 1万+

【ROS2】MOMO的鱼香ROS2(一)ROS2入门篇——从Ubuntu操作系统开启

【ROS2】MOMO的鱼香ROS2(一)ROS2入门篇——从Ubuntu操作系统开启

qq_44703886的博客 3876

ROS2 基础知识学习笔记

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

Master_Zhang_的博客 5106

掌握ROS 2的利器——详解ros2 bag的使用方法

本文将带你深入了解ros2 bag的使用方法,助你轻松记录、回放和分析ROS 2话题中的数据。摘要:本文将详细介绍ROS 2中的命令行工具ros2 bag,帮助读者了解如何记录、回放和分析ROS 2话题中的数据,从而更好地进行机器人应用程序的开发。执行此命令后,ros2 bag将显示文件中的详细信息,包括话题列表、消息类型、开始和结束时间等。本文详细介绍了ROS 2中ros2 bag命令行工具的使用方法,包括记录、回放和分析话题数据。在使用ros2 bag记录数据时,我们需要指定要记录的话题名称。

scoone的博客 1866

ROS从入门到精通0-3:ROS简介、安装与常见问题

ROS是一个适用于机器人的开源的元操作系统,本文作为ROS入门的第一节,主要介绍为什么选择ROS,ROS如何安装以及一些安装过程的常见问题

FRIGIDWINTER的博客 5万+

【ROS2】我们为什么需要 ROS2?

我们需要 ROS2,就像我们需要从拨号上网升级到5G,从功能机升级到智能机。从ROS1到ROS2,并非简单的版本迭代,而是一次从理念到架构的彻底重生。

weixin_53696594的博客 1149

反激电源反馈环路设计:从TL431+PC817原理到动态补偿实战

本文深入解析了反激电源中由TL431和PC817构成的经典反馈环路设计。从静态工作点计算到动态补偿实战,详细阐述了如何通过Type II补偿网络优化环路稳定性与动态响应,并分享了应对光耦CTR离散性、布局噪声等常见调试难题的实用技巧,帮助工程师设计出高性能、高可靠的开关电源。

moon9的博客 677

ROS 2从入门到精通系列(一):什么是ROS2 - 核心概念和架构

ROS 2是新一代机器人操作系统框架,相比ROS 1在实时性、安全认证和跨平台支持等方面有显著改进。其核心架构包含节点(Node)、话题(Topic)、服务(Service)和动作(Action)四大通信机制,采用DDS中间件实现高效通信。ROS 2提供完整的工具链和算法库,支持LTS长期支持版本,适用于从开发到生产的全流程。系统采用分布式计算模型,通过状态机管理节点生命周期,为机器人软件开发提供了标准化、模块化的解决方案。

weixin_52694742的博客 5046

k8s配置habor作为镜像地址之后,如果harbor中没有镜像,如何设置自动从阿里云官方镜像仓库下载

通过 Harbor 的远端仓库可以集中管理。如果你在上游设置了 image prefix 为 library,那么对外访问 harbor.your-domain.com/library/nginx:latest 就会被 Harbor 去上游拉取 registry.cn-hangzhou.aliyuncs.com/library/nginx:latest 并缓存。- 将集群中的镜像地址改为 Harbor 的域名,比如 harbor.your-domain.com/library/nginx:latest。

极客栈 418

UE5实现建筑剖切效果

UE5实现建筑剖切效果

专注GIS开发 8455
下一篇: ROS2安装方法
十言_
博客等级 码龄6年 205粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值