Parameter Server
参数服务器是共享的,多变量的字典,可以通过网络API访问。节点使用参数服务器存储参数,但参数服务器不是为了高性能运算而设计,所以最好用于静态、非二进制数据,比如配置参数。参数服务器使得参数全局可见,便于更改。
参数服务器使用了通用XML语言的RPC互联网传输机制,运行再ROSMaster中,这也使得参数服务器的API可以通过XMLRPC的库访问。
Parameters 参数
参数命名规则遵循ROS命名规则,这也使得ROS参数命名匹配命名空间的分层规则,这也避免的命名冲突。分层的命名既可以单独访问,也可以以参数树的形式访问。比如下面的参数
/camera/left/name: leftcamera
/camera/left/exposure: 1
/camera/right/name: rightcamera
/camera/right/exposure: 1.1
参数 /camera/left/name 具有 leftcamera的值,也可以通过下面的字典得到 /camera/left的值
name: leftcamera
exposure: 1
也可以通过参数树得到 /camera的值
left: { name: leftcamera, exposure: 1 }right: { name: rightcamera, exposure: 1.1 }
Parameter Types 参数类型
参数使用XMLRPC 数据类型作为参数值,包括:
32-bit integers
booleans
strings
doubles
iso8601 dates
lists
base64-encoded binary data
同时也可以使用参数服务器存储字典(比如结构体). 比如需要使用下面的三个参数:
/gains/P = 10.0/gains/I = 1.0/gains/D = 0.1
可以分开读取他们的值,读取/gains/P返回10.0, 也可以读取整体 /gains返回字典:
{ 'P': 10.0, 'I': 1.0, 'D' : 0.1 }
Private Parameters 私有参数
ROS命名规则使用 ~name作为私有参数. 此命名参数只对单个节点生效。 The 前缀加上使得节点名称变为半私有命名空间,这样可以被其他部分访问,但是也可以防止命名冲突。
可以使用 remapping arguments 指定节点的参数,只需要在命令行中将~改为 _ ,例如
rosrun rospy_tutorials talker _param:=1.0
Parameter Tools 参数工具
rosparam 命令行工具可以使用YAML语法查询和设置参数。