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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值