ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
1

How to set/get ROS2 params from another node using Python?

asked 2022-03-17 08:53:35 -0500

MLEV gravatar image

updated 2022-03-17 08:55:47 -0500

Hi guys,

how can I get/set the parameter value of another node?

Something like

ros2 param get /my_node my_param

But in code? Thank you all!

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2022-03-17 18:38:06 -0500

updated 2022-03-17 18:38:26 -0500

https://github.com/ros-planning/navig...

Ask and ye shall receive

class SetExternalParam(Node):

def __init__(self, server_name):
    super().__init__('nav2_simple_commander_parameter_setter')

    self.cli = self.create_client(SetParameters, '/' + server_name + '/set_parameters')
    while not self.cli.wait_for_service(timeout_sec=1.0):
        self.get_logger().info('service not available, waiting again...')
    self.req = SetParameters.Request()

def send_request(self, param_name, param_value):
    if isinstance(param_value, float):
        val = ParameterValue(double_value=param_value, type=ParameterType.PARAMETER_DOUBLE)
    elif isinstance(param_value, int):
        val = ParameterValue(integer_value=param_value, type=ParameterType.PARAMETER_INTEGER)
    elif isinstance(param_value, str):
        val = ParameterValue(string_value=param_value, type=ParameterType.PARAMETER_STRING)
    elif isinstance(param_value, bool):
        val = ParameterValue(bool_value=param_value, type=ParameterType.PARAMETER_BOOL)
    self.req.parameters = [Parameter(name=param_name, value=val)]
    self.future = self.cli.call_async(self.req)
    while rclpy.ok():
        rclpy.spin_once(self)
        if self.future.done():
            try:
                response = self.future.result()
                if response[0].successful:
                    return True
            except Exception as e:
                pass
            return False
edit flag offensive delete link more

Comments

Thank you, I'll try it

MLEV gravatar image MLEV  ( 2022-03-18 00:05:54 -0500 )edit

Question Tools

Stats

Asked: 2022-03-17 08:53:35 -0500

Seen: 911 times

Last updated: Mar 17 '22