19#include <carma_planning_msgs/srv/compute_plan_cost.hpp>
20#include <carma_planning_msgs/msg/maneuver_parameters.hpp>
27 cost_system_sc_ = nh->create_client<carma_planning_msgs::srv::ComputePlanCost>(
"compute_plan_cost");
34 throw std::logic_error(
"Attempt to use CostSystemCostFunction before initialization.");
37 double total_cost = std::numeric_limits<double>::infinity();
39 auto service_message = std::make_shared<carma_planning_msgs::srv::ComputePlanCost::Request>();
40 service_message->maneuver_plan = plan;
44 auto future_status = resp.wait_for(std::chrono::milliseconds(500));
46 if (future_status == std::future_status::ready){
47 total_cost = resp.get()->plan_cost;
49 RCLCPP_WARN_STREAM(rclcpp::get_logger(
"arbitrator"),
"Unable to get cost for plan from CostPluginSystem due to service call failure.");
void init(std::shared_ptr< carma_ros2_utils::CarmaLifecycleNode > nh)
carma_ros2_utils::ClientPtr< carma_planning_msgs::srv::ComputePlanCost > cost_system_sc_
double compute_cost_per_unit_distance(const carma_planning_msgs::msg::ManeuverPlan &plan)
Compute the unit cost over distance of a given maneuver plan.
double compute_total_cost(const carma_planning_msgs::msg::ManeuverPlan &plan)
Compute the unit cost over distance of a given maneuver plan.
double get_plan_end_distance(const carma_planning_msgs::msg::ManeuverPlan &)
Get the end distance of the first maneuver in the plan.
double get_plan_start_distance(const carma_planning_msgs::msg::ManeuverPlan &)
Get the start distance of the first maneuver in the plan.