ROS 节点 和 命令行传参

ROS节点的类型由包内的资源名字定义,同一包内避免同名可执行文件。节点启动时,可以重新映射ROS名字,包括参数赋值。例如,通过`rosrun`命令可以重定向话题发布。`ROS_NAMESPACE`可改变节点命名空间,`_param`前缀用于指定节点专用参数。特殊关键字如`__name`用于节点名重映射,`__log`指定日志位置,`__ip`、`__hostname`、`__master`和`__ns`则在特殊情况下替代环境变量。
摘要由CSDN通过智能技术生成

http://wiki.ros.org/Nodes

节点是有节点类型type的的,节点的类型type就是节点所在包package的资源的名字,包括包package文件的名字和包package内部可执行文件的名字。

ROS在package内部搜索特定名字的可执行程序,并以搜到的第一个为准,所以在一个package内部不要生成同名的不同功能的可执行文件。

当节点在命令行被启动时,节点node内的任何一个ROS名字都可以被重新映射。这一个牛逼的特性可以使你在命令行以不同的配置启动同一个节点。

你可以为私有节点的参数赋值。

映射的参数可以通过以下语法name:=new_name,被传递给任何一个节点,例如,将talker节点发布的话题chatter修改为/wg/chatter:

rosrun rospy_tutorials talker chatter:=/wg/chatter    (这里的chatter是”话题的名字“,而不是指指”话题“,例如话题的名字为"hello" ,可以这么修改 hello:=/my/hello)

在匹配之前先解析参数,这样做的结果是你重映射了一个全名,然而在重映射之前,只适用于一个特定的字符串,例如,foo:=bar 之前只匹配字符串foo,当然也会匹配/<node_namespace>/foo ,解析之后,直接匹配字符串,所以你不能用它来重映射部分名字,即foo:=bar 会匹配foo或者/<node_namespace>/foo ,但是不会匹配 foo/bar 。唯一例外的情况是当使用searchParam时,会保留以前的行为,因为searchParam本身工作在未解析的名字上。

示例:

节点命名空间

重映射参数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值