15 #ifndef SPINNAKER_CAMERA_NODES__SPINNAKER_CAMERA_NODE_HPP_
16 #define SPINNAKER_CAMERA_NODES__SPINNAKER_CAMERA_NODE_HPP_
18 #include <rclcpp/rclcpp.hpp>
19 #include <rclcpp/publisher.hpp>
20 #include <sensor_msgs/msg/image.hpp>
42 const rclcpp::NodeOptions & node_options);
49 SPINNAKER_CAMERA_NODES_LOCAL
void publish_image(
50 std::uint32_t camera_index,
51 std::unique_ptr<sensor_msgs::msg::Image> image);
58 SPINNAKER_CAMERA_NODES_LOCAL
static std::vector<ProtectedPublisher> create_publishers(
59 ::rclcpp::Node * node,
60 size_t number_of_cameras,
61 bool use_publisher_per_camera);
63 std::unique_ptr<spinnaker::SystemWrapper> m_spinnaker_wrapper{};
64 std::vector<ProtectedPublisher> m_publishers{};
65 bool m_use_publisher_per_camera{};
70 using PublisherT = ::rclcpp::Publisher<::sensor_msgs::msg::Image>;
76 void publish(std::unique_ptr<sensor_msgs::msg::Image> image);
79 std::mutex m_publish_mutex{};
80 PublisherT::SharedPtr m_publisher{};
87 #endif // SPINNAKER_CAMERA_NODES__SPINNAKER_CAMERA_NODE_HPP_