18 #include "nav2_route/plugins/edge_cost_functions/semantic_scorer.hpp"
19 #include "nav2_ros_common/tf2_factories.hpp"
25 const nav2::LifecycleNode::SharedPtr node,
26 const nav2::TransformBuffer::SharedPtr,
27 std::shared_ptr<nav2_costmap_2d::CostmapSubscriber>,
28 const std::string & name)
30 RCLCPP_INFO(node->get_logger(),
"Configuring semantic scorer.");
34 std::vector<std::string> classes = node->declare_or_get_parameter(
35 getName() +
".semantic_classes", std::vector<std::string>{});
36 for (
auto & cl : classes) {
37 const double cost = node->declare_or_get_parameter<
double>(
39 semantic_info_[cl] =
static_cast<float>(cost);
44 key_ = node->declare_or_get_parameter(
45 getName() +
".semantic_key", std::string(
"class"));
48 weight_ =
static_cast<float>(
49 node->declare_or_get_parameter(
getName() +
".weight", 1.0));
54 for (
auto it = mdata.data.cbegin(); it != mdata.data.cend(); ++it) {
55 if (
auto sem = semantic_info_.find(it->first); sem != semantic_info_.end()) {
64 cl = mdata.getValue<std::string>(key_, cl);
65 if (
auto sem = semantic_info_.find(cl); sem != semantic_info_.end()) {
73 const EdgeType & ,
float & cost)
76 Metadata & node_mdata = edge->end->metadata;
77 Metadata & edge_mdata = edge->metadata;
89 cost = weight_ *
score;
100 #include "pluginlib/class_list_macros.hpp"
A plugin interface to score edges during graph search to modify the lowest cost path (e....
Scores an edge based on arbitrary graph semantic data such as set priority/danger levels or regional ...
void metadataValueScorer(Metadata &mdata, float &score)
Scores graph object based on metadata's semantic value at key.
std::string getName() override
Get name of the plugin for parameter scope mapping.
void configure(const nav2::LifecycleNode::SharedPtr node, const nav2::TransformBuffer::SharedPtr tf_buffer, std::shared_ptr< nav2_costmap_2d::CostmapSubscriber > costmap_subscriber, const std::string &name) override
Configure.
void metadataKeyScorer(Metadata &mdata, float &score)
Scores graph object based on metadata's key values.
bool score(const EdgePtr edge, const RouteRequest &route_request, const EdgeType &edge_type, float &cost) override
Main scoring plugin API.
An object representing edges between nodes.
An object to store salient features of the route request including its start and goal node ids,...