ROS----名字空间namespace

2023-05-16

这里面很重要的一点就是说出了

转载自:https://blog.csdn.net/cookie909/article/details/79842334

ROS----名字空间namespace

cookie909 2018-04-07 16:00:00 1317 收藏

分类专栏: ROS 文章标签: namespace

1名称

1.1图资源名称Graph ResourceNames

图形资源名称提供了一个分层命名结构,用于ROS计算图中的所有资源,例如节点,参数,主题和服务。这些名称在ROS中非常强大,并且是ROS如何构建更大和更复杂的系统的核心,因此了解这些名称的工作方式以及如何操作它们至关重要。在我们进一步描述名称之前,以下是一些示例名称:

/(the global namespace)

/foo

/stanford/robot/name

/wg/node1

图形资源名称是ROS提供封装的重要机制。每个资源都是在一个名称空间内定义的,它可以与许多其他资源共享。一般而言,资源可以在其名称空间内创建资源,并且可以访问自己的名称空间内或上方的资源。可以在不同名称空间中的资源之间建立连接,但通常通过名称空间上方的集成代码完成。这种封装将系统的不同部分隔离起来,以免意外攫取错误的命名资源或全局劫持名称。

名称独立的被解析,所以资源不需要知道它们在哪个名称空间。这简化了编程,因为一起工作的节点可以被写入,就好像它们全部在顶层名称空间中一样。当这些节点被集成到一个更大的系统中时,它们可以被下推到一个定义它们代码集合的名称空间中。例如,人们可以采取斯坦福演示和Willow Garage的演示,并把它们合并成一个新的演示斯坦福和WG子图。如果两个演示都有一个名为“摄像头”的节点,它们不会发生冲突。工具(如图表可视化)以及需要对整个图形可见的参数(例如demo_name)可由顶级节点创建。

1.1.1有效名称

有效的名称具有以下特征:

  1. 第一个字符是字母字符([a-z | A-Z]),代字符(〜)或正斜杠(/)
  2. 后续字符可以是字母数字([0-9 | a-z | A-Z]),下划线(_)或正斜杠(/)

例外:基本名称(如下所述)不能在其中包含正斜杠(/)或折线(〜)。

1.1.2解决

ROS中有四种类型的图形资源名称:base,relative,global和private,它们的语法如下:

Base

relative/name

/global/name

~private/name

默认情况下,解析是相对于节点的名称空间完成的。例如,节点/ wg / node1具有名称空间/ wg,因此名称node2将解析为/ wg / node2。

没有命名空间限定符的名称是基本名称。基本名称实际上是相对名称的一个子类,并具有相同的解析规则。基本名称最常用于初始化节点名称。

以“/”开头的名称是global----它们被视为完全解析。尽可能避免使用全局名称,因为它们限制了代码的可移植性。

以“〜”开头的名称是私人的。它们将节点的名称转换为名称空间。例如,节点1在命名空间/ WG /拥有私有命名空间/ WG /节点1。专用名称有利于通过参数服务器将参数传递给特定节点。

以下是一些名称解析示例:

Node

Relative (default)

Global

Private

/node1

Bar -> /bar

/bar -> /bar

~bar -> /node1/bar

/wg/node2

bar -> /wg/bar

/bar -> /bar

~bar -> /wg/node2/bar

/wg/node3

foo/bar -> /wg/foo/bar

/foo/bar -> /foo/bar

~foo/bar -> /wg/node3/foo/bar

1.1.3重新映射

当节点在命令行启动时,可以重新映射ROS节点中的任何名称。有关此功能的更多信息,请参阅重新映射参数。

1.2包资源名称

软件包资源名称用于ROS和Filesystem-Level概念,以简化引用磁盘上的文件和数据类型的过程。包资源名称非常简单:它们只是资源所在的包的名称以及资源的名称。例如,名称“std_msgs / String”引用“std_msgs”包中的“String”消息类型。

一些可能使用包资源名称引用的ROS相关文件包括:

Message (msg) types

Service(srv) types

Nodetypes

包资源名称与文件路径非常相似,除非它们更短。这是由于ROS在磁盘上定位软件包的能力以及对其内容做出其他假设的原因。例如,消息描述总是存储在msg子目录中,并具有.msg扩展名,所以std_msgs / String是path / to / std_msgs / msg / String.msg的简写。同样,节点类型foo / bar等同于在包foo中以可执行权限搜索名为bar的文件。

 

1.2.1有效名称

包资源名称具有严格的命名规则,因为它们通常用于自动生成的代码。出于这个原因,ROS包不能包含除下划线以外的特殊字符,并且它们必须以字母字符开头。有效的名称具有以下特征:

第一个字符是一个字母字符([a-z | A-Z])

后续字符可以是字母数字([0-9 | a-z | A-Z]),下划线(_)或正斜杠(/)

最多只有一个斜线('/')。

代码API

roscpp ::名称API参考(ROS Indigo)

http://wiki.ros.org/Names#Graph

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS----名字空间namespace 的相关文章

随机推荐