ROS机器人程序设计(原书第2版)2.2.1 节点与nodelet

2.2.1 节点与nodelet

节点都是各自独立的可执行文件,能够通过主题、服务或参数服务器与其他进程(节点)通信。ROS通过使用节点将代码和功能解耦,提高了系统容错能力和可维护性,使系统简化。

ROS有另一种类型的节点,称为nodelet。这类特殊节点可以在单个进程中运行多个节点,其中每个nodelet为一个线程(轻量级进程)。这样,可以在不使用ROS网络的情况下与其他节点通信,节点通信效率更高,并避免网络拥塞。nodelet对于摄像头和3D传感器这类数据传输量非常大的设备特别有用。

节点在系统中必须有唯一的名称。节点使用特定名称与其他节点进行通信而不产生歧义。节点可以使用不同的库进行编写,如roscpp和rospy。roscpp基于C++,而rospy基于Python。在这本书里,我们将使用roscpp。

ROS提供了处理节点的工具,如rosnode。rosnode是一个用于显示节点信息的命令行工具,例如列出当前正在运行的节点。支持的命令如下所示:

rosnode info NODE 输出当前节点信息。

rosnode kill NODE 结束当前运行节点进程或发送给定信号。

rosnode list 列出当前活动节点。

rosnode machine hostname 列出某一特定计算机上运行的节点或列出主机名称。

rosnode ping NODE 测试节点间的连通性。

rosnode cleanup 将无法访问节点的注册信息清除。

在后面的章节中,我们将通过一些示例学习如何使用这些命令。

ROS节点的一个强大功能是可以在启动该节点时更改参数。此功能使我们能够改变节点名称、主题名称和参数名称。我们无需重新编译代码就能重新配置节点,这样就可以在不同的场景中使用该节点。

一个改变主题名称的例子如下所示:

 

此命令将主题名称从topic1改为/level1/topic1。相信你现在还不甚明了,但在后面的章节中你会发现它的实用性。

更改节点中的参数和更改主题名称很类似。只需要在参数名称前添加一个下划线,例如:

 

这样参数(param)就设置为浮点数9.0。

请记住,不能使用系统保留的关键字名称,包括:

_name 为节点名称保留的一个特殊关键字。

_log 为记录节点日志存储地址保留的一个关键字。

_ip和_hostname 表示ROS_IP和ROS_HOSTNAME的关键字。

_master 表示ROS_MASTER_URI的关键字。

_ns 表示ROS_NAMESPACE的关键字。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值