6 #include "rclcpp/rclcpp.hpp" 8 #include <experimental/optional> 15 using ::std::function;
16 using ::std::make_shared;
18 using ::std::experimental::optional;
24 using Publisher = typename ::rclcpp::Publisher<T>::SharedPtr;
27 using Subscription = typename ::rclcpp::Subscription<T>::SharedPtr;
33 return nh->node()->create_publisher<T>(topic_name, queue_size);
36 template <
typename T,
typename C,
typename M>
38 int queue_size,
void (C::*callback)(M), C*
object)
40 return nh->node()->create_subscription<T>(topic_name, queue_size,
41 ::std::bind(callback,
object, ::std::placeholders::_1));
46 return ::std::string(nh->get_base_interface()->get_name());
52 return nh->node()->get_parameter(name, parameter);
58 return nh->node()->get_parameter(name, parameter);
68 #include <rcpputils/asserts.hpp> 69 #define ENSENSO_ASSERT(cond) rcpputils::assert_true(cond) 72 #include <boost/optional.hpp> 73 #include <boost/bind.hpp> 74 #include <boost/function.hpp> 75 #include <boost/make_shared.hpp> 84 using boost::function;
85 using boost::make_shared;
86 using boost::optional;
91 template <
typename T,
typename... Args>
94 return ::std::unique_ptr<T>(
new T(::std::forward<Args>(
args)...));
100 template <
typename T>
105 template <
typename T>
114 template <
typename T>
117 template <
typename T>
120 template <
typename T>
124 return ensenso::std::make_unique< ::ros::Publisher>(nh.advertise<T>(topic_name, queue_size));
127 template <
typename T,
typename C,
typename M>
129 int queue_size,
void (C::*callback)(M), C*
object)
131 return nh.subscribe(topic_name, queue_size, callback,
object);
137 return ::ros::this_node::getName();
140 template <
typename T>
143 return nh.getParam(name, parameter);
146 template <
typename T>
149 return nh.getParam(name, parameter);
159 #define ENSENSO_ASSERT(cond) ROS_ASSERT(cond) ::std::unique_ptr< T > make_unique(Args &&... args)
::ros::Subscriber Subscription
ensenso::ros::Publisher< T > create_publisher(ensenso::ros::NodeHandle &nh, ::std::string const &topic_name, int queue_size)
::std::shared_ptr< T > shared_ptr
::ros::NodeHandle NodeHandle
bool get_parameter(NodeHandle &nh, const ::std::string &name, T ¶meter)
::std::unique_ptr< ::ros::Publisher > Publisher
std::shared_ptr< T > to_std(typename boost::shared_ptr< T > const &p)
inline ::std::string get_node_name(NodeHandle &nh)
ensenso::ros::Subscription< T > create_subscription(ensenso::ros::NodeHandle &nh, ::std::string const &topic_name, int queue_size, void(C::*callback)(M), C *object)
void do_release(typename boost::shared_ptr< T > const &, T *)