35 #ifndef DWB_CORE__DWB_LOCAL_PLANNER_HPP_
36 #define DWB_CORE__DWB_LOCAL_PLANNER_HPP_
42 #include "nav2_core/controller.hpp"
43 #include "nav2_core/goal_checker.hpp"
44 #include "dwb_core/publisher.hpp"
45 #include "dwb_core/trajectory_critic.hpp"
46 #include "dwb_core/trajectory_generator.hpp"
47 #include "geometry_msgs/msg/pose_stamped.hpp"
48 #include "nav_2d_msgs/msg/twist2_d_stamped.hpp"
49 #include "rclcpp/rclcpp.hpp"
50 #include "rclcpp_lifecycle/lifecycle_node.hpp"
51 #include "pluginlib/class_loader.hpp"
52 #include "pluginlib/class_list_macros.hpp"
53 #include "nav2_ros_common/tf2_factories.hpp"
71 const nav2::LifecycleNode::WeakPtr & parent,
72 std::string name, nav2::TransformBuffer::SharedPtr tf,
73 std::shared_ptr<nav2_costmap_2d::Costmap2DROS> costmap_ros)
override;
96 void newPathReceived(
const nav_msgs::msg::Path & raw_global_path)
override;
114 const geometry_msgs::msg::PoseStamped & pose,
115 const geometry_msgs::msg::Twist & velocity,
117 const nav_msgs::msg::Path & transformed_global_plan,
118 const geometry_msgs::msg::PoseStamped & global_goal)
override;
132 const dwb_msgs::msg::Trajectory2D & traj,
133 double best_score = -1);
150 const geometry_msgs::msg::PoseStamped & pose,
151 const nav_2d_msgs::msg::Twist2D & velocity,
152 std::shared_ptr<dwb_msgs::msg::LocalPlanEvaluation> & results,
153 const nav_msgs::msg::Path & transformed_global_plan,
154 const geometry_msgs::msg::PoseStamped & global_goal);
163 void setSpeedLimit(
const double & speed_limit,
const bool & percentage)
override
165 if (traj_generator_) {
166 traj_generator_->setSpeedLimit(speed_limit, percentage);
175 const geometry_msgs::msg::Pose & pose,
176 const nav_2d_msgs::msg::Twist2D velocity,
177 std::shared_ptr<dwb_msgs::msg::LocalPlanEvaluation> & results);
179 bool debug_trajectory_details_;
195 nav2::LifecycleNode::WeakPtr node_;
196 rclcpp::Clock::SharedPtr clock_;
197 rclcpp::Logger logger_{rclcpp::get_logger(
"DWBLocalPlanner")};
199 nav2::TransformBuffer::SharedPtr tf_;
200 std::shared_ptr<nav2_costmap_2d::Costmap2DROS> costmap_ros_;
202 std::unique_ptr<DWBPublisher> pub_;
203 std::vector<std::string> default_critic_namespaces_;
206 pluginlib::ClassLoader<TrajectoryGenerator> traj_gen_loader_;
207 TrajectoryGenerator::Ptr traj_generator_;
209 pluginlib::ClassLoader<TrajectoryCritic> critic_loader_;
210 std::vector<TrajectoryCritic::Ptr> critics_;
212 std::string dwb_plugin_name_;
214 bool short_circuit_trajectory_evaluation_;
Plugin-based flexible controller.
void newPathReceived(const nav_msgs::msg::Path &raw_global_path) override
nav2_core newPathReceived - Receives a new plan from the Planner Server
geometry_msgs::msg::TwistStamped computeVelocityCommands(const geometry_msgs::msg::PoseStamped &pose, const geometry_msgs::msg::Twist &velocity, nav2_core::GoalChecker *, const nav_msgs::msg::Path &transformed_global_plan, const geometry_msgs::msg::PoseStamped &global_goal) override
nav2_core computeVelocityCommands - calculates the best command given the current pose and velocity
virtual dwb_msgs::msg::TrajectoryScore coreScoringAlgorithm(const geometry_msgs::msg::Pose &pose, const nav_2d_msgs::msg::Twist2D velocity, std::shared_ptr< dwb_msgs::msg::LocalPlanEvaluation > &results)
Iterate through all the twists and find the best one.
void cleanup() override
Cleanup lifecycle node.
std::string resolveCriticClassName(std::string base_name)
try to resolve a possibly shortened critic name with the default namespaces and the suffix "Critic"
void deactivate() override
Deactivate lifecycle node.
void configure(const nav2::LifecycleNode::WeakPtr &parent, std::string name, nav2::TransformBuffer::SharedPtr tf, std::shared_ptr< nav2_costmap_2d::Costmap2DROS > costmap_ros) override
DWBLocalPlanner()
Constructor that brings up pluginlib loaders.
void setSpeedLimit(const double &speed_limit, const bool &percentage) override
Limits the maximum linear speed of the robot.
virtual dwb_msgs::msg::TrajectoryScore scoreTrajectory(const dwb_msgs::msg::Trajectory2D &traj, double best_score=-1)
Score a given command. Can be used for testing.
virtual void loadCritics()
Load the critic parameters from the namespace.
void activate() override
Activate lifecycle node.
controller interface that acts as a virtual base class for all controller plugins
Function-object for checking whether a goal has been reached.