ROS 启动

本章介绍了学习和获取 ROS 帮助的途径,以及如何通过设置和安装 ROS 来开始使用。

资源

有关 ROS 的最新信息可以在网络上找到。网上有大量资源可帮助您完成学习或实践之旅。需要记住的一点是,ROS 与大多数软件一样,有不同的版本,并且命令和 API 调用的格式和结构可能因版本而异(尽管开发人员试图保持尽可能稳定)。本书专门为 ROS 2、Eloquent Elusor 或 ROS Eloquent 编写,以简洁起见。

虽然 ROS 2 的新版本或旧版本通常相似,但值得注意的是发行版名称或版本号,因为版本之间存在变化。ROS 2 的主要版本通常对应于一个发行版,由一对匹配的字母形容词和与特定属和物种的海龟相关的特定名词表示(例如 Eloquent Elusor 或 Foxy Fitzroy)。值得注意的是,ROS 版本通常与 Ubuntu Linux 的特定版本挂钩。

ROS 伴随着现代网络而成长,因此它拥有各种资源和论坛,可帮助您解决问题并了解 API 和工具。我们的一些网络资源实际上早于更广泛使用的系统,因此了解它们的位置和使用方法会很有帮助。对于 ROS 用户来说,网络上最重要的资源可能是 answers.ros.org. Answers 是一个类似于 StackOverflow 的问答网站。注册 Answers 后,您可以提出或回答任何与 ROS 相关的问题。请注意,提出好问题可能很困难。您应该包含尽可能多的信息,以帮助其他人回答您的问题。这意味着您应该包含 ROS 版本、平台版本、您拥有的任何调试或堆栈跟踪信息以及有问题的源代码。

除了 ROS Answers 之外,您还应该查看 ROS 2 教程和 API 文档以及 ROS 1 wiki。ROS 1 wiki 可在以下网址找到 wiki.ros.org. 虽然它专门针对 ROS 1,但其中许多信息仍然与 ROS 2 相关。如果您正在搜索最新的 ROS 2 信息,您可以访问以下来源的 ROS 2 教程和 API 文档: index.ros.org/doc/ros2. 本书中的许多教程都直接取自此作品。如果您想了解最新的 ROS 新闻并讨论各种 ROS 功能,请访问 ROS Discourse 论坛 discourse.ros.org 是您的最佳选择。ROS discourse 是社区中心,开发人员可以在此讨论他们的最新项目 并讨论 ROS 开发的细节。

对于 ROS 应用程序开发人员,有许多工具可帮助您与更广泛的 ROS 开发人员社区建立联系。Open Robotics 支持 index.ros.org, 这是按版本排序的 ROS 软件包的扩展列表。如果您正在搜索特定硬件的 ROS 驱动程序,那么索引是一个很好的起点。如果您发现测试失败的软件包,或者想要了解任何 ROS 软件包的构建状态,请查看 build.ros.org. 同样,对于未编入索引的包 GitHub maintains a ROS code tag. 此标签将允许您搜索所有公开列出的标记存储库。 在撰写本文时,GitHub 上列出了近 4000 个存储库,因此您很有可能找到所需的内容。

最后,您应该了解各种非官方资源,它们可能很有用,特别是如果您想随时了解最新的 ROS 项目和功能。 Open Robotics and ROS 维护 Twitter 信息流以分享最新 新闻。我们每年还会举办一次 ROS 开发者大会,名为 ROSCon; 大多数讲座都可以在网上免费获取。还有一些其他资源也很有用,包括 ROS subreddit 以及“非官方” ROS Discord.

设置你的计算机

在本章中,我们假设您正在使用具有独立显卡的现代台式机。虽然本章不需要显卡,但后面的章节将涉及大量图形,拥有一张显卡将大大改善最终用户体验。此外,本书假设您正在使用 Ubuntu Linux 18.04 操作系统。虽然 ROS 2 支持其他操作系统,但本书中的所有教程和说明都假设您正在运行 Linux。如果您使用的是 Mac 或 Windows PC,则可以使用 ROS 2 installation instructions 页面。在 Mac 和 PC 上安装的另一种方法是使用虚拟机。大致过程如下:

  1. 安装虚拟机软件如 Virtual Box or VMWare 在您的主机上。
  2. 使用软件创建虚拟机并安装 Desktop Ubuntu 18.04 Bionic Beaver from the Canonical website. 按照您的意愿配置安装。
  3. 现在启动虚拟机并以用户身份登录。以下说明应该适用。

对于这些初始教程,我们将使用预编译的 ROS 2: Eloquent Elusor 桌面版。这些说明直接来自 安装说明,可在 [Eloquent installation page]https://index.ros.org/doc/ros2/Installation/Eloquent/Linux-Install-Debians/). 要运行这些命令,您需要一个终端窗口。要在 Ubuntu 18.04 中打开终端,请单击屏幕左下角的九个点。应该会出现一个对话框。输入单词 terminal 并单击终端图标以打开终端。或者,您可以同时按下 control、alt 和 't' 键来打开终端 (we abbreviate this CTRL-ALT-T).

设置区域设置

第一步是确保你有一个支持 UTF-8. 这意味着我们将检查您计算机使用的语言是否使用特定的文本格式。如果您处于最小环境(例如 Docker 容器),则语言环境可能为 POSIX 等最小语言环境。我们使用以下设置进行测试。如果您使用其他支持 UTF-8 的语言环境,则应该没问题。

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

设置源

您需要将 ROS 2 apt 存储库添加到您的系统中。开箱即用的 Ubuntu 不知道 ROS 2 二进制程序位于何处,因此我们必须为其提供一个 安全的位置。为此,计算机将提示您输入 root 密码。对于更多技术读者,我们需要通过在终端中输入以下命令来使用 apt 授权 ROS GPG 密钥:

sudo apt update && sudo apt install curl gnupg2 lsb-release
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

安装 ROS 2 软件包

安装 ROS 的下一步是进行系统更新(即检查是否有较新的程序),然后安装 ROS Eloquent。为此,我们运行以下命令。请注意,这些命令将下载大量数据,可能需要一段时间。最好在您的家庭网络上运行这些命令。

sudo apt update

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

sudo apt install ros-eloquent-desktop

接下来我们将安装一组名为 TurtleSim. 为此,我们运行 另一个 apt 命令。

sudo apt install ros-eloquent-turtlesim

ROS 2 命令行工具使用 argcomplete 进行自动完成。如果您想要自动完成,则必须安装 argcomplete。我们还将安装一些其他工具,以使我们的生活更轻松。

sudo apt install python3-argcomplete htop byobu

检查您的安装

ROS 使用环境变量来帮助跟踪正在运行的 ROS 版本以及计算机上使用 ROS 的所有程序的位置。要设置这些环境变量,我们需要source或加载一个 bash 脚本文件。bash 脚本文件并不神奇;它是一系列输入到终端的命令,就像我们刚刚输入的用于设置 ROS 的一系列命令一样。一台计算机上可以运行不同版本的 ROS。使用错误版本的 ROS 会导致各种问题,这是新用户常犯的错误!如果您遇到问题,请尝试获取正确的 ROS bash 文件。从现在开始,每当您打开新终端时,您都需要告诉计算机要使用哪个版本的 ROS。要为 ROS 设置必要的环境变量,您需要在每次打开新终端时source一个 bash 文件。是的,这很烦人,但这是一种合理的方法,因为它 使你正在使用的 ROS 版本明确。在 Ubuntu 18.04 上,所有版本的 ROS 都位于 /opt/ros/ 中。此目录中将有一个用于运行 ROS 的程序和脚本 文件。要告诉操作系统我们想要使用 ROS Eloquent 我们只需使用以下命令获取 ROS Eloquent setup.bash 文件:

source /opt/ros/eloquent/setup.bash

一旦该命令运行,您的终端就应该准备好运行 ROS 程序了。让我们通过运行两个名为talkerlistener的小型 ROS 程序来测试我们的安装。这两个程序将使用 ROS 来回发送数据以执行通信。一个程序是用 C++ 编写的,另一个是用 Python 编写的。运行这两个不同的程序是一种快速简便的方法来检查您的 ROS 系统是否配置正确。要启动 talker,请运行以下命令:

source /opt/ros/eloquent/setup.bash
ros2 run demo_nodes_cpp talker

如果一切正常,您应该会看到类似下面的内容:

[INFO] [talker]: Publishing: 'Hello World: 1'
[INFO] [talker]: Publishing: 'Hello World: 2'
[INFO] [talker]: Publishing: 'Hello World: 3'
....

现在,让我们启动监听器。我们将在此示例中使用 Python 监听器,以确保我们正确安装了 Python。首先,我们需要第二个终端。我们可以在终端中输入 CTRL-SHIFT-T 打开一个新的终端选项卡。我们还可以通过按 CTRL-ALT-T 创建一个全新的终端。选择最适合您的方式。现在,在新终端中输入您的 bash 文件并运行以下命令:

source /opt/ros/eloquent/setup.bash
ros2 run demo_nodes_py listener

如果一切正常,您应该会看到类似下面的内容:

[INFO] [listener]: I heard: [Hello World: 264]
[INFO] [listener]: I heard: [Hello World: 265]
[INFO] [listener]: I heard: [Hello World: 266]

现在我们已经测试了我们的 ROS 安装,我们可以停止这两个程序了。在 ROS 中,大多数程序都会无限循环运行,直到机器人关闭。要停止这些程序,我们导航到运行程序的终端,然后同时按下 CtrlC 键。我们称此组合为 CTRL-C,您可以使用它来停止终端中的几乎任何程序。使用它来停止 talker 和 listener 程序。