01-ROS入门-参数服务器Parameter Server

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语法查询和设置参数。

你可能感兴趣的:(01-ROS入门-参数服务器Parameter Server)