17#ifndef __ARBITRATOR_INCLUDE_CAPABILITIES_INTERFACE_HPP__
18#define __ARBITRATOR_INCLUDE_CAPABILITIES_INTERFACE_HPP__
20#include <rclcpp/rclcpp.hpp>
21#include <carma_ros2_utils/carma_lifecycle_node.hpp>
24#include <unordered_set>
26#include <carma_planning_msgs/srv/plugin_list.hpp>
27#include <carma_planning_msgs/srv/get_plugin_api.hpp>
28#include <carma_planning_msgs/srv/plan_maneuvers.hpp>
46 sc_s_ =
nh_->create_client<carma_planning_msgs::srv::GetPluginApi>(
"plugins/get_strategic_plugins_by_capability");
77 template<
typename MSrvReq,
typename MSrvRes>
84 std::shared_ptr<carma_ros2_utils::CarmaLifecycleNode>
nh_;
87 carma_ros2_utils::ClientPtr<carma_planning_msgs::srv::GetPluginApi>
sc_s_;
96#include "capabilities_interface.tpp"
Generic interface for interacting with Plugins via their capabilities instead of directly by their to...
static const std::string STRATEGIC_PLAN_CAPABILITY
std::shared_ptr< carma_ros2_utils::CarmaLifecycleNode > nh_
carma_ros2_utils::ClientPtr< carma_planning_msgs::srv::GetPluginApi > sc_s_
std::map< std::string, std::shared_ptr< MSrvRes > > multiplex_service_call_for_capability(const std::string &query_string, std::shared_ptr< MSrvReq > msg)
Template function for calling all nodes which respond to a service associated with a particular capab...
std::unordered_set< std::string > capabilities_
std::unordered_map< std::string, carma_ros2_utils::ClientPtr< carma_planning_msgs::srv::PlanManeuvers > > registered_strategic_plugins_
std::vector< std::string > get_topics_for_capability(const std::string &query_string)
Initialize the Capabilities interface by querying the Health Monitor node and processing the plugins ...
CapabilitiesInterface(std::shared_ptr< carma_ros2_utils::CarmaLifecycleNode > nh)
Constructor for Capabilities interface.