Nav2 Navigation Stack - lyrical  lyrical
ROS 2 Navigation Stack
controller.hpp
1 /*
2  * Software License Agreement (BSD License)
3  *
4  * Copyright (c) 2017, Locus Robotics
5  * Copyright (c) 2019, Intel Corporation
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * * Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  * * Redistributions in binary form must reproduce the above
15  * copyright notice, this list of conditions and the following
16  * disclaimer in the documentation and/or other materials provided
17  * with the distribution.
18  * * Neither the name of the copyright holder nor the names of its
19  * contributors may be used to endorse or promote products derived
20  * from this software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26  * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33  * POSSIBILITY OF SUCH DAMAGE.
34  */
35 
36 #ifndef NAV2_CORE__CONTROLLER_HPP_
37 #define NAV2_CORE__CONTROLLER_HPP_
38 
39 #include <memory>
40 #include <string>
41 
42 #include "nav2_costmap_2d/costmap_2d_ros.hpp"
43 #include "nav2_ros_common/lifecycle_node.hpp"
44 #include "nav2_ros_common/tf2_factories.hpp"
45 #include "pluginlib/class_loader.hpp"
46 #include "geometry_msgs/msg/pose_stamped.hpp"
47 #include "geometry_msgs/msg/twist_stamped.hpp"
48 #include "nav_msgs/msg/path.hpp"
49 #include "nav2_core/goal_checker.hpp"
50 
51 
52 namespace nav2_core
53 {
54 
60 {
61 public:
62  using Ptr = std::shared_ptr<nav2_core::Controller>;
63 
64 
68  virtual ~Controller() {}
69 
74  virtual void configure(
75  const nav2::LifecycleNode::WeakPtr &,
76  std::string name, nav2::TransformBuffer::SharedPtr,
77  std::shared_ptr<nav2_costmap_2d::Costmap2DROS>) = 0;
78 
82  virtual void cleanup() = 0;
83 
87  virtual void activate() = 0;
88 
92  virtual void deactivate() = 0;
93 
101  virtual void newPathReceived(const nav_msgs::msg::Path & raw_global_path) = 0;
102 
118  virtual geometry_msgs::msg::TwistStamped computeVelocityCommands(
119  const geometry_msgs::msg::PoseStamped & pose,
120  const geometry_msgs::msg::Twist & velocity,
121  nav2_core::GoalChecker * goal_checker,
122  const nav_msgs::msg::Path & transformed_global_plan,
123  const geometry_msgs::msg::PoseStamped & global_goal) = 0;
124 
130  virtual bool cancel()
131  {
132  return true;
133  }
134 
142  virtual void setSpeedLimit(const double & speed_limit, const bool & percentage) = 0;
143 
147  virtual void reset() {}
148 };
149 
150 } // namespace nav2_core
151 
152 #endif // NAV2_CORE__CONTROLLER_HPP_
controller interface that acts as a virtual base class for all controller plugins
Definition: controller.hpp:60
virtual void newPathReceived(const nav_msgs::msg::Path &raw_global_path)=0
local setPlan - Notifies the Controller that a new plan is received from the Planner Server
virtual void activate()=0
Method to active planner and any threads involved in execution.
virtual void deactivate()=0
Method to deactivate planner and any threads involved in execution.
virtual geometry_msgs::msg::TwistStamped computeVelocityCommands(const geometry_msgs::msg::PoseStamped &pose, const geometry_msgs::msg::Twist &velocity, nav2_core::GoalChecker *goal_checker, const nav_msgs::msg::Path &transformed_global_plan, const geometry_msgs::msg::PoseStamped &global_goal)=0
Controller computeVelocityCommands - calculates the best command given the current pose and velocity.
virtual void setSpeedLimit(const double &speed_limit, const bool &percentage)=0
Limits the maximum linear speed of the robot.
virtual void cleanup()=0
Method to cleanup resources.
virtual ~Controller()
Virtual destructor.
Definition: controller.hpp:68
virtual void configure(const nav2::LifecycleNode::WeakPtr &, std::string name, nav2::TransformBuffer::SharedPtr, std::shared_ptr< nav2_costmap_2d::Costmap2DROS >)=0
virtual bool cancel()
Cancel the current control action.
Definition: controller.hpp:130
virtual void reset()
Reset the state of the controller if necessary after task is exited.
Definition: controller.hpp:147
Function-object for checking whether a goal has been reached.