Skip to content

Commit 1ee5af1

Browse files
feat: Add user callback python (#254)
1 parent 89a9a13 commit 1ee5af1

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

example_cmake_python/cmake_generate_parameter_module_example/minimal_publisher.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ def __init__(self):
4242

4343
self.param_listener = admittance_controller.ParamListener(self)
4444
self.params = self.param_listener.get_params()
45+
self.param_listener.set_user_callback(self.reconfigure_callback)
4546
self.get_logger().info(
4647
"Initial control frame parameter is: '%s'" % self.params.control.frame.id
4748
)
@@ -64,6 +65,15 @@ def timer_callback(self):
6465
for d in self.params.fixed_array:
6566
self.get_logger().info("value: '%s'" % str(d))
6667

68+
def reconfigure_callback(self, parameters):
69+
self.get_logger().info('Reconfigure callback fired!')
70+
self.get_logger().info(
71+
"New control frame parameter is: '%s'" % parameters.control.frame.id
72+
)
73+
self.get_logger().info("fixed string is: '%s'" % parameters.fixed_string)
74+
for d in parameters.fixed_array:
75+
self.get_logger().info("value: '%s'" % str(d))
76+
6777

6878
def main(args=None):
6979
rclpy.init(args=args)

generate_parameter_library_py/generate_parameter_library_py/jinja_templates/python/parameter_library_header

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ stamp_ = Time()
4141
self.declare_params()
4242

4343
self.node_.add_on_set_parameters_callback(self.update)
44+
self.user_callback = None
4445
self.clock_ = Clock()
4546

4647
def get_params(self):
@@ -79,6 +80,12 @@ stamp_ = Time()
7980
params_to_set = self.unpack_parameter_dict('', param_dict)
8081
self.update(params_to_set)
8182

83+
def set_user_callback(self, callback):
84+
self.user_callback = callback
85+
86+
def clear_user_callback(self):
87+
self.user_callback = None
88+
8289
def refresh_dynamic_parameters(self):
8390
updated_params = self.get_params()
8491
# TODO remove any destroyed dynamic parameters
@@ -109,6 +116,8 @@ for param in parameters:
109116

110117
updated_params.stamp_ = self.clock_.now()
111118
self.update_internal_params(updated_params)
119+
if self.user_callback:
120+
self.user_callback(self.get_params())
112121
return SetParametersResult(successful=True)
113122

114123
def update_internal_params(self, updated_params):

0 commit comments

Comments
 (0)