rclcpp  master
C++ ROS Client Library API
Public Member Functions | List of all members
rclcpp::Node Class Reference

Node is the single point of entry for creating publishers and subscribers. More...

#include <node.hpp>

Inheritance diagram for rclcpp::Node:
Inheritance graph
[legend]
Collaboration diagram for rclcpp::Node:
Collaboration graph
[legend]

Public Member Functions

 Node (const std::string &node_name, const std::string &namespace_="", bool use_intra_process_comms=false)
 Create a new node with the specified name. More...
 
 Node (const std::string &node_name, const std::string &namespace_, rclcpp::Context::SharedPtr context, const std::vector< std::string > &arguments, const std::vector< Parameter > &initial_parameters, bool use_global_arguments=true, bool use_intra_process_comms=false, bool start_parameter_services=true)
 Create a node based on the node name and a rclcpp::Context. More...
 
virtual ~Node ()
 
const char * get_name () const
 Get the name of the node. More...
 
const char * get_namespace () const
 Get the namespace of the node. More...
 
rclcpp::Logger get_logger () const
 Get the logger of the node. More...
 
rclcpp::callback_group::CallbackGroup::SharedPtr create_callback_group (rclcpp::callback_group::CallbackGroupType group_type)
 Create and return a callback group. More...
 
const std::vector< rclcpp::callback_group::CallbackGroup::WeakPtr > & get_callback_groups () const
 Return the list of callback groups in the node. More...
 
template<typename MessageT , typename Alloc = std::allocator<void>, typename PublisherT = ::rclcpp::Publisher<MessageT, Alloc>>
std::shared_ptr< PublisherT > create_publisher (const std::string &topic_name, size_t qos_history_depth, std::shared_ptr< Alloc > allocator=nullptr)
 Create and return a Publisher. More...
 
template<typename MessageT , typename Alloc = std::allocator<void>, typename PublisherT = ::rclcpp::Publisher<MessageT, Alloc>>
std::shared_ptr< PublisherT > create_publisher (const std::string &topic_name, const rmw_qos_profile_t &qos_profile=rmw_qos_profile_default, std::shared_ptr< Alloc > allocator=nullptr)
 Create and return a Publisher. More...
 
template<typename MessageT , typename CallbackT , typename Alloc = std::allocator<void>, typename SubscriptionT = rclcpp::Subscription< typename rclcpp::subscription_traits::has_message_type<CallbackT>::type, Alloc>>
std::shared_ptr< SubscriptionT > create_subscription (const std::string &topic_name, CallbackT &&callback, const rmw_qos_profile_t &qos_profile=rmw_qos_profile_default, rclcpp::callback_group::CallbackGroup::SharedPtr group=nullptr, bool ignore_local_publications=false, typename rclcpp::message_memory_strategy::MessageMemoryStrategy< typename rclcpp::subscription_traits::has_message_type< CallbackT >::type, Alloc >::SharedPtr msg_mem_strat=nullptr, std::shared_ptr< Alloc > allocator=nullptr)
 Create and return a Subscription. More...
 
template<typename MessageT , typename CallbackT , typename Alloc = std::allocator<void>, typename SubscriptionT = rclcpp::Subscription< typename rclcpp::subscription_traits::has_message_type<CallbackT>::type, Alloc>>
std::shared_ptr< SubscriptionT > create_subscription (const std::string &topic_name, CallbackT &&callback, size_t qos_history_depth, rclcpp::callback_group::CallbackGroup::SharedPtr group=nullptr, bool ignore_local_publications=false, typename rclcpp::message_memory_strategy::MessageMemoryStrategy< typename rclcpp::subscription_traits::has_message_type< CallbackT >::type, Alloc >::SharedPtr msg_mem_strat=nullptr, std::shared_ptr< Alloc > allocator=nullptr)
 Create and return a Subscription. More...
 
template<typename DurationT = std::milli, typename CallbackT >
rclcpp::WallTimer< CallbackT >::SharedPtr create_wall_timer (std::chrono::duration< int64_t, DurationT > period, CallbackT callback, rclcpp::callback_group::CallbackGroup::SharedPtr group=nullptr)
 Create a timer. More...
 
template<typename ServiceT >
rclcpp::Client< ServiceT >::SharedPtr create_client (const std::string &service_name, const rmw_qos_profile_t &qos_profile=rmw_qos_profile_services_default, rclcpp::callback_group::CallbackGroup::SharedPtr group=nullptr)
 
template<typename ServiceT , typename CallbackT >
rclcpp::Service< ServiceT >::SharedPtr create_service (const std::string &service_name, CallbackT &&callback, const rmw_qos_profile_t &qos_profile=rmw_qos_profile_services_default, rclcpp::callback_group::CallbackGroup::SharedPtr group=nullptr)
 
std::vector< rcl_interfaces::msg::SetParametersResult > set_parameters (const std::vector< rclcpp::Parameter > &parameters)
 
rcl_interfaces::msg::SetParametersResult set_parameters_atomically (const std::vector< rclcpp::Parameter > &parameters)
 
template<typename ParameterT >
void set_parameter_if_not_set (const std::string &name, const ParameterT &value)
 
template<typename MapValueT >
void set_parameters_if_not_set (const std::string &name, const std::map< std::string, MapValueT > &values)
 Set a map of parameters with the same prefix. More...
 
std::vector< rclcpp::Parameterget_parameters (const std::vector< std::string > &names) const
 
rclcpp::Parameter get_parameter (const std::string &name) const
 
bool get_parameter (const std::string &name, rclcpp::Parameter &parameter) const
 
template<typename ParameterT >
bool get_parameter (const std::string &name, ParameterT &parameter) const
 Assign the value of the parameter if set into the parameter argument. More...
 
template<typename MapValueT >
bool get_parameters (const std::string &name, std::map< std::string, MapValueT > &values) const
 Assign the value of the map parameter if set into the values argument. More...
 
template<typename ParameterT >
bool get_parameter_or (const std::string &name, ParameterT &value, const ParameterT &alternative_value) const
 Get the parameter value, or the "alternative value" if not set, and assign it to "value". More...
 
template<typename ParameterT >
void get_parameter_or_set (const std::string &name, ParameterT &value, const ParameterT &alternative_value)
 Get the parameter value; if not set, set the "alternative value" and store it in the node. More...
 
std::vector< rcl_interfaces::msg::ParameterDescriptor > describe_parameters (const std::vector< std::string > &names) const
 
std::vector< uint8_t > get_parameter_types (const std::vector< std::string > &names) const
 
rcl_interfaces::msg::ListParametersResult list_parameters (const std::vector< std::string > &prefixes, uint64_t depth) const
 
template<typename CallbackT >
void register_param_change_callback (CallbackT &&callback)
 Register the callback for parameter changes. More...
 
std::vector< std::stringget_node_names () const
 
std::map< std::string, std::vector< std::string > > get_topic_names_and_types () const
 
std::map< std::string, std::vector< std::string > > get_service_names_and_types () const
 
size_t count_publishers (const std::string &topic_name) const
 
size_t count_subscribers (const std::string &topic_name) const
 
rclcpp::Event::SharedPtr get_graph_event ()
 Return a graph event, which will be set anytime a graph change occurs. More...
 
void wait_for_graph_change (rclcpp::Event::SharedPtr event, std::chrono::nanoseconds timeout)
 Wait for a graph event to occur by waiting on an Event to become set. More...
 
rclcpp::Clock::SharedPtr get_clock ()
 
Time now ()
 
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr get_node_base_interface ()
 Return the Node's internal NodeBaseInterface implementation. More...
 
rclcpp::node_interfaces::NodeClockInterface::SharedPtr get_node_clock_interface ()
 Return the Node's internal NodeClockInterface implementation. More...
 
rclcpp::node_interfaces::NodeGraphInterface::SharedPtr get_node_graph_interface ()
 Return the Node's internal NodeGraphInterface implementation. More...
 
rclcpp::node_interfaces::NodeLoggingInterface::SharedPtr get_node_logging_interface ()
 Return the Node's internal NodeLoggingInterface implementation. More...
 
rclcpp::node_interfaces::NodeTimersInterface::SharedPtr get_node_timers_interface ()
 Return the Node's internal NodeTimersInterface implementation. More...
 
rclcpp::node_interfaces::NodeTopicsInterface::SharedPtr get_node_topics_interface ()
 Return the Node's internal NodeTopicsInterface implementation. More...
 
