ROS----重新映射Remapping Arguments

重新映射参数Remapping Arguments

任何一个节点内ROS的名字可以当在命令行启动重映射。这是ROS的一项强大功能,可让您在命令行的多个配置下启动相同的节点。所有资源名称都可以重新映射。您也可以为私有节点参数提供分配。ROS的这一特性允许您将复杂的名称分配推迟到系统的实际运行时加载。
重映射参数可以传递给任何节点并使用语法:name:=new_name。例如,要将talker节点配置为发布到/ wg / chatter而不是chatter:

rosrun rospy_tutorials talker chatter= / wg / chatter

我们在匹配前解决分歧。这样做的效果是您重新映射完整名称,而重映射只适用于特定字符串之前。例如,前面的foo:= bar只匹配确切的字符串foo,它也会匹配/ <node_namespace> / foo。解析后,使用直接字符串匹配,所以不能用它重新映射名称的某一部分,即foo:= bar可以匹配foo/ <node_namespace>/ foo,但不能匹配foo / baz一个例外是使用searchParam,它保留了旧的行为。这是因为searchParam本身适用于未解决的名称。

Node Namespace

Remapping Argument

Matching Names

Final Resolved Name

/

foo:=bar

foo, /foo

/bar

/baz

foo:=bar

foo, /baz/foo

/baz/bar

/

/foo:=bar

foo, /foo

/bar

/baz

/foo:=bar

/foo

/baz/bar

/baz

/foo:=/a/b/c/bar

/foo

/a/b/c/bar

各种ROS库提供客户端支持,以便轻松地从您自己的参数解析中剥离重新映射参数。

1.“Pushing Down”

该ROS_NAMESPACE 环境变量,您可以更改正在启动的节点,从而有效地重新映射所有在该节点名称的命名空间。由于所有节点都在全局名称空间中启动,因此这实际上将其“Pushing Down”到子名称空间中。由于节点中的所有名称(节点名称,主题,服务和参数)都将被重新扫描,因此更改节点的名称空间是整合代码的一种简单机制。
注意:为了使此功能正常工作,重要的是您的程序避免使用全局名称,而是使用相对名称和专用名称。

2.节点参数分配

您可以使用单个下划线_作为前缀,直接从命令行为节点分配私有参数。例如,

rosrun rospy_tutorials talker _param= 1.0

设置〜param为1.0。ROS使用YAML语法来确定参数类型。

3.特殊键

__name

__name节点名称的特殊保留关键字。它允许您重新映射节点名称,而无需知道其实际名称。它只能在正在启动的程序包含一个节点时使用。

__log

__log是一个保留关键字,用于指定应写入节点日志文件的位置。通常不鼓励使用这个关键字---它主要提供给ROS工具使用,如roslaunch

__ip和__hostname

__ip__hostname是替代ROS_IPROS_HOSTNAME。通常不鼓励使用此关键字,因为它提供给无法设置环境变量的特殊情况。

__master

__masterROS_MASTER_URI的替代。通常不鼓励使用此关键字,因为它提供给无法设置环境变量的特殊情况。

__ns

__nsROS_NAMESPACE的替代。通常不鼓励使用此关键字,因为它提供给无法设置环境变量的特殊情况。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值