ROS2从入门到精通0-2:ROS2简介、对比ROS1与详细安装流程_ros ros2

本文介绍了机器人操作系统ROS2,包括其发展历程、与ROS1的区别(如跨平台支持、DDS架构、API升级等)、以及ROS2的安装过程,重点突出了ROS2在现代机器人应用中的优势和适应性。
摘要由CSDN通过智能技术生成

0 专栏介绍

本专栏旨在通过对ROS2的系统学习,掌握ROS2底层基本分布式原理,并具有机器人建模和应用ROS2进行实际项目的开发和调试的工程能力。

🚀详情:《ROS2从入门到精通》


1 什么是机器人操作系统?

**ROS(Robot Operating System)**是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括

  • 硬件抽象
  • 底层设备控制
  • 常用函数的实现
  • 进程间消息传递
  • 包管理
  • 用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数

在这里插入图片描述

ROS 的主要目标是为机器人研究和开发提供代码复用的支持。简单来说就是避免重复造轮子。

在这里插入图片描述
为什么ROS可以提高代码复用率?

因为ROS有程序包功能包概念,类比与C++python的库的概念,这些包易于被分享和发布,而且ROS也支持一种类似于代码储存库的联合系统,这个系统也可以实现工程的协作及发布。这个设计可以使一个工程的开发和实现完全模块化,同时,所有的工程都可以被ROS的基础工具整合在一起。

在这里插入图片描述

除此之外,ROS还有以下优势:

  • 精简:ROS被设计为尽可能精简,易于与其他机器人软件框架集成
  • 语言独立性:为了支持更多应用开发和移植,ROS设计为一种语言弱相关的框架结构,中立的定义语言描述模块间的消息接口,JavaC++Python都可以进行ROS开发。
  • 大型应用:ROS适用于大型运行时系统和大型开发流程
  • 丰富的组件化工具包:ROS可采用组件化方式集成一些工具和软件到系统中并作为一个组件直接使用,如RVIZGazebo等,后面都会介绍。
  • 免费且开源:开发者众多,功能包多

这里再收藏几个重要的ROS全球社区网站:

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

2 ROS的发展历程

ROS是一个由来已久、贡献者众多的大型软件项目

在ROS诞生之前,很多学者认为,机器人研究需要一个开放式的协作框架,并且已经有不少类似的项目致力于实现这样的框架。

2007年,**柳树车库(Willow Garage)**提供了大量资源,用于将斯坦福大学机器人项目中的软件系统进行扩展与完善,同时,在无数研究人员的共同努力下,ROS的核心思想和基本软件包逐渐得到完善。

ROS的发行版本指ROS软件包的版本,其与Linux的发行版本(如Ubuntu)的概念类似。推出ROS发行版本的目的在于使开发人员可以使用相对稳定的代码库,直到其准备好将所有内容进行版本升级为止。因此,每个发行版本推出后,ROS开发者通常仅对这一版本的bug进行修复,同时提供少量针对核心软件包的改进。

在这里插入图片描述

随着ROS被越来越多机器人使用,受限于当初设计的局限性,ROS的问题也逐渐暴露。为了能够真正设计一款适用于所有机器人的操作系统,ROS2在2017年底正式发布,历经多年迭代,我们终于在2022年5月底,迎来了ROS2第一个长期支持版——ROS2 Humble,ROS2已经成熟,我们也进入了一个全新的ROS2时代。

3 ROS2与ROS1的区别

在这里插入图片描述

随着ROS的普及,应用ROS的机器人类型已经和最初那款PR2家庭机器人有了天壤之别,那原本针对PR2设计的软件框架,就会出现一些问题,比如:

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

在这里插入图片描述

与ROS1相比,ROS2针对当今机器人应用需求,引入了非常多现代化的特性:

  • 操作系统支持:ROS1仅支持Linux系统,而ROS2支持Linux、Windows、MacOS和实时操作系统RTOS,ROS2的跨平台和可移植特性为构建复杂机器人系统提供了基础
  • 系统架构。ROS2采用基于DDS的分布式架构,取消了ROS1中的Master节点,节点之间通过DDS进行通信,因而支持更灵活的通信机制,如实时数据流和快速通信,具体什么是DDS架构?请参考ROS2从入门到精通1-2:图解ROS2的DDS通信机制
  • 产品化:ROS2不仅可以用于机器人研发阶段,还可以直接搭载在产品中,走向消费市场,这对ROS2的稳定性、强壮性也提除了巨大挑战
  • 安全性:ROS2引入了更多的安全机制,可以对通信进行加密和认证。
  • API升级:ROS1原有的接口已经无法满足需求,ROS2结合C++最新标准和Python3语言特性,设计了更具通用性的API,虽然导致原有ROS1的代码无法直接在ROS2中运行,但是尽量保留了类似的使用方法,同时提供了大量移植的说明
  • 编译系统:ROS1中使用的rosbuildcatkin问题诸多,尤其是针对代码较多的大项目以及Python编写的项目,编译、链接经常会出错,ROS2对这些问题也进行了优化,重新优化后的编译系统叫做amentcolcon,它是catkin编译系统进一步演化的版本。

4 ROS2安装

4.1 基本安装

ROS2安装步骤如下所示:

  • 设置编码
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC\_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

  • 添加软件源,这里为了避免无法访问https://raw.githubusercontent.com带来的一系列问题,采用清华源的ROS2库
sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://mirrors.tuna.tsinghua.edu.cn/rosdistro/ros.key  -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

  • 更新源
sudo apt update
sudo apt upgrade

  • 安装ROS2


**Java面试核心知识点笔记**

其中囊括了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。

![蚂蚁金服(Java研发岗),26岁小伙斩获三面,收获Offer定级P6](https://img-blog.csdnimg.cn/img_convert/48e0bd6164d6587bb5cc3aec778b9016.webp?x-oss-process=image/format,png)

**Java中高级面试高频考点整理**

![蚂蚁金服(Java研发岗),26岁小伙斩获三面,收获Offer定级P6](https://img-blog.csdnimg.cn/img_convert/7809b1f74b25c20cafad658b74b0188a.webp?x-oss-process=image/format,png)

![蚂蚁金服(Java研发岗),26岁小伙斩获三面,收获Offer定级P6](https://img-blog.csdnimg.cn/img_convert/25d7bdbe751eb6c1edc797a1d81bff27.webp?x-oss-process=image/format,png)

**最后分享Java进阶学习及面试必备的视频教学**

![蚂蚁金服(Java研发岗),26岁小伙斩获三面,收获Offer定级P6](https://img-blog.csdnimg.cn/img_convert/f65cba8c2e1627d141a7f4b3cc110efb.webp?x-oss-process=image/format,png)


9)]

**Java中高级面试高频考点整理**

[外链图片转存中...(img-PVYw86gC-1714146081630)]

[外链图片转存中...(img-k7mrczDd-1714146081631)]

**最后分享Java进阶学习及面试必备的视频教学**

[外链图片转存中...(img-uFGBDOzO-1714146081631)]


> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**
  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值