17 #ifndef BEHAVIOR_TREE__SERVER_HANDLER_HPP_
18 #define BEHAVIOR_TREE__SERVER_HANDLER_HPP_
26 #include "nav2_msgs/srv/clear_entire_costmap.hpp"
27 #include "nav2_msgs/srv/clear_costmap_around_robot.hpp"
28 #include "nav2_msgs/srv/clear_costmap_except_region.hpp"
29 #include "nav2_msgs/srv/clear_costmap_around_pose.hpp"
30 #include "nav2_msgs/srv/is_path_valid.hpp"
31 #include "nav2_msgs/action/compute_path_to_pose.hpp"
32 #include "nav2_msgs/action/follow_path.hpp"
33 #include "nav2_msgs/action/spin.hpp"
34 #include "nav2_msgs/action/back_up.hpp"
35 #include "nav2_msgs/action/wait.hpp"
36 #include "nav2_msgs/action/drive_on_heading.hpp"
37 #include "nav2_msgs/action/compute_path_through_poses.hpp"
38 #include "nav2_msgs/action/compute_route.hpp"
39 #include "nav2_msgs/action/smooth_path.hpp"
41 #include "geometry_msgs/msg/point_stamped.hpp"
43 #include "rclcpp/rclcpp.hpp"
45 #include "dummy_action_server.hpp"
46 #include "dummy_service.hpp"
48 namespace nav2_system_tests
58 geometry_msgs::msg::PoseStamped pose;
59 pose.header.stamp = node->get_clock()->now();
60 pose.header.frame_id =
"map";
61 pose.pose.position.x = 0.0;
62 pose.pose.position.y = 0.0;
63 pose.pose.position.z = 0.0;
64 pose.pose.orientation.x = 0.0;
65 pose.pose.orientation.y = 0.0;
66 pose.pose.orientation.z = 0.0;
67 pose.pose.orientation.w = 1.0;
69 result_->path.header.stamp = node->now();
70 result_->path.header.frame_id = pose.header.frame_id;
71 for (
int i = 0; i < 6; ++i) {
72 result_->path.poses.push_back(pose);
77 void updateResultForFailure(
78 std::shared_ptr<nav2_msgs::action::ComputePathToPose::Result>
81 result->error_code = nav2_msgs::action::ComputePathToPose::Result::TIMEOUT;
82 result->error_msg =
"Timeout";
93 void updateResultForFailure(
94 std::shared_ptr<nav2_msgs::action::FollowPath::Result>
97 result->error_code = nav2_msgs::action::FollowPath::Result::NO_VALID_CONTROL;
98 result->error_msg =
"No valid control";
106 const rclcpp::Node::SharedPtr & node,
107 std::string service_name)
112 const std::shared_ptr<nav2_msgs::srv::ClearEntireCostmap::Request>,
113 const std::shared_ptr<nav2_msgs::srv::ClearEntireCostmap::Response> response)
override
115 response->success =
true;
120 :
public DummyService<nav2_msgs::srv::ClearCostmapAroundRobot>
124 const rclcpp::Node::SharedPtr & node,
125 std::string service_name)
130 const std::shared_ptr<nav2_msgs::srv::ClearCostmapAroundRobot::Request>,
131 const std::shared_ptr<nav2_msgs::srv::ClearCostmapAroundRobot::Response> response)
override
133 response->success =
true;
138 :
public DummyService<nav2_msgs::srv::ClearCostmapExceptRegion>
142 const rclcpp::Node::SharedPtr & node,
143 std::string service_name)
148 const std::shared_ptr<nav2_msgs::srv::ClearCostmapExceptRegion::Request>,
149 const std::shared_ptr<nav2_msgs::srv::ClearCostmapExceptRegion::Response> response)
override
151 response->success =
true;
156 :
public DummyService<nav2_msgs::srv::ClearCostmapAroundPose>
160 const rclcpp::Node::SharedPtr & node,
161 std::string service_name)
166 const std::shared_ptr<nav2_msgs::srv::ClearCostmapAroundPose::Request>,
167 const std::shared_ptr<nav2_msgs::srv::ClearCostmapAroundPose::Response> response)
override
169 response->success =
true;
183 bool isActive()
const
191 std::unique_ptr<DummyClearEntireCostmapService> clear_local_costmap_server;
192 std::unique_ptr<DummyClearEntireCostmapService> clear_global_costmap_server;
193 std::unique_ptr<DummyClearCostmapAroundRobotService> clear_costmap_around_robot_server;
194 std::unique_ptr<DummyClearCostmapExceptRegionService> clear_costmap_except_region_server;
195 std::unique_ptr<DummyClearCostmapAroundPoseService> clear_costmap_around_pose_server;
196 std::unique_ptr<DummyService<nav2_msgs::srv::IsPathValid>> validate_path_server;
197 std::unique_ptr<DummyComputePathToPoseActionServer> compute_path_to_pose_server;
198 std::unique_ptr<DummyFollowPathActionServer> follow_path_server;
199 std::unique_ptr<DummyActionServer<nav2_msgs::action::Spin>> spin_server;
200 std::unique_ptr<DummyActionServer<nav2_msgs::action::Wait>> wait_server;
201 std::unique_ptr<DummyActionServer<nav2_msgs::action::BackUp>> backup_server;
202 std::unique_ptr<DummyActionServer<nav2_msgs::action::ComputeRoute>> compute_route_server;
203 std::unique_ptr<DummyActionServer<nav2_msgs::action::SmoothPath>> smoother_server;
204 std::unique_ptr<DummyActionServer<nav2_msgs::action::DriveOnHeading>> drive_on_heading_server;
205 std::unique_ptr<DummyActionServer<nav2_msgs::action::ComputePathThroughPoses>> ntp_server;
211 rclcpp::Node::SharedPtr node_;
212 std::shared_ptr<std::thread> server_thread_;