《精通ROS机器人编程(原书第2版) 》 —1.7 学习ROS需要做哪些准备

举报
华章计算机 发表于 2020/02/10 14:18:56 2020/02/10
【摘要】 本节书摘来自华章计算机《精通ROS机器人编程(原书第2版) 》 一书中第1章,第1.7节,作者是[印度]郎坦·约瑟夫(Lentin Joseph)[意大利]乔纳森·卡卡切(Jonathan Cacace),张新宇 张志杰 等译 。

1.7 学习ROS需要做哪些准备

在开始学习ROS之前,尤其是练习本书中的代码之前,先确保已经安装如下软件:

Ubuntu 16.04 LTS / Ubuntu 15.10 / Debian 8:ROS官方只支持Ubuntu和Debian 两类操作系统。我们更愿意使用Ubuntu 的LTS版本(即Ubuntu 16.04)。

ROS Kinetic 的完整桌面安装版:在安装ROS的完整桌面版时,我们推荐ROS Kinetic版。以下链接为读者提供了最新ROS的安装说明: http://wiki.ros.org/kinetic/Installation/Ubuntu,从仓库列表中选择ros-kinetic-desktop-full软件包。

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

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

ROS节点管理器

ROS参数服务器

rosout 日志节点

rosout 节点负责收集来自其他ROS节点的日志消息,并存储在一个日志文件中。还可以把收集到的日志消息转播到其他话题。“/rosout”话题由ROS节点利用ROS客户端库(如 roscpp 或rospy)进行发布,并且rosout 节点订阅了此话题,该节点在名为“/rosout_agg”的话题中转播这些消息。“/rosout_agg”话题汇集了所有日志消息。roscore 命令是运行任何其他ROS节点之前的先决条件。

下面是在Linux终端上运行roscore的命令:

图1-9的屏幕截图显示了在终端中运行 roscore 命令时的输出信息:

 image.png

 

图1-9 运行roscore时终端显示的信息

下面是在终端上运行 roscore时各部分的解释:

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

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

第3部分,我们可以看到显示在终端的rosdistro和rosversion等参数。运行roscore.xml,这些参数就会展现出来。我们将在下面进一步了解roscore.xml 的详细信息。

第4部分,我们可以看到ROS节点管理器 (rosmaster)是用ROS_master_URI 启动的,之前我们将其定义为一个环境变量。

第5部分, 我们可以看到rosout节点已启动,开始订阅“/rosout”话题,并将其转播到“/rosout_agg”。

以下是 roscore.xml文件的内容:

 image.png

在执行 roscore 命令时,首先检查命令行参数,从而获得节点管理器的新端口号。如果得到端口号,它就开始监听新的端口,否则,将使用默认端口号。然后将此节点管理器的端口号和名为roscore.xml的启动文件一起传递给 roslaunch 系统。roslaunch 系统是在 Python 模块中实现的,它解析端口号,并启动 roscore.xml 文件。

在 roscore 文件中,可以看到ROS参数和节点被封装在<group></group>标记中,并带有标识为“/”的命名空间。<group></group>标记说明此标记内的所有节点具有相同的设置。

两个参数rosversion 和 rosdistro,分别存储了 rosversion roslaunch 和 rosversion -d 两个命令的输出结果,此处用到的command标签是ROSparam标签的一部分。command标签将运行上面提到的命令,并将命令的输出存储在这两个参数中。

ROS节点管理器 (rosmaster)和参数服务器通过使用ROS_master_URI 地址在 roslaunch 模块内执行。这是在 Python 模块的roslaunch中实现的。ROS_master_URI要连接的ROS节点管理器(ROS master)的环境变量,它是由IP地址和要监听的端口号组成的。端口号可以根据 roscore 命令中给定的端口号进行更改。

查看roscore命令的输出

让我们查看运行 roscore 后创建的ROS话题和ROS参数。下面的命令会在终端上列出活动ROS话题:

 image.png

下面列出了活动的ROS话题。根据我们前面的讨论, rosout节点订阅/rosout 话题。这保存了来自ROS节点的所有日志消息, 并且/rosout_agg 将转播日志消息:

 image.png

下面的命令列出了运行 roscore 时ROS系统中所有可用的参数:

 image.png

这里提到的参数具有发布名称、版本、roslaunch 服务器的地址和run_id ,其中run_id 是与某一特定的roscore运行相关联的唯一ID:

 image.png

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

 image.png

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

 image.png

这些ROS服务是为每个ROS节点生成的,用于设置日志级别。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。