32#include <rclcpp/rclcpp.hpp>
45void get_ros_parameter(std::shared_ptr<rclcpp::Node>& node,
const std::string& parameter_name, T& t)
47 if(!node->has_parameter(parameter_name))
48 node->declare_parameter<T>(parameter_name);
50 if(!node->get_parameter(parameter_name,t))
52 throw std::runtime_error(
"::Error loading " + parameter_name);
64void get_ros_optional_parameter(std::shared_ptr<rclcpp::Node>& node,
const std::string& parameter_name, T& t,
const T& default_value)
66 if(!node->has_parameter(parameter_name))
67 node->declare_parameter<T>(parameter_name, default_value);
68 node->get_parameter(parameter_name,t);
77std::string get_type_name(
const std::vector<T>&)
79 if constexpr(std::is_same_v<T,std::string>)
81 return "std::vector<std::string>";
83 if constexpr(std::is_same_v<T,int64_t>)
85 return "std::vector<int64_t>";
87 if constexpr(std::is_same_v<T,double>)
89 return "std::vector<double>";
91 if constexpr(std::is_same_v<T,bool>)
93 return "std::vector<bool>";
114void get_ros_parameter(std::shared_ptr<rclcpp::Node>& node,
const std::string& parameter_name, std::vector<T>& v)
116 if(!node->has_parameter(parameter_name))
120 node->declare_parameter<std::vector<T>>(parameter_name);
122 catch (
const rclcpp::exceptions::InvalidParameterTypeException& e)
126 "sas::get_ros_parameter: List "
128 <<
" does not have expected type, a.k.a "
130 <<
", in the parameter server, checking for empty list...");
131 node->declare_parameter<std::vector<std::string>>(parameter_name);
135 if(node->get_parameter(parameter_name).get_type() == rclcpp::PARAMETER_STRING_ARRAY)
137 auto v_checker = node->get_parameter(parameter_name).as_string_array();
138 if(v_checker.size() == 1 && v_checker.at(0) ==
"EMPTY_LIST")
142 "sas::get_ros_parameter: List "
144 <<
" was loaded as an EMPTY list of type "
147 v = std::vector<T>();
152 if constexpr (not std::is_same_v<T,std::string>)
154 throw std::runtime_error(
"::Was this list, "
156 +
", supposed to be empty? \n "
157 "It should be a list such as list:[\"EMPTY_LIST\"].");
161 if(!node->get_parameter(parameter_name,v))
163 throw std::runtime_error(
"::Unable to get parameter " + parameter_name);