ROS学习笔记4 计算图源命名
来源:互联网 发布:春晚 知乎 编辑:程序博客网 时间:2024/06/03 07:45
(1)全局名称
节点、话题、服务和参数统称为计算图源,而每个计算图源都有一个叫计算图源名称(graph resource name)的短字符串标识。常见的全局名称:
/teleop_turtle /turtlesim /turtle1/cmd_vel /turtle1/pose /run_id /count_and_log/set_logger_level
全局名称的特点是它们无论在任何地方(代码、命令行工具、图形界面工具)都可以使用。这些名称不存二义性问题。
前面的反斜杠表示这个名称为 全局名称
由反斜杠分开的一系列称为命名空间(namespace)。
基本名称:teleop_turtle、cmd_vel 等。
(2)相对名称
使用全局名称面临着命令空间太多,从而导致名称长度过长的问题。因此,ROS为计算图源提供了一个默认的名称空间,这样的名称叫做相对计算图源名称(relative graph resource name),也可以简称为相对名称(relative name)。相对名称的典型特征是其缺少全局名称所具有的前斜杠/,下面是一些相对名称:
teleop_turtle turtlesim cmd_vel turtle1/pose
如果不知道ROS解析某个计算图源时所使用的默认命名空间,相对名称并不能和特定的计算图源匹配。
将相对名称转化为全局名称的过程非常简单,ROS将当前的默认名称空间加在相对名称的前面,从而将相对名称解析为全局名称。假如默认命名空间为/turtle1,使用的相对名称为cmd_vel。则有如下解析过程:
/turtle1(默认命名空间) + cmd_vel(相对名称) = /turtle1/cmd_vel(全局名称)
设置默认命名空间
默认命名空间是单独地为每个节点设置的,而不是在系统范围内进行的。如果不为节点设置默认命空间,则节点使用全局命名空间(/)作为该节点的默认命名空间。
为一个节点选择一个不同的默认命名空间的最好也是最常用的方法是在启动文件中使用命名空间(ns)属性。
设置命名空间的语句:
__ns:default-namespace
在shell中为执行的ROS程序设置默认命名空间:
Export ROS_NAMESPACE = default-namespace
使用相对名称的意义
当一个节点内的计算图源全部使用相对名称时,就为用户提供了一种非常简单的移植手段。即用户可以方便地将此节点移植到其它的命名空间。
私有名称
私有名称,以一个波浪符号开始(~),私有名称也不能确定自身所在的命名空间,而是需要ROS客户端库将其解析为全局名称。
在节点内部都存在一些资源,这种资源只和本节点有关,而不会和其它节点有关系。这样的资源就可以使用私有名称。
参考文献 《机器人操作系统浅析》
- ROS学习笔记4 计算图源命名
- ROS进二阶学习笔记(5)- 命名与命名空间
- ROS进二阶学习笔记(4) - ROS and Multithread
- ROS学习笔记
- ROS学习笔记一
- ROS学习笔记
- ROS urdf学习笔记
- ROS学习笔记
- ROS学习笔记-------Message_filters
- ros indigo 学习笔记--->
- ROS学习笔记1
- ros学习笔记3
- ros学习笔记-lesson1
- ros学习笔记(1)
- ROS学习笔记二:探索ROS文件系统
- ROS学习笔记三:创建ROS软件包
- ROS学习笔记四:理解ROS节点
- ROS学习笔记五:理解ROS topics
- leetCode-Merge Sorted Array
- MyBatis + spring boot 搭建web项目
- 用if else 完成成绩的分布
- vue keep-alive生命周期
- 23种设计模式之工厂模式
- ROS学习笔记4 计算图源命名
- [DP+AC自动机] BZOJ1212: [HNOI2004]L语言
- 本文以Qt 5.9.1+VS2015编译环境为例介绍应用程序发布流程,也适用于Qt+mingw的情况。
- 利用openssl库实现BIO加密
- php 利用debug_backtrace方法跟踪代码调用
- 共同学习Java源代码-数据结构-HashMap(十一)
- 文章标题
- HDOJ1008 Elevator
- numpy小记,复制array