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

2024-03-11 12:28

本文主要是介绍ROS2从入门到精通0-2:ROS2简介、对比ROS1与详细安装流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 0 专栏介绍
  • 1 什么是机器人操作系统?
  • 2 ROS的发展历程
  • 3 ROS2与ROS1的区别
  • 4 ROS2安装
    • 4.1 基本安装
    • 4.2 测试ROS2
      • 4.2.1 测试一:发布者与订阅者
      • 4.2.2 测试二:海龟仿真器
  • 5 常见问题

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

    sudo apt install ros-humble-desktop
    
  • 设置环境变量

    echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc 
    source ~/.bashrc
    

4.2 测试ROS2

4.2.1 测试一:发布者与订阅者

在终端A中启动发布者

ros2 run demo_nodes_cpp talker

在终端B中启动订阅者

ros2 run demo_nodes_cpp listener

如下所示,若节点间正常通信则说明测试通过

在这里插入图片描述

4.2.2 测试二:海龟仿真器

接着进行经典的海龟测试,启动两个终端,分别运行如下指令:

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

将鼠标聚焦在第操作终端窗口上,然后通过键盘上的方向键,操作小海龟移动,并在屏幕上留下轨迹

在这里插入图片描述
至此表明ROS基本安装、配置成功。

5 常见问题

  1. 添加ROS2源时出现curl: (7) Failed to connect to raw.githubusercontent.com port 443 after 16 ms: Connection refused

    解决方案: 这个问题是因为国内用户无法正常连接raw.githubusercontent.com导致,采用国内清华源可以解决

    sudo curl -sSL https://mirrors.tuna.tsinghua.edu.cn/rosdistro/ros.key  -o /usr/share/keyrings/ros-archive-keyring.gpg
    

🔥 更多精彩专栏

  • 《ROS从入门到精通》
  • 《Pytorch深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

这篇关于ROS2从入门到精通0-2:ROS2简介、对比ROS1与详细安装流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/797801

相关文章

Macos创建python虚拟环境的详细步骤教学

《Macos创建python虚拟环境的详细步骤教学》在macOS上创建Python虚拟环境主要通过Python内置的venv模块实现,也可使用第三方工具如virtualenv,下面小编来和大家简单聊聊... 目录一、使用 python 内置 venv 模块(推荐)二、使用 virtualenv(兼容旧版 P

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

Redis指南及6.2.x版本安装过程

《Redis指南及6.2.x版本安装过程》Redis是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSIC语言编写、支持网络、... 目录概述Redis特点Redis应用场景缓存缓存分布式会话分布式锁社交网络最新列表Redis各版本介绍旧

Linux下安装Anaconda3全过程

《Linux下安装Anaconda3全过程》:本文主要介绍Linux下安装Anaconda3全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录简介环境下载安装一、找到下载好的文件名为Anaconda3-2018.12-linux-x86_64的安装包二、或者通

MySQL 安装配置超完整教程

《MySQL安装配置超完整教程》MySQL是一款广泛使用的开源关系型数据库管理系统(RDBMS),由瑞典MySQLAB公司开发,目前属于Oracle公司旗下产品,:本文主要介绍MySQL安装配置... 目录一、mysql 简介二、下载 MySQL三、安装 MySQL四、配置环境变量五、配置 MySQL5.1

Mybatis Plus JSqlParser解析sql语句及JSqlParser安装步骤

《MybatisPlusJSqlParser解析sql语句及JSqlParser安装步骤》JSqlParser是一个用于解析SQL语句的Java库,它可以将SQL语句解析为一个Java对象树,允许... 目录【一】jsqlParser 是什么【二】JSqlParser 的安装步骤【三】使用场景【1】sql语

Python实现一键PDF转Word(附完整代码及详细步骤)

《Python实现一键PDF转Word(附完整代码及详细步骤)》pdf2docx是一个基于Python的第三方库,专门用于将PDF文件转换为可编辑的Word文档,下面我们就来看看如何通过pdf2doc... 目录引言:为什么需要PDF转Word一、pdf2docx介绍1. pdf2docx 是什么2. by