购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.5 准备工作

在开始使用ROS并尝试本书的代码之前,应先做以下准备工作。

Ubuntu 20.04 LTS/Debian 10 :ROS支持Ubuntu和Debian操作系统。我们更喜欢坚持用Ubuntu的LTS(长期支持)版本,即Ubuntu 20.04。

ROS Noetic桌面完整安装 :安装ROS的完整桌面。我们更喜欢的版本是ROS Noetic,这是本书写作时最新的稳定版本。以下链接提供了该ROS发行版的安装说明:http://wiki.ros.org/noetic/Installation/Ubuntu。从存储库列表中选择ros-noetic-desktop-full功能包。

让我们看看ROS框架的不同版本。

1.5.1 ROS发行版

ROS更新与新的ROS发行版一起发布。ROS的新发行版由其核心软件的更新版本和一套新的/更新的ROS功能包组成。ROS的发布周期与Ubuntu Linux发行版相同:每6个月发布一个新版本。通常情况下,对于每个Ubuntu LTS版本,都会发布一个LTS版本的ROS。 LTS 意味着发布的软件将被长期维护(对于ROS和Ubuntu来说为5年)。

本书的教程基于写作时ROS的最新LTS版本,即ROS Noetic Ninjemys。它代表了第13个ROS发行版本。部分ROS发行版的列表如图1.9所示。

图1.9 部分ROS发行版

1.5.2 运行ROS节点管理器和ROS参数服务器

在运行任何ROS节点之前,我们应该启动ROS节点管理器和ROS参数服务器。我们可以使用一个名为roscore的命令启动ROS节点管理器和ROS参数服务器,该命令将启动以下程序:

●ROS节点管理器

●ROS参数服务器

●rosout日志记录节点

rosout节点将从其他ROS节点收集日志消息,并将其存储在日志文件中,还会把收集的日志消息转播到另一个主题。/rosout主题由ROS节点使用roscpp和rospy等ROS客户端库发布,这个主题由rosout节点订阅,该节点在另一个名为/rosout_agg的主题中转播这些消息。/rosout_agg主题包含日志消息的聚合流。roscore命令应作为运行任何ROS节点的先决条件运行。图1.10显示了在终端中运行roscore命令时打印的消息。

使用以下命令在Linux终端上运行roscore:

运行此命令后,我们将在Linux终端中看到如图1.10所示的文本。

图1.10 运行roscore命令时的终端消息

以下是图中各部分的说明。

●在第1部分中,我们可以看到~/.ros/log文件夹中创建了一个日志文件,用于从ROS节点收集日志。此文件可用于调试。

●在第2部分中,该命令启动了一个名为roscore.xml的ROS启动文件。这个文件启动时,它会自动启动rosmaster和ROS参数服务器。roslaunch命令是一个Python脚本,只要它尝试执行启动文件,它就会启动rosmaster和ROS参数服务器。本部分还显示了端口内ROS参数服务器的地址。

●在第3部分中,我们可以看到rosdistro和rosversion等参数在终端中显示。这些参数在执行roscore.xml时就会显示出来。我们会在1.5.3节详细介绍roscore.xml。

●在第4部分中,我们可以看到rosmaster节点是用ROS_MASTER_URI启动的,之前我们将其定义为一个环境变量。

●在第5部分中,我们可以看到rosout节点正在启动,它将开始订阅/rosout主题并将其转播到/rosout_agg。

以下是roscore.xml的内容:

在执行roscore命令时,一开始,该命令会检查命令行参数,以获取rosmaster的新端口号。如果它得到了端口号,它就将开始监听新的端口号;否则,它将使用默认端口号。这个端口号和roscore.xml启动文件将被传递到roslaunch系统。roslaunch系统在Python模块中实现,它将解析端口号并启动roscore.xml文件。

在roscore.xml文件中,ROS参数和节点被封装在一个带有/namespace的组XML标记中。组XML标记表示此标记中的所有节点都具有相同的设置。

rosversion和rosdistro参数使用命令(command)标签存储rosversionroslaunch和rosversion-d命令的输出,命令标签是ROS param标签的一部分。command标签将执行其中提到的命令,并将命令的输出存储在这两个参数中。

rosmaster和参数服务器通过ROS_MASTER_URI地址在roslaunch模块内执行。这发生在roslaunch Python模块内部。ROS_MASTER_URI是rosmaster将要监听的IP地址和端口的组合。端口号可以根据roscore命令中给定的端口号进行更改。

1.5.3 检查roscore命令的输出

我们来看看运行roscore后创建的ROS主题和ROS参数。以下命令将列出终端中的活动主题:

根据我们对rosout节点的订阅/rosout主题的讨论,主题列表如下。它包含来自ROS节点的所有日志消息,/rosout_agg将转播这些日志消息:

以下命令列出了运行roscore时可用的参数:

这里提到的这些参数可以提供ROS发行版的名称、版本、roslaunch服务器地址和run_id,其中run_id是一个与特定roscore运行相关联的唯一ID:

运行roscore时生成的ROS服务列表可以使用以下命令进行检查:

正在运行的服务列表如下所示:

这些ROS服务是为每个ROS节点生成的,用于设置日志记录级别。 E4tlheU2G8ZcQUoxq4M0SlBuMgb6E13dtOgD4Ixb1aPXkaMxtmExi9+zEx+Zi/0u

点击中间区域
呼出菜单
上一章
目录
下一章
×