ddynamic_reconfigure.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 
3 """
4 Dynamic dynamic reconfigure server.
5 
6 Just register your variables for the dynamic reconfigure
7 and call start with a callback.
8 
9 Author: Sammy Pfeiffer
10 """
11 
12 from dynamic_reconfigure.server import Server
13 from dynamic_reconfigure.parameter_generator_catkin import ParameterGenerator
14 from dynamic_reconfigure.encoding import extract_params
15 from rospkg import RosPack
16 import rospy
17 
18 
19 class DDynamicReconfigure(ParameterGenerator):
20  """Dynamic reconfigure server that can be instanced directly."""
21 
22  def __init__(self, name=None):
23  global id
24  self.group = self.Group(self, "Default", "", True, 0, 0)
25  id = 1
26  if name is None:
27  self.name = rospy.get_name() + "_dyn_rec"
28  else:
29  self.name = name
30  self.constants = []
31  rp = RosPack()
32  self.dynconfpath = rp.get_path('dynamic_reconfigure')
33 
34  def get_type(self):
35  class TypeClass(object):
36  def __init__(self, config_description):
37  self.config_description = config_description
38  self.min = {}
39  self.max = {}
40  self.defaults = {}
41  self.level = {}
42  self.type = {}
43  self.all_level = 0
44 
45  for param in extract_params(config_description):
46  self.min[param['name']] = param['min']
47  self.max[param['name']] = param['max']
48  self.defaults[param['name']] = param['default']
49  self.level[param['name']] = param['level']
50  self.type[param['name']] = param['type']
51  self.all_level = self.all_level | param['level']
52  return TypeClass(self.group.to_dict())
53 
54  def add_variable(self, name, description, default=None, min=None, max=None, edit_method=""):
55  """Register variable, like gen.add() but deducting the type"""
56  if type(default) == int:
57  if edit_method == "":
58  self.add(name, "int", 0, description, default, min, max)
59  else: # enum
60  self.add(name, "int", 0, description, default, min, max, edit_method)
61  elif type(default) == float:
62  self.add(name, "double", 0, description, default, min, max)
63  elif type(default) == str:
64  self.add(name, "str", 0, description, default)
65  elif type(default) == bool:
66  self.add(name, "bool", 0, description, default)
67 
68  return default
69 
70 
71  def get_variable_names(self):
72  """Return the names of the dynamic reconfigure variables"""
73  names = []
74  for param in self.group.parameters:
75  names.append(param['name'])
76  return names
77 
78 
79  def start(self, callback):
80  self.dyn_rec_srv = Server(self.get_type(), callback, namespace=self.name)
ddynamic_reconfigure_python.ddynamic_reconfigure.DDynamicReconfigure
Definition: ddynamic_reconfigure.py:19
ddynamic_reconfigure_python.ddynamic_reconfigure.DDynamicReconfigure.min
min
Definition: ddynamic_reconfigure.py:38
ddynamic_reconfigure_python.ddynamic_reconfigure.DDynamicReconfigure.type
type
Definition: ddynamic_reconfigure.py:42
ddynamic_reconfigure_python.ddynamic_reconfigure.DDynamicReconfigure.get_variable_names
def get_variable_names(self)
Definition: ddynamic_reconfigure.py:71
ddynamic_reconfigure_python.ddynamic_reconfigure.DDynamicReconfigure.name
name
Definition: ddynamic_reconfigure.py:27
ddynamic_reconfigure_python.ddynamic_reconfigure.DDynamicReconfigure.config_description
config_description
Definition: ddynamic_reconfigure.py:37
ddynamic_reconfigure_python.ddynamic_reconfigure.DDynamicReconfigure.max
max
Definition: ddynamic_reconfigure.py:39
ddynamic_reconfigure_python.ddynamic_reconfigure.DDynamicReconfigure.start
def start(self, callback)
Definition: ddynamic_reconfigure.py:79
ddynamic_reconfigure_python.ddynamic_reconfigure.DDynamicReconfigure.__init__
def __init__(self, name=None)
Definition: ddynamic_reconfigure.py:22
ddynamic_reconfigure_python.ddynamic_reconfigure.DDynamicReconfigure.get_type
def get_type(self)
Definition: ddynamic_reconfigure.py:34
ddynamic_reconfigure_python.ddynamic_reconfigure.DDynamicReconfigure.constants
constants
Definition: ddynamic_reconfigure.py:30
ddynamic_reconfigure_python.ddynamic_reconfigure.DDynamicReconfigure.dyn_rec_srv
dyn_rec_srv
Definition: ddynamic_reconfigure.py:80
ddynamic_reconfigure_python.ddynamic_reconfigure.DDynamicReconfigure.group
group
Definition: ddynamic_reconfigure.py:24
ddynamic_reconfigure_python.ddynamic_reconfigure.DDynamicReconfigure.dynconfpath
dynconfpath
Definition: ddynamic_reconfigure.py:32
ddynamic_reconfigure_python.ddynamic_reconfigure.DDynamicReconfigure.level
level
Definition: ddynamic_reconfigure.py:41
ddynamic_reconfigure_python.ddynamic_reconfigure.DDynamicReconfigure.add_variable
def add_variable(self, name, description, default=None, min=None, max=None, edit_method="")
Definition: ddynamic_reconfigure.py:54
ddynamic_reconfigure_python.ddynamic_reconfigure.DDynamicReconfigure.all_level
all_level
Definition: ddynamic_reconfigure.py:43
ddynamic_reconfigure_python.ddynamic_reconfigure.DDynamicReconfigure.defaults
defaults
Definition: ddynamic_reconfigure.py:40


ddynamic_reconfigure_python
Author(s):
autogenerated on Wed Mar 2 2022 00:10:22