<<MenuNavi(rosh/Overview)>> = Parameters = <<TOC(3)>> == parameters == The `parameters` object lets you read and write values to the [[Parameter Server]]. This object follows the general ROSH convention for converting ROS [[Names|names]], i.e. to access the parameters `/foo/bar/gains`, you would use: {{{ parameters.foo.bar.gains }}} You can also use mapping-style lookups on `parameters`, which is useful if you are dealing with string names: {{{ parameters['/foo/bar'].gains }}} == Retrieving a parameter value == To retrieve a parameter value, simply do a method call on the parameter you want, e.g.: {{{ In [3]: parameters.run_id() Out[3]: '7ab647bc-c29f-11df-aef2-003048fb8348' }}} == Setting a parameter value == You can set values on the [[Parameter Server]] simply by using normal Python assignment, e.g.: {{{ In [4]: parameters.foo = 1 In [5]: parameters.foo Out[5]: 1 }}} You can also use Python dictionaries to assign create namespaces, e.g.: {{{ In [6]: parameters.bar = dict(child1=1, child2=2) In [7]: parameters.bar Out[7]: Boxed[{'child1': 1, 'child2': 2}] }}} == Loading rosparam data == `rosparam(filename)` The `rosparam()` function loads a rosparam YAML file from disk, e.g. {{{ In [1]: roscd rosparam /home/foo/ros/tools/rosparam In [2]: rosparam('example.yaml') Out[2]: {'dict1': {'head': 1, 'knees': 3, 'shoulders': 2, 'toes': 4}, 'float1': 3.1415899999999999, 'float2': 1234.5, 'integer1': 1, 'integer2': 2, 'list1': ['head', 'shoulders', 'knees', 'toes'], 'list2': [1, 1, 2, 3, 5, 8], 'preformattedtext': 'This is the first line\nThis is the second line\nLine breaks are preserved\nIndentation is stripped\n', 'robots': {'child': {'grandchildparam': 'a grandchild namespace param'}, 'childparam': 'a child namespace parameter'}, 'string1': 'bar', 'string2': '10'} }}} `rosparam_str(yaml_data)` Parse rosparam/YAML string, e.g.: {{{ In [1]: data = 'string1: bar\nstring2: !!str 10\npreformattedtext: |\n This is the first line\n This is the second line\n Line breaks are preserved\n Indentation is stripped\nlist1:\n - head\n - shoulders\n - knees\n - toes\nlist2: [1, 1, 2, 3, 5, 8]\ndict1: { head: 1, shoulders: 2, knees: 3, toes: 4}\ninteger1: 1\ninteger2: 2\nfloat1: 3.14159\nfloat2: 1.2345e+3\nrobots:\n childparam: a child namespace parameter\n child:\n grandchildparam: a grandchild namespace param\n' In [2]: rosparam_str(data) Out[2]: [({'dict1': {'head': 1, 'knees': 3, 'shoulders': 2, 'toes': 4}, 'float1': 3.1415899999999999, 'float2': 1234.5, 'integer1': 1, 'integer2': 2, 'list1': ['head', 'shoulders', 'knees', 'toes'], 'list2': [1, 1, 2, 3, 5, 8], 'preformattedtext': 'This is the first line\nThis is the second line\nLine breaks are preserved\nIndentation is stripped\n', 'robots': {'child': {'grandchildparam': 'a grandchild namespace param'}, 'childparam': 'a child namespace parameter'}, 'string1': 'bar', 'string2': '10'}, }}}