15 #ifndef RCLCPP__PARAMETER_CLIENT_HPP_ 16 #define RCLCPP__PARAMETER_CLIENT_HPP_ 23 #include "rcl_interfaces/msg/parameter.hpp" 24 #include "rcl_interfaces/msg/parameter_event.hpp" 25 #include "rcl_interfaces/msg/parameter_value.hpp" 26 #include "rcl_interfaces/srv/describe_parameters.hpp" 27 #include "rcl_interfaces/srv/get_parameter_types.hpp" 28 #include "rcl_interfaces/srv/get_parameters.hpp" 29 #include "rcl_interfaces/srv/list_parameters.hpp" 30 #include "rcl_interfaces/srv/set_parameters.hpp" 31 #include "rcl_interfaces/srv/set_parameters_atomically.hpp" 51 const rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base_interface,
52 const rclcpp::node_interfaces::NodeTopicsInterface::SharedPtr node_topics_interface,
53 const rclcpp::node_interfaces::NodeGraphInterface::SharedPtr node_graph_interface,
54 const rclcpp::node_interfaces::NodeServicesInterface::SharedPtr node_services_interface,
60 const rclcpp::Node::SharedPtr node,
76 > callback =
nullptr);
84 > callback =
nullptr);
92 > callback =
nullptr);
100 > callback =
nullptr);
109 > callback =
nullptr);
116 CallbackT && callback,
125 this->node_topics_interface_,
143 CallbackT && callback,
151 return rclcpp::create_subscription<rcl_interfaces::msg::ParameterEvent>(
155 std::forward<CallbackT>(callback),
163 template<
typename RepT =
int64_t,
typename RatioT = std::milli>
169 std::chrono::duration_cast<std::chrono::nanoseconds>(timeout)
179 rclcpp::node_interfaces::NodeTopicsInterface::SharedPtr node_topics_interface_;
182 get_parameter_types_client_;
185 set_parameters_atomically_client_;
188 describe_parameters_client_;
199 rclcpp::Node::SharedPtr node,
204 SyncParametersClient(
205 rclcpp::executor::Executor::SharedPtr executor,
206 rclcpp::Node::SharedPtr node,
211 explicit SyncParametersClient(
217 SyncParametersClient(
218 rclcpp::executor::Executor::SharedPtr executor,
224 SyncParametersClient(
225 rclcpp::executor::Executor::SharedPtr executor,
226 const rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base_interface,
227 const rclcpp::node_interfaces::NodeTopicsInterface::SharedPtr node_topics_interface,
228 const rclcpp::node_interfaces::NodeGraphInterface::SharedPtr node_graph_interface,
229 const rclcpp::node_interfaces::NodeServicesInterface::SharedPtr node_services_interface,
250 return parameter_not_found_handler();
252 return static_cast<T
>(vars[0].get_value<T>());
260 return get_parameter_impl(
262 std::function<T()>([&default_value]() -> T {
return default_value;}));
269 return get_parameter_impl(
283 rcl_interfaces::msg::SetParametersResult
287 rcl_interfaces::msg::ListParametersResult
292 template<
typename CallbackT>
296 return async_parameters_client_->on_parameter_event(
297 std::forward<CallbackT>(callback));
311 CallbackT && callback)
315 std::forward<CallbackT>(callback));
322 return async_parameters_client_->service_is_ready();
325 template<
typename RepT =
int64_t,
typename RatioT = std::milli>
330 return async_parameters_client_->wait_for_service(timeout);
334 rclcpp::executor::Executor::SharedPtr executor_;
335 const rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base_interface_;
336 AsyncParametersClient::SharedPtr async_parameters_client_;
341 #endif // RCLCPP__PARAMETER_CLIENT_HPP_ bool service_is_ready() const
std::shared_future< std::vector< rclcpp::Parameter > > get_parameters(const std::vector< std::string > &names, std::function< void(std::shared_future< std::vector< rclcpp::Parameter >>) > callback=nullptr)
Definition: parameter_value.hpp:34
rclcpp::Subscription< rcl_interfaces::msg::ParameterEvent >::SharedPtr on_parameter_event(CallbackT &&callback)
Definition: parameter_client.hpp:294
Encapsulation of Quality of Service settings.
Definition: qos.hpp:55
bool wait_for_service(std::chrono::duration< RepT, RatioT > timeout=std::chrono::duration< RepT, RatioT >(-1))
Definition: parameter_client.hpp:327
std::shared_future< std::vector< rcl_interfaces::msg::SetParametersResult > > set_parameters(const std::vector< rclcpp::Parameter > ¶meters, std::function< void(std::shared_future< std::vector< rcl_interfaces::msg::SetParametersResult >>) > callback=nullptr)
static rclcpp::Subscription< rcl_interfaces::msg::ParameterEvent >::SharedPtr on_parameter_event(NodeT &&node, CallbackT &&callback, const rclcpp::QoS &qos=(rclcpp::QoS(rclcpp::QoSInitialization::from_rmw(rmw_qos_profile_default))), const rclcpp::SubscriptionOptionsWithAllocator< AllocatorT > &options=(rclcpp::SubscriptionOptionsWithAllocator< AllocatorT >()))
Definition: parameter_client.hpp:141
This header provides the get_node_topics_interface() template function.
Definition: allocator_common.hpp:24
Definition: parameter_client.hpp:44
bool service_is_ready() const
Definition: parameter_client.hpp:320
static QoSInitialization from_rmw(const rmw_qos_profile_t &rmw_qos)
Create a QoSInitialization from an existing rmw_qos_profile_t, using its history and depth...
rclcpp::Subscription< rcl_interfaces::msg::ParameterEvent >::SharedPtr on_parameter_event(CallbackT &&callback, const rclcpp::QoS &qos=(rclcpp::QoS(rclcpp::QoSInitialization::from_rmw(rmw_qos_profile_default))), const rclcpp::SubscriptionOptionsWithAllocator< AllocatorT > &options=(rclcpp::SubscriptionOptionsWithAllocator< AllocatorT >()))
Definition: parameter_client.hpp:115
Definition: client.hpp:119
Subscription implementation, templated on the type of message this subscription receives.
Definition: subscription.hpp:59
#define RCLCPP_SMART_PTR_DEFINITIONS(...)
Definition: macros.hpp:36
T get_parameter(const std::string ¶meter_name)
Definition: parameter_client.hpp:267
bool wait_for_service(std::chrono::duration< RepT, RatioT > timeout=std::chrono::duration< RepT, RatioT >(-1))
Definition: parameter_client.hpp:165
AsyncParametersClient(const rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base_interface, const rclcpp::node_interfaces::NodeTopicsInterface::SharedPtr node_topics_interface, const rclcpp::node_interfaces::NodeGraphInterface::SharedPtr node_graph_interface, const rclcpp::node_interfaces::NodeServicesInterface::SharedPtr node_services_interface, const std::string &remote_node_name="", const rmw_qos_profile_t &qos_profile=rmw_qos_profile_parameters)
std::shared_future< rcl_interfaces::msg::ListParametersResult > list_parameters(const std::vector< std::string > &prefixes, uint64_t depth, std::function< void(std::shared_future< rcl_interfaces::msg::ListParametersResult >) > callback=nullptr)
std::shared_future< rcl_interfaces::msg::SetParametersResult > set_parameters_atomically(const std::vector< rclcpp::Parameter > ¶meters, std::function< void(std::shared_future< rcl_interfaces::msg::SetParametersResult >) > callback=nullptr)
bool wait_for_service_nanoseconds(std::chrono::nanoseconds timeout)
Structure containing optional configuration for Subscriptions.
Definition: subscription_options.hpp:46
static rclcpp::Subscription< rcl_interfaces::msg::ParameterEvent >::SharedPtr on_parameter_event(NodeT &&node, CallbackT &&callback)
Definition: parameter_client.hpp:309
#define RCLCPP_PUBLIC
Definition: visibility_control.hpp:50
Definition: parameter_client.hpp:192
std::shared_future< std::vector< rclcpp::ParameterType > > get_parameter_types(const std::vector< std::string > &names, std::function< void(std::shared_future< std::vector< rclcpp::ParameterType >>) > callback=nullptr)
T get_parameter(const std::string ¶meter_name, const T &default_value)
Definition: parameter_client.hpp:258
Node is the single point of entry for creating publishers and subscribers.
Definition: node.hpp:72
T get_parameter_impl(const std::string ¶meter_name, std::function< T()> parameter_not_found_handler)
Definition: parameter_client.hpp:243