Skip to content

Instantly share code, notes, and snippets.

@nuclearsandwich
Created August 17, 2018 22:21
Show Gist options
  • Save nuclearsandwich/944595aad28cb1323c909be45f4d4259 to your computer and use it in GitHub Desktop.
Save nuclearsandwich/944595aad28cb1323c909be45f4d4259 to your computer and use it in GitHub Desktop.
import sys
import rclpy
from rcl_interfaces.srv import SetParameters, SetParametersAtomically
from rclpy.node import Node
from rclpy.parameter import Parameter
def main(args=None):
if args is None:
args = sys.argv
rclpy.init(args=args)
node = rclpy.create_node('parameter_setter')
setter = node.create_client(SetParameters, '/talker/set_parameters')
parameters_to_set = [
Parameter('test_param.1', Parameter.Type.STRING, "hello"),
Parameter('test_param.2', Parameter.Type.INTEGER, 42),
Parameter('test_param.3', Parameter.Type.DOUBLE, 2.71),
]
while not setter.wait_for_service(timeout_sec=1.0):
print("Waiting for service...")
request = SetParameters.Request()
request.parameters = [p.get_rcl_parameter() for p in parameters_to_set]
response_f = setter.call_async(request)
rclpy.spin_until_future_complete(node, response_f)
if response_f.result() is not None:
print(repr(response_f.result()))
else:
sys.exit(1)
atomic_setter = node.create_client(SetParametersAtomically, '/talker/set_parameters_atomically')
parameters_to_set_atomically = [
Parameter('test_param.1', Parameter.Type.STRING, "goodbye"),
Parameter('test_param.2', Parameter.Type.NOT_SET, None),
Parameter('test_param.4', Parameter.Type.DOUBLE, 2.41),
]
while not atomic_setter.wait_for_service(timeout_sec=1.0):
print("Waiting for atomic service...")
request = SetParametersAtomically.Request()
request.parameters = [p.get_rcl_parameter() for p in parameters_to_set_atomically]
response_f = atomic_setter.call_async(request)
rclpy.spin_until_future_complete(node, response_f)
if response_f.result() is not None:
print(repr(response_f.result()))
else:
sys.exit(1)
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment