15 #ifndef RCLCPP_LIFECYCLE__LIFECYCLE_NODE_IMPL_HPP_
16 #define RCLCPP_LIFECYCLE__LIFECYCLE_NODE_IMPL_HPP_
42 template<
typename MessageT,
typename AllocatorT>
50 return rclcpp::create_publisher<MessageT, AllocatorT, PublisherT>(
62 typename CallbackMessageT,
63 typename SubscriptionT,
64 typename MessageMemoryStrategyT>
69 CallbackT && callback,
71 typename MessageMemoryStrategyT::SharedPtr msg_mem_strat)
73 return rclcpp::create_subscription<MessageT>(
77 std::forward<CallbackT>(callback),
82 template<
typename DurationRepT,
typename DurationT,
typename CallbackT>
87 rclcpp::CallbackGroup::SharedPtr group)
90 std::chrono::duration_cast<std::chrono::nanoseconds>(period),
91 std::move(callback), this->node_base_->get_context());
92 node_timers_->add_timer(timer, group);
96 template<
typename ServiceT>
101 rclcpp::CallbackGroup::SharedPtr group)
103 rcl_client_options_t options = rcl_client_get_default_options();
104 options.qos = qos_profile;
109 auto cli = Client<ServiceT>::make_shared(
115 auto cli_base_ptr = std::dynamic_pointer_cast<ClientBase>(cli);
116 node_services_->add_client(cli_base_ptr, group);
120 template<
typename ServiceT,
typename CallbackT>
124 CallbackT && callback,
126 rclcpp::CallbackGroup::SharedPtr group)
128 return rclcpp::create_service<ServiceT, CallbackT>(
129 node_base_, node_services_,
130 service_name, std::forward<CallbackT>(callback), qos_profile, group);
133 template<
typename ParameterT>
137 const ParameterT & default_value,
138 const rcl_interfaces::msg::ParameterDescriptor & parameter_descriptor)
147 template<
typename ParameterT>
154 std::string normalized_namespace = namespace_.
empty() ?
"" : (namespace_ +
".");
157 [
this, &normalized_namespace](
auto element) {
158 return this->declare_parameter(normalized_namespace + element.first, element.second);
164 template<
typename ParameterT>
174 std::string normalized_namespace = namespace_.
empty() ?
"" : (namespace_ +
".");
177 [
this, &normalized_namespace](
auto element) {
178 return static_cast<ParameterT>(
179 this->declare_parameter(
180 normalized_namespace + element.first,
181 element.second.first,
182 element.second.second)
189 template<
typename ParameterT>
195 parameter = param.
get_value<ParameterT>();
203 template<
typename MapValueT>
210 bool result = node_parameters_->get_parameters_by_prefix(prefix, params);
212 for (
const auto & param : params) {
213 values[param.first] = param.second.get_value<MapValueT>();
220 template<
typename ParameterT>
225 const ParameterT & alternative_value)
const
228 if (!got_parameter) {
229 value = alternative_value;
231 return got_parameter;
235 #endif // RCLCPP_LIFECYCLE__LIFECYCLE_NODE_IMPL_HPP_