2 #include <rclcpp/rclcpp.hpp>
14 using namespace std::chrono_literals;
17 rclcpp::Node(
"testSetupNode") {
25 for (
auto const& [nodeName, parametersVec] : *p_settingsGUIParameterMap) {
28 auto parameters_client = std::make_shared<rclcpp::SyncParametersClient>(
this,
"/" + nodeName);
30 if(!parameters_client->wait_for_service(1s)) {
32 RCLCPP_ERROR(this->get_logger(),
"Interrupted while waiting for the service of node %s. Exiting.", nodeName.c_str());
36 RCLCPP_INFO(this->get_logger(),
"Service for Node %s not available, abort sending parameters to this node...", nodeName.c_str());
41 if(parameters_client ==
nullptr) {
42 RCLCPP_ERROR(this->get_logger(),
"parameters_client is null");
49 for (
auto & parameter : parametersVec)
51 rclcpp::ParameterValue previousParameterValue = parameters_client->get_parameters({parameter.get_name()}).at(0).get_parameter_value();
52 if (parameter.get_parameter_value() != previousParameterValue) {
53 auto set_parameters_results = parameters_client->set_parameters(
55 rclcpp::Parameter(parameter.get_name(), parameter.get_parameter_value()),
60 for (
auto & result : set_parameters_results) {
61 if (!result.successful) {
62 RCLCPP_ERROR(this->get_logger(),
"Failed to set parameter: %s", result.reason.c_str());
65 RCLCPP_WARN(this->get_logger(),
"[New Parameter] Set & changed parameter successfully: %s = %s", parameter.get_name().c_str(), parameter.value_to_string().c_str());
70 RCLCPP_INFO(this->get_logger(),
"No change: %s = %s", parameter.get_name().c_str(), parameter.value_to_string().c_str());
73 RCLCPP_INFO(this->get_logger(),
"====================================== END OF SET PARAMETER LOG %s ======================================", nodeName.c_str());