rclcpp::node_interfaces::NodeServicesInterface::SharedPtr get_node_services_interface ()
 Return the Node's internal NodeServicesInterface implementation. More...
 
rclcpp::node_interfaces::NodeWaitablesInterface::SharedPtr get_node_waitables_interface ()
 Return the Node's internal NodeWaitablesInterface implementation. More...
 
rclcpp::node_interfaces::NodeParametersInterface::SharedPtr get_node_parameters_interface ()
 Return the Node's internal NodeParametersInterface implementation. More...
 
rclcpp::node_interfaces::NodeTimeSourceInterface::SharedPtr get_node_time_source_interface ()
 Return the Node's internal NodeParametersInterface implementation. More...
 
template<typename ServiceT >
Client< ServiceT >::SharedPtr create_client (const std::string &service_name, const rmw_qos_profile_t &qos_profile, rclcpp::callback_group::CallbackGroup::SharedPtr group)
 
- Public Member Functions inherited from std::enable_shared_from_this< Node >
enable_shared_from_this (T... args)
 
operator= (T... args)
 
shared_from_this (T... args)
 
~enable_shared_from_this (T... args)
 

Detailed Description

Node is the single point of entry for creating publishers and subscribers.

Constructor & Destructor Documentation

◆ Node() [1/2]

rclcpp::Node::Node ( const std::string node_name,
const std::string namespace_ = "",
bool  use_intra_process_comms = false 
)
explicit

Create a new node with the specified name.

Parameters
[in]node_nameName of the node.
[in]namespace_Namespace of the node.
[in]use_intra_process_commsTrue to use the optimized intra-process communication pipeline to pass messages between nodes in the same process using shared memory.

◆ Node() [2/2]

rclcpp::Node::Node ( const std::string node_name,
const std::string namespace_,
rclcpp::Context::SharedPtr  context,
const std::vector< std::string > &  arguments,
const std::vector< Parameter > &  initial_parameters,
bool  use_global_arguments = true,
bool  use_intra_process_comms = false,
bool  start_parameter_services = true 
)

Create a node based on the node name and a rclcpp::Context.

Parameters
[in]node_nameName of the node.
[in]namespace_Namespace of the node.
[in]contextThe context for the node (usually represents the state of a process).
[in]argumentsCommand line arguments that should apply only to this node.
[in]initial_parametersa list of initial values for parameters on the node. This can be used to provide remapping rules that only affect one instance.
[in]use_global_argumentsFalse to prevent node using arguments passed to the process.
[in]use_intra_process_commsTrue to use the optimized intra-process communication pipeline to pass messages between nodes in the same process using shared memory.
[in]start_parameter_servicesTrue to setup ROS interfaces for accessing parameters in the node.

◆ ~Node()

virtual rclcpp::Node::~Node ( )
virtual

Member Function Documentation

◆ get_name()

const char* rclcpp::Node::get_name ( ) const

Get the name of the node.

Returns
The name of the node.

◆ get_namespace()

const char* rclcpp::Node::get_namespace ( ) const

Get the namespace of the node.

Returns
The namespace of the node.

◆ get_logger()

rclcpp::Logger rclcpp::Node::get_logger ( ) const

Get the logger of the node.

Returns
The logger of the node.

◆ create_callback_group()

rclcpp::callback_group::CallbackGroup::SharedPtr rclcpp::Node::create_callback_group ( rclcpp::callback_group::CallbackGroupType  group_type)

Create and return a callback group.

◆ get_callback_groups()

const std::vector<rclcpp::callback_group::CallbackGroup::WeakPtr>& rclcpp::Node::get_callback_groups ( ) const

Return the list of callback groups in the node.

◆ create_publisher() [1/2]

template<typename MessageT , typename Alloc , typename PublisherT >
std::shared_ptr< PublisherT > rclcpp::Node::create_publisher ( const std::string topic_name,
size_t  qos_history_depth,
std::shared_ptr< Alloc >  allocator = nullptr 
)

Create and return a Publisher.

Parameters
[in]topic_nameThe topic for this publisher to publish on.
[in]qos_history_depthThe depth of the publisher message queue.
[in]allocatorOptional custom allocator.
Returns
Shared pointer to the created publisher.

◆ create_publisher() [2/2]

