10 #ifndef ENSENSO_CAMERA__VISIBILITY_CONTROL_H_ 11 #define ENSENSO_CAMERA__VISIBILITY_CONTROL_H_ 20 #if defined _WIN32 || defined __CYGWIN__ 22 #define ENSENSO_CAMERA_EXPORT __attribute__((dllexport)) 23 #define ENSENSO_CAMERA_IMPORT __attribute__((dllimport)) 25 #define ENSENSO_CAMERA_EXPORT __declspec(dllexport) 26 #define ENSENSO_CAMERA_IMPORT __declspec(dllimport) 28 #ifdef ENSENSO_CAMERA_BUILDING_DLL 29 #define ENSENSO_CAMERA_PUBLIC ENSENSO_CAMERA_EXPORT 31 #define ENSENSO_CAMERA_PUBLIC ENSENSO_CAMERA_IMPORT 33 #define ENSENSO_CAMERA_PUBLIC_TYPE ENSENSO_CAMERA_PUBLIC 34 #define ENSENSO_CAMERA_LOCAL 36 #define ENSENSO_CAMERA_EXPORT __attribute__((visibility("default"))) 37 #define ENSENSO_CAMERA_IMPORT 39 #define ENSENSO_CAMERA_PUBLIC __attribute__((visibility("default"))) 40 #define ENSENSO_CAMERA_LOCAL __attribute__((visibility("hidden"))) 42 #define ENSENSO_CAMERA_PUBLIC 43 #define ENSENSO_CAMERA_LOCAL 45 #define ENSENSO_CAMERA_PUBLIC_TYPE 52 #endif // ENSENSO_CAMERA__VISIBILITY_CONTROL_H_ 60 #include "rclcpp_components/register_node_macro.hpp" 62 #define GENERATE_NODE_CLASS(ClassName) \ 63 class ClassName##Node : public rclcpp::Node \ 66 ENSENSO_CAMERA_PUBLIC \ 67 explicit ClassName##Node(rclcpp::NodeOptions const& options = rclcpp::NodeOptions()); \ 71 std::string cameraType; \ 72 std::unique_ptr<ClassName> camera; \ 75 #define GENERATE_NODE_CLASS_IMPL(ClassName, CameraType) \ 76 ClassName##Node::ClassName##Node(rclcpp::NodeOptions const& options) \ 77 : Node(#ClassName "Node", options), cameraType(CameraType) \ 79 DECLARE_NODE_PARAMETERS(this); \ 81 auto nh = create_node_handle(this); \ 82 ensenso::ros::NodeHandleWrapper nhw = ensenso::ros::NodeHandleWrapper(std::move(nh)); \ 84 camera_node::initNxLib(nhw.getPrivateNodeHandle()); \ 86 camera = camera_node::initCamera<ClassName>(nhw, cameraType); \ 89 ClassName##Node::~ClassName##Node() \ 94 #define NODE_PUBLIC_INTERFACE(ClassName) \ 95 ENSENSO_CAMERA_PUBLIC \ 96 explicit ClassName##Node(rclcpp::NodeOptions const& options = rclcpp::NodeOptions()); \ 100 #define NODE_CTOR_IMPL_HEADER(ClassName) \ 101 ClassName##Node::ClassName##Node(rclcpp::NodeOptions const& options) : Node(#ClassName "Node", options), 103 #define NODE_DTOR_IMPL_HEADER(ClassName) ClassName##Node::~ClassName##Node() 105 #define NODE_ON_INIT_IMPL_HEADER(ClassName) void ClassName##Node::onInit() 107 #define SINGLE_NODE_CLASS(ClassName) class ClassName : public rclcpp::Node 108 #define SINGLE_NODE_CTOR(ClassName, NodeName) ClassName() : Node(NodeName) 110 #define REGISTER_NODE(ClassName) RCLCPP_COMPONENTS_REGISTER_NODE(ClassName##Node) 112 #define DECLARE_NODE_PARAMETERS(node) \ 113 node->declare_parameter<std::string>("serial", ""); \ 114 node->declare_parameter<std::string>("settings", ""); \ 115 node->declare_parameter<std::string>("file_camera_path", ""); \ 116 node->declare_parameter<bool>("fixed", false); \ 117 node->declare_parameter<int>("threads", -1); \ 118 node->declare_parameter<std::string>("camera_frame", ""); \ 119 node->declare_parameter<std::string>("target_frame", ""); \ 120 node->declare_parameter<std::string>("link_frame", ""); \ 121 node->declare_parameter<std::string>("robot_frame", ""); \ 122 node->declare_parameter<std::string>("wrist_frame", ""); \ 123 node->declare_parameter<int>("tcp_port", -1); \ 124 node->declare_parameter<bool>("wait_for_camera", false); \ 125 node->declare_parameter<std::string>("objects_file", ""); \ 126 node->declare_parameter<std::string>("objects_frame", ""); \ 127 node->declare_parameter<std::string>("visualization_marker_topic", ""); \ 128 node->declare_parameter<double>("visualization_marker_rate", 1.0); 134 struct NodeHandleWrapper
155 #define CREATE_NODE_HANDLE_WRAPPER(name) \ 156 rclcpp::Node::SharedPtr name##_ = shared_from_this(); \ 157 ensenso::ros::NodeHandleWrapper name = ensenso::ros::NodeHandleWrapper(std::move(name##_)); 163 #define GENERATE_NODE_CLASS(ClassName) \ 164 class ClassName##Nodelet : public nodelet::Nodelet \ 167 ClassName##Nodelet(); \ 168 ~ClassName##Nodelet(); \ 169 void onInit() override; \ 172 std::string cameraType; \ 173 std::unique_ptr<ClassName> camera; \ 176 #define GENERATE_NODE_CLASS_IMPL(ClassName, CameraType) \ 177 ClassName##Nodelet::ClassName##Nodelet() : cameraType(CameraType) \ 181 ClassName##Nodelet::~ClassName##Nodelet() \ 186 void ClassName##Nodelet::onInit() \ 188 CREATE_NODE_HANDLE_WRAPPER(nh) \ 189 camera_node::initNxLib(nh.getPrivateNodeHandle()); \ 190 camera = camera_node::initCamera<ClassName>(nh, cameraType); \ 193 #define NODE_PUBLIC_INTERFACE(ClassName) \ 195 ClassName##Nodelet(); \ 196 ~ClassName##Nodelet(); \ 197 void onInit() override 199 #define NODE_CTOR_IMPL_HEADER(ClassName) ClassName##Nodelet::ClassName##Nodelet() : 201 #define NODE_DTOR_IMPL_HEADER(ClassName) ClassName##Nodelet::~ClassName##Nodelet() 203 #define NODE_ON_INIT_IMPL_HEADER(ClassName) void ClassName##Nodelet::onInit() 205 #define SINGLE_NODE_CLASS(ClassName) class ClassName 206 #define SINGLE_NODE_CTOR(ClassName, NodeName) ClassName() 208 #define REGISTER_NODE(ClassName) PLUGINLIB_EXPORT_CLASS(ClassName##Nodelet, nodelet::Nodelet) 236 #define CREATE_NODE_HANDLE_WRAPPER(name) \ 237 ensenso::ros::NodeHandleWrapper name = ensenso::ros::NodeHandleWrapper(getNodeHandle(), getPrivateNodeHandle()); NodeHandleWrapper(NodeHandle &nh, NodeHandle &nhPrivate)
NodeHandle & getNodeHandle()
NodeHandle & getPrivateNodeHandle()
::ros::NodeHandle NodeHandle
void move(std::vector< T > &a, std::vector< T > &b)