《ROS机器人开发实践》学习五——ROS的命名空间

日期:2021/09/08

一、ROS的命名空间

1、计算图源
根据前面的学习,在ROS系统中其实存在节点、话题、服务和参数等概念,这些在ROS系统统称为计算图源。

2、计算图源名称的命名规则
在ROS系统中无论是节点还是话题都有自己的名称,如C++语言中的标识符一样,在ROS中命名也有自己的规则:
1)首字符必须是字母(A-Z|a-z)、波浪线(~)或者左斜杆(/);
2)后续字符可以是字母和数字、下划线或者左斜杠

3、计算图源名称的分类
1)全局名称:/global/name:即在任何地方(包括代码、命令行工具、图形界面工具等的任何地方)都可以使用
2)相对名称:relativ/name;
3)私有名称:~private/name;
4)基础名称:base
下面通过创建话题发布订阅(Publisher、Subscriber)的例子来说明,更好理解。按步骤运行该例程,新开一个终端输入使用使用rostopic list查阅话题,使用rosnode list查阅当前运行的话题和节点,如下图所示:
《ROS机器人开发实践》学习五——ROS的命名空间_第1张图片
发布的话题名称为:/chatter;节点的名称为/listener、/talker,一般来说在ROS中创建ROS节点或者发布话题时,ros::NodeHandle nh;其后面没有添加参数,则默认在其名称前加上左斜杠(/),成为全局名称。

相对名称则是在创建的时候没有左斜杠(/)的计算图源名称,ROS在解析相对名称的时候需要将其转化为全局名称,而转换的方式就是将其默认的命名空间的名称加在相对名称之前。确定默认命名空间有三种方式:
1)通过命令参数设置:调用ros::init()的ROS的ROS程序会接收名为_ ns命令行参数,赋值的方式为: _ns:=name;
2)在launch文件中设置
3) 使用环境变量设置

私有名称是一个节点的内部私有的资源名称,只会在节点内部使用。

此处只做简单介绍,详细可查阅书本。

你可能感兴趣的:(ROS,ubuntu)