15 #ifndef NAV2_COSTMAP_2D__FOOTPRINT_SUBSCRIBER_HPP_
16 #define NAV2_COSTMAP_2D__FOOTPRINT_SUBSCRIBER_HPP_
22 #include "rclcpp/rclcpp.hpp"
23 #include "nav2_costmap_2d/footprint.hpp"
24 #include "nav2_ros_common/lifecycle_node.hpp"
25 #include "nav2_ros_common/tf2_factories.hpp"
26 #include "nav2_util/robot_utils.hpp"
41 template<
typename NodeT>
44 const std::string & topic_name,
45 nav2::TransformBuffer & tf,
46 std::string robot_base_frame =
"base_link",
47 double transform_tolerance = 0.1)
49 robot_base_frame_(robot_base_frame),
50 transform_tolerance_(transform_tolerance)
54 footprint_sub_ = nav2::interfaces::create_subscription<geometry_msgs::msg::PolygonStamped>(
72 std::vector<geometry_msgs::msg::Point> & footprint,
73 std_msgs::msg::Header & footprint_header);
83 std::vector<geometry_msgs::msg::Point> & footprint,
84 std_msgs::msg::Header & footprint_header);
90 void footprint_callback(
const geometry_msgs::msg::PolygonStamped::ConstSharedPtr & msg);
92 nav2::TransformBuffer & tf_;
93 std::string robot_base_frame_;
94 double transform_tolerance_;
95 std::atomic_bool footprint_received_{
false};
96 std::atomic<geometry_msgs::msg::PolygonStamped::ConstSharedPtr> footprint_;
97 nav2::Subscription<geometry_msgs::msg::PolygonStamped>::SharedPtr footprint_sub_;