#pragma once #include #include #include #include "rclcpp/rclcpp.hpp" #include "gazebo_msgs/srv/spawn_entity.hpp" #include "cyberdog_marker/srv/place_marker.hpp" namespace cyberdog { namespace marker { class MarkerService : public rclcpp::Node { public: explicit MarkerService(const rclcpp::NodeOptions & options = rclcpp::NodeOptions()); ~MarkerService() = default; private: void handle_place_marker( const std::shared_ptr request, std::shared_ptr response); std::string generate_marker_sdf(const std::string & color, double radius = 0.05); rclcpp::Service::SharedPtr place_marker_service_; rclcpp::Client::SharedPtr spawn_entity_client_; int marker_count_; }; } // namespace marker } // namespace cyberdog