当前位置: 首页 > news >正文

ROS 2入门 - 机器人操作系统ROS2的安装

ROS 2入门 - 机器人操作系统ROS2的安装

陈拓 2024/12/11-2024/12/11

1. ROS概述

ROS官网:https://www.ros.org/

机器人操作系统Robot Operating System (ROS)是一套开源的软件库和工具,可帮助你构建机器人应用程序。从驱动程序到最先进的算法,再到强大的开发人员工具,ROS可满足你下一个机器人项目的所有需求。

1.1 ROS版本

ROS有多个大版本和小版本。以下是主要的ROS版本信息:

  • ROS 1

ROS 1是ROS的第一个主要版本系列,包含多个发行版。主要的发行版包括:

  - ROS 1.0 (C Turtle)

  - ROS 1.1 (Diamondback)

  - ROS 1.2 (Electric Emys)

  - ROS 1.3 (Fuerte)

  - ROS 1.4 (Groovy)

  - ROS 1.5 (Hydro)

  - ROS 1.6 (Indigo)

  - ROS 1.7 (Jade)

  - ROS 1.8 (Kinetic)

  - ROS 1.9 (Lunar)

  - ROS 1.10 (Melodic)

  - ROS 1.11 (Noetic)

  • ROS 2

ROS 2是ROS的第二个主要版本系列,旨在提供更好的实时性、跨平台支持和安全性。主要的发行版包括:

  - ROS 2.0 (Ardent Apalone)

  - ROS 2.1 (Bouncy Bolson)

  - ROS 2.2 (Crystal Clemmys)

  - ROS 2.3 (Dashing Diademata)

  - ROS 2.4 (Eloquent Elusor)

  - ROS 2.5 (Foxy Fitzroy)

  - ROS 2.6 (Galactic Geochelone)

  - ROS 2.7 (Humble Hawksbill)

  - ROS 2.8 (Iron Irwini)

小版本更新通常用于修复bug、添加小功能或进行性能改进。这些小版本通常不会改变API或引入不兼容的更改。

  • 版本命名

ROS 1和ROS 2的版本命名通常使用动物名称,且每个版本的名称都是按字母顺序排列的。

  • 版本支持

ROS 1的最后一个版本是Noetic,计划在2025年停止支持。

ROS 2的每个版本都有不同的支持周期,通常是每个版本支持大约一年半到两年。

ROS的版本管理相对清晰,用户可以根据自己的需求选择合适的版本进行开发和部署。对于新项目,推荐使用ROS 2,因为它是未来的发展方向,提供了更好的功能和支持。

1.2 ROS1和 ROS 2的主要区别

1.2.1 通信机制

ROS 1:基于 TCPROS 和 UDPROS 进行节点间通信,主要依赖于中心式的主节点(master)进行节点的注册和发现。

ROS 2:使用基于 DDS(Data Distribution Service)的通信中间件,实现了去中心化的通信架构,节点可以直接发现和通信,提高了系统的可靠性和可扩展性。

1.2.2 实时性

ROS 1:在实时性方面有一定的局限性,虽然可以通过一些实时扩展来改善,但实现较为复杂。

ROS 2:从设计上考虑了实时性要求,支持硬实时和软实时应用,可以更好地满足机器人等对实时性要求较高的场景。

1.2.3 编程语言支持

ROS 1:主要使用 C++和 Python 进行开发。

ROS 2:除了 C++和 Python 外,还增加了对其他编程语言的更好支持,如 C 和 Java 等,使得开发者可以根据自己的需求选择更合适的编程语言。

1.3 当前官方推荐的ROS2版本

ROS以发行版(也称为distros)的形式发布,一次支持多个ROS发行版。一些发行版提供长期支持(LTS),这意味着它们更稳定并且经过了广泛的测试。其他发行版较新,生命周期较短,但支持较新的平台及其组成ROS包的较新版本。有关更多详细信息,请参阅发行版列表。通常,每年的世界海龟日(5月23日)都会发布一个新的 ROS 发行版,而LTS发行版则会在偶数年发布。

Ros2有foxy、Galactic、Humble Hawksbil与Iron Irwini多个版本。

‌其中Humble Hawksbill‌发布于2022年11月18日,是一个LTS版本,支持时间为5年。Humble更加稳定且易于维护,包括许多新的质量等级1的软件包,以及对不同平台和体系结构的改进。它还改进了安全性,引入了对DDS安全插件的支持。支持Ubuntu 22.04 (Jammy Jellyfish)、macOS 12 (Monterey)和Windows 11‌。

我们安装Humble Hawksbill。

官方Humble安装文档

https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debs.html

1.4 Tier层级和系统要求

https://www.ros.org/reps/rep-2000.html

  • Tier层级与操作系统的对应关系

Humble Hawksbill目前基于Debian的目标平台是:

Tier 1: Ubuntu Linux - Jammy (22.04) 64-bit

Tier 3: Ubuntu Linux - Focal (20.04) 64-bit

Debian Linux - Bullseye (11) 64-bit

在ROS社区中,Tier 1和Tier 3通常指的是支持和维护的不同级别,这主要适用于ROS的软件包和工具。这些级别帮助用户了解哪些软件包得到了积极的支持和维护,以及它们在不同ROS发行版中的可用性。以下是这些级别的官方定义:

Tier 1:平台会频繁接受我们的单元测试套件和其他测试工具的测试,包括持续集成作业、夜间作业、打包作业和性能测试。开发团队会优先修复这些平台中发现的错误或缺陷。Tier 1 平台中发现的重大错误可能会影响发布日期,我们会努力在新版本发布之前解决 Tier 1 平台中所有已知的高优先级错误。

Tier 2:平台需要定期进行 CI 测试,该测试会同时运行构建和测试,并公开结果。预计 CI 将在 ROS 发行版当前状态发生相关变化后至少一周内运行。可能不会提供软件包级别的二进制软件包,但鼓励提供已构建工作区的可下载存档。Tier 2 平台的已发布产品版本中可能存在错误。Tier 2 平台中的已知错误将根据资源可用性尽最大努力解决,并且可能会也可能不会在新版本发布之前得到纠正。一个或多个实体应承诺继续支持该平台。

Tier 3: 3 层平台是指社区报告表明版本功能正常的平台。开发团队不会在第 3 层平台上运行单元测试套件或执行任何其他测试。平台必须提供最新安装说明才能列入此类别。社区成员可以为这些平台提供帮助。

  • 查看我的系统架构和版本

lsb_release -a

符合Tier 1。

1.5 Ubuntu升级

以Tier 1安装ROS2要求Ubuntu22.04。如果你的系统版本目前是Ubuntu20.4,可以参考《ssh远程升级Ubuntu20.04到Ubuntu 22.04》

https://blog.csdn.net/chentuo2000/article/details/144306625?spm=1001.2014.3001.5502

一文进行升级。

2. 安装ROS2

以下步骤参考官方文档:https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debs.html

2.1 通过SSH操作Linux服务器

参考《Win10命令窗口的SSH和SFTP操作》

https://blog.csdn.net/chentuo2000/article/details/119918637?spm=1001.2014.3001.5502

2.2 设置区域

确保您的语言环境支持UTF-8。

locale  # check for UTF-8

2.3 设置源

在安装ROS2之前,你首先需要将ROS2 apt存储库添加到你的系统。

默认的Ubuntu apt存储库中不包含ROS 2的软件包,因为ROS 2并不是Ubuntu官方维护的软件,而是作为一个独立的项目由社区维护。为了安装ROS 2,你需要添加专门的ROS 2 apt存储库到你的系统中,这样apt包管理器才能够访问并安装ROS 2的软件包。

2.3.1 确保Ubuntu Universe存储库已启用

Ubuntu分布在不同的存储库中,四个主要存储库是:

  1. Main - Canonical 支持的免费开源软件。
  2. Universe - 社区维护的免费开源软件。
  3. Restricted - 设备的专有驱动程序。
  4. Multiverse - 受版权或法律问题限制的软件。

我们需要启用Universe存储库。

  • 首先安装software-properties-common软件包

这个包提供了一些用于管理软件源和处理软件包依赖的工具和功能。具体来说,它包含以下几个主要组件:

add-apt-repository:这是一个命令行工具,用于添加新的软件源(repository)到你的系统。这在你想要安装一些不在默认软件源中的软件包时非常有用。

python3-software-properties:这个包提供了Python 3的软件属性模块,它用于编写与软件包和软件源相关的脚本。

software-properties-gtk:这是一个图形界面工具,用于管理软件源和安装第三方软件。

安装software-properties-common包后,你可以使用add-apt-repository命令来添加PPA(Personal Package Archives)或其他软件源,这通常用于安装最新版本的软件或测试新功能。这个包是管理Ubuntu软件源的一个基础工具,对于想要扩展系统软件库的用户来说非常有用。

sudo apt install software-properties-common

检查安装情况:

sudo apt policy software-properties-common

  • 在终端中运行以下命令来启用Universe存储库

sudo add-apt-repository universe

执行完上述命令后,你需要更新软件包列表以通知Ubuntu新的软件源:

sudo apt-get update

这样,Universe存储库就会被添加并启用。你可以通过运行以下命令来验证Universe存储库是否已经启用:

apt-cache search universe

如果命令能够顺利执行并列出属于Universe存储库的软件包,那么表示Universe存储库已经成功启用。

2.3.2 使用apt添加ROS2 GPG密钥

安装ROS2之前添加ROS2 GPG密钥的主要目的是为了验证安装的真实性和安全性。GPG(GNU Privacy Guard)密钥用于确保你从ROS2存储库安装的软件包是经过官方认证的,没有被篡改或受到恶意软件的侵害。当你添加ROS2的GPG密钥到系统中时,这个密钥会用来验证后续从ROS2存储库下载的软件包的签名。这样,只有当软件包的签名与密钥匹配时,系统才会认为这个软件包是安全的,可以进行安装。这个过程是保障软件来源可靠性和防止潜在安全威胁的重要步骤。

  • 安装curl

curl 是一个利用 URL 语法在命令行方式下工作的文件传输工具。它支持多种协议,包括 HTTP、HTTPS、FTP、FTPS、SFTP、SCP、TFTP、DICT、TELNET、LDAP、LDAPS、FILE 等。curl 能够用于数据上传和下载,以及与服务器进行交互。

sudo apt update

sudo apt install curl -y

sudo apt policy curl

  • 通过curl下载ROS官方GPG密钥

sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/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] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

2.4 安装ROS2软件包

  • 设置存储库后,更新您的 apt 存储库缓存

sudo apt update

  • ROS 2 软件包是在经常更新的 Ubuntu 系统上构建的。始终建议您在安装新软件包之前确保系统是最新的

sudo apt upgrade

  • 安装ROS2 humble

桌面安装(推荐):ROS、RViz、演示、教程。

sudo apt install ros-humble-desktop

ROS-Base 安装(基本配置):通信库、消息包、命令行工具。无 GUI 工具。

sudo apt install ros-humble-ros-base

开发工具:编译器和其他用于构建 ROS 包的工具

sudo apt install ros-dev-tools

我们安装一个更全面的包,桌面完整版ros-humble-desktop-full。

这个软件包是一个更全面的桌面安装包,它包含了ros-humble-desktop中的所有内容,以及额外的软件包和工具,如更完整的工具集和示例代码。

包含ROS、rqt、rviz、机器人通用库、2D/3D 模拟器、导航以及2D/3D感知。

它适用于需要全面开发环境和更多示例的开发者。

安装命令:

sudo apt install ros-humble-desktop-full

2.5 环境设置

source /opt/ros/humble/setup.bash

以后每次打开一个新的终端窗口运行ros2之前都要运行这个命令来设置环境。如果你不想每次打开新shell时都要设置环境,那么你可以用以下命令添加环境设置到shell启动脚本~/.bashrc中:

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

环境设置好之后可以用下面的命令检查环境变量:

printenv | grep -i ROS

或者

printenv | grep ROS

2.6 尝试一些示例

Talker-listener说话者-倾听者。

2.6.1 listener
  • 打开一个终端
  • 设置环境

source /opt/ros/humble/setup.bash

  • ​​Python listener

ros2 run demo_nodes_py listener

听者开始侦听。

2.6.2 Talker
  • 打开一个终端
  • 设置环境

source /opt/ros/humble/setup.bash

  • 运行 ​​C++ talker

ros2 run demo_nodes_cpp talker

说者开始发布消息。

听者收到消息:

你可以看到talker说我正在Publishing消息,listener说我听到I heard这些消息了。这可验证C++和Python API均正常运行。太棒了!


http://www.mrgr.cn/news/91886.html

相关文章:

  • Blender小技巧和注意事项
  • 【拜读】Tensor Product Attention Is All You Need姚期智团队开源TPA兼容RoPE位置编码
  • 单元测试整理
  • QT基础八、与时间相关的UI控件
  • DeepSeek掘金——SpringBoot 调用 DeepSeek API 快速实现应用开发
  • PrimeTime:工具简介
  • 华为昇腾910b服务器部署DeepSeek翻车现场
  • nodejs npm install、npm run dev运行的坎坷之路
  • 【AI学习】AI大模型新时代,怎样更好地熟练地使用指令工具?
  • python的if判断和循环语句(while循环和for循环)
  • 【练习】【回溯:组合:不同集合】力扣 17. 电话号码的字母组合
  • 【Java学习】多态
  • GCC编译器(含预处理/编译/汇编/链接四阶段详解)
  • 算法题(74):Pow(x,n)
  • 一文说清楚编码、摘要、加密、公钥、私钥、解密、签名、验签
  • 对免认证服务提供apikey验证
  • 大数据学习之任务流调度系统Azkaban、Superset可视化系统
  • Powershell Install deepseek
  • 【Kubernets】Kubernets资源类型Deployment详细介绍
  • DeepSeek vs ChatGPT:AI 领域的华山论剑,谁主沉浮?