template<typename MessageT , typename Alloc , typename PublisherT >
std::shared_ptr< PublisherT > rclcpp::Node::create_publisher ( const std::string topic_name,
const rmw_qos_profile_t qos_profile = rmw_qos_profile_default,
std::shared_ptr< Alloc >  allocator = nullptr 
)

Create and return a Publisher.

Parameters
[in]topic_nameThe topic for this publisher to publish on.
[in]qos_profileThe quality of service profile to pass on to the rmw implementation.
[in]allocatorOptional custom allocator.
Returns
Shared pointer to the created publisher.

◆ create_subscription() [1/2]

template<typename MessageT , typename CallbackT , typename Alloc , typename SubscriptionT >
std::shared_ptr< SubscriptionT > rclcpp::Node::create_subscription ( const std::string topic_name,
CallbackT &&  callback,
const rmw_qos_profile_t qos_profile = rmw_qos_profile_default,
rclcpp::callback_group::CallbackGroup::SharedPtr  group = nullptr,
bool  ignore_local_publications = false,
typename rclcpp::message_memory_strategy::MessageMemoryStrategy< typename rclcpp::subscription_traits::has_message_type< CallbackT >::type, Alloc >::SharedPtr  msg_mem_strat = nullptr,
std::shared_ptr< Alloc >  allocator = nullptr 
)

Create and return a Subscription.

Parameters
[in]topic_nameThe topic to subscribe on.
[in]callbackThe user-defined callback function.
[in]qos_profileThe quality of service profile to pass on to the rmw implementation.
[in]groupThe callback group for this subscription. NULL for no callback group.
[in]ignore_local_publicationsTrue to ignore local publications.
[in]msg_mem_stratThe message memory strategy to use for allocating messages.
[in]allocatorOptional custom allocator.
Returns
Shared pointer to the created subscription.

◆ create_subscription() [2/2]

template<typename MessageT , typename CallbackT , typename Alloc , typename SubscriptionT >
std::shared_ptr< SubscriptionT > rclcpp::Node::create_subscription ( const std::string topic_name,
CallbackT &&  callback,
size_t  qos_history_depth,
rclcpp::callback_group::CallbackGroup::SharedPtr  group = nullptr,
bool  ignore_local_publications = false,
typename rclcpp::message_memory_strategy::MessageMemoryStrategy< typename rclcpp::subscription_traits::has_message_type< CallbackT >::type, Alloc >::SharedPtr  msg_mem_strat = nullptr,
std::shared_ptr< Alloc >  allocator = nullptr 
)

Create and return a Subscription.

Parameters
[in]topic_nameThe topic to subscribe on.
[in]qos_history_depthThe depth of the subscription's incoming message queue.
[in]callbackThe user-defined callback function.
[in]groupThe callback group for this subscription. NULL for no callback group.
[in]ignore_local_publicationsTrue to ignore local publications.
[in]msg_mem_stratThe message memory strategy to use for allocating messages.
[in]allocatorOptional custom allocator.
Returns
Shared pointer to the created subscription.

◆ create_wall_timer()

template<typename DurationT , typename CallbackT >
rclcpp::WallTimer< CallbackT >::SharedPtr rclcpp::Node::create_wall_timer ( std::chrono::duration< int64_t, DurationT >  period,
CallbackT  callback,
rclcpp::callback_group::CallbackGroup::SharedPtr  group = nullptr 
)

Create a timer.

Parameters
[in]periodTime interval between triggers of the callback.
[in]callbackUser-defined callback function.
[in]groupCallback group to execute this timer's callback in.

◆ create_client() [1/2]

template<typename ServiceT >
rclcpp::Client<ServiceT>::SharedPtr rclcpp::Node::create_client ( const std::string service_name,
const rmw_qos_profile_t qos_profile = rmw_qos_profile_services_default,
rclcpp::callback_group::CallbackGroup::SharedPtr  group = nullptr 
)

◆ create_service()

template<typename ServiceT , typename CallbackT >
rclcpp::Service< ServiceT >::SharedPtr rclcpp::Node::create_service ( const std::string service_name,
CallbackT &&  callback,
const rmw_qos_profile_t qos_profile = rmw_qos_profile_services_default,
rclcpp::callback_group::CallbackGroup::SharedPtr  group = nullptr 
)

◆ set_parameters()

std::vector<rcl_interfaces::msg::SetParametersResult> rclcpp::Node::set_parameters ( const std::vector< rclcpp::Parameter > &  parameters)

◆ set_parameters_atomically()

rcl_interfaces::msg::SetParametersResult rclcpp::Node::set_parameters_atomically ( const std::vector< rclcpp::Parameter > &  parameters)

◆ set_parameter_if_not_set()

template<typename ParameterT >
void rclcpp::Node::set_parameter_if_not_set ( const std::string name,
const ParameterT &  value 
)

◆ set_parameters_if_not_set()

template<typename MapValueT >
void rclcpp::Node::set_parameters_if_not_set ( const std::string name,
const std::map< std::string, MapValueT > &  values 
)

Set a map of parameters with the same prefix.

For each key in the map, a parameter with a name of "name.key" will be set to the value in the map.

Parameters
[in]nameThe prefix of the parameters to set.
[in]valuesThe parameters to set in the given prefix.

◆ get_parameters() [1/2]

std::vector<rclcpp::Parameter> rclcpp::Node::get_parameters ( const std::vector< std::string > &  names) const

◆ get_parameter() [1/3]

rclcpp::Parameter rclcpp::Node::get_parameter ( const std::string name) const

◆ get_parameter() [2/3]

bool rclcpp::Node::get_parameter ( const std::string name,
rclcpp::Parameter parameter 
) const

◆ get_parameter() [3/3]

template<typename ParameterT >
bool rclcpp::Node::get_parameter ( const std::string name,
ParameterT &  parameter 
) const

Assign the value of the parameter if set into the parameter argument.

If the parameter was not set, then the "parameter" argument is never assigned a value.

Parameters
[in]nameThe name of the parameter to get.
[out]parameterThe output where the value of the parameter should be assigned.
Returns
true if the parameter was set, false otherwise

◆ get_parameters() [2/2]

template<typename MapValueT >
bool rclcpp::Node::get_parameters ( const std::string name,
std::map< std::string, MapValueT > &  values 
) const

Assign the value of the map parameter if set into the values argument.

Parameter names that are part of a map are of the form "name.member". This API gets all parameters that begin with "name", storing them into the map with the name of the parameter and their value. If there are no members in the named map, then the "values" argument is not changed.

Parameters
[in]nameThe prefix of the parameters to get.
[out]valuesThe map of output values, with one std::string,MapValueT per parameter.
Returns
true if values was changed, false otherwise

◆ get_parameter_or()

template<typename ParameterT >
bool rclcpp::Node::get_parameter_or ( const std::string name,
ParameterT &  value,
const ParameterT &  alternative_value 
) const

Get the parameter value, or the "alternative value" if not set, and assign it to "value".

If the parameter was not set, then the "value" argument is assigned the "alternative_value". In all cases, the parameter remains not set after this function is called.

Parameters
[in]nameThe name of the parameter to get.
[out]valueThe output where the value of the parameter should be assigned.
[in]alternative_valueValue to be stored in output if the parameter was not set.
Returns
true if the parameter was set, false otherwise

◆ get_parameter_or_set()

template<typename ParameterT >
void rclcpp::Node::get_parameter_or_set ( const std::string name,
ParameterT &  value,
const ParameterT &  alternative_value 
)

Get the parameter value; if not set, set the "alternative value" and store it in the node.

If the parameter is set, then the "value" argument is assigned the value in the parameter. If the parameter is not set, then the "value" argument is assigned the "alternative_value", and the parameter is set to the "alternative_value" on the node.

Parameters
[in]nameThe name of the parameter to get.
[out]valueThe output where the value of the parameter should be assigned.
[in]alternative_valueValue to be stored in output and parameter if the parameter was not set.

◆ describe_parameters()

std::vector<rcl_interfaces::msg::ParameterDescriptor> rclcpp::Node::describe_parameters ( const std::vector< std::string > &  names) const

◆ get_parameter_types()

std::vector<uint8_t> rclcpp::Node::get_parameter_types ( const std::vector< std::string > &  names) const

◆ list_parameters()

rcl_interfaces::msg::ListParametersResult rclcpp::Node::list_parameters ( const std::vector< std::string > &  prefixes,
uint64_t  depth 
) const

◆ register_param_change_callback()

template<typename CallbackT >
void rclcpp::Node::register_param_change_callback ( CallbackT &&  callback)

Register the callback for parameter changes.

Parameters
[in]callbackUser defined callback function. It is expected to atomically set parameters.
Note
Repeated invocations of this function will overwrite previous callbacks

◆ get_node_names()

std::vector<std::string> rclcpp::Node::get_node_names ( ) const

◆ get_topic_names_and_types()

std::map<std::string, std::vector<std::string> > rclcpp::Node::get_topic_names_and_types ( ) const

◆ get_service_names_and_types()

std::map<std::string, std::vector<std::string> > rclcpp::Node::get_service_names_and_types ( ) const

◆ count_publishers()

size_t rclcpp::Node::count_publishers ( const std::string topic_name) const

◆ count_subscribers()

size_t rclcpp::Node::count_subscribers ( const std::string topic_name) const

◆ get_graph_event()

rclcpp::Event::SharedPtr rclcpp::Node::get_graph_event ( )

Return a graph event, which will be set anytime a graph change occurs.

◆ wait_for_graph_change()

void rclcpp::Node::wait_for_graph_change ( rclcpp::Event::SharedPtr  event,
std::chrono::nanoseconds  timeout 
)

Wait for a graph event to occur by waiting on an Event to become set.

The given Event must be acquire through the get_graph_event() method.

Exceptions
InvalidEventErrorif the given event is nullptr
EventNotRegisteredErrorif the given event was not acquired with get_graph_event().

◆ get_clock()

rclcpp::Clock::SharedPtr rclcpp::Node::get_clock ( )

◆ now()

Time rclcpp::Node::now ( )

◆ get_node_base_interface()

rclcpp::node_interfaces::NodeBaseInterface::SharedPtr rclcpp::Node::get_node_base_interface ( )

Return the Node's internal NodeBaseInterface implementation.

◆ get_node_clock_interface()

rclcpp::node_interfaces::NodeClockInterface::SharedPtr rclcpp::Node::get_node_clock_interface ( )

Return the Node's internal NodeClockInterface implementation.

◆ get_node_graph_interface()

rclcpp::node_interfaces::NodeGraphInterface::SharedPtr rclcpp::Node::get_node_graph_interface ( )

Return the Node's internal NodeGraphInterface implementation.

◆ get_node_logging_interface()

rclcpp::node_interfaces::NodeLoggingInterface::SharedPtr rclcpp::Node::get_node_logging_interface ( )

Return the Node's internal NodeLoggingInterface implementation.

◆ get_node_timers_interface()

rclcpp::node_interfaces::NodeTimersInterface::SharedPtr rclcpp::Node::get_node_timers_interface ( )

Return the Node's internal NodeTimersInterface implementation.

◆ get_node_topics_interface()

rclcpp::node_interfaces::NodeTopicsInterface::SharedPtr rclcpp::Node::get_node_topics_interface ( )

Return the Node's internal NodeTopicsInterface implementation.

◆ get_node_services_interface()

rclcpp::node_interfaces::NodeServicesInterface::SharedPtr rclcpp::Node::get_node_services_interface ( )

Return the Node's internal NodeServicesInterface implementation.

◆ get_node_waitables_interface()

rclcpp::node_interfaces::NodeWaitablesInterface::SharedPtr rclcpp::Node::get_node_waitables_interface ( )

Return the Node's internal NodeWaitablesInterface implementation.

◆ get_node_parameters_interface()

rclcpp::node_interfaces::NodeParametersInterface::SharedPtr rclcpp::Node::get_node_parameters_interface ( )

Return the Node's internal NodeParametersInterface implementation.

◆ get_node_time_source_interface()

rclcpp::node_interfaces::NodeTimeSourceInterface::SharedPtr rclcpp::Node::get_node_time_source_interface ( )

Return the Node's internal NodeParametersInterface implementation.

◆ create_client() [2/2]

template<typename ServiceT >
Client<ServiceT>::SharedPtr rclcpp::Node::create_client ( const std::string service_name,
const rmw_qos_profile_t qos_profile,
rclcpp::callback_group::CallbackGroup::SharedPtr  group 
)

The documentation for this class was generated from the following files: