21 #include "dummy_controller.hpp"
23 using namespace std::chrono_literals;
25 namespace nav2_system_tests
28 DummyController::DummyController()
29 : Node(
"DummyController")
31 RCLCPP_INFO(get_logger(),
"Initializing DummyController...");
33 auto temp_node = std::shared_ptr<rclcpp::Node>(
this, [](
auto) {});
36 this->create_publisher<geometry_msgs::msg::Twist>(
"cmd_vel", 1);
38 task_server_ = std::make_unique<nav2_behavior_tree::FollowPathTaskServer>(temp_node,
false),
39 task_server_->setExecuteCallback(
40 std::bind(&DummyController::followPath,
this, std::placeholders::_1));
43 task_server_->start();
45 RCLCPP_INFO(get_logger(),
"Initialized DummyController");
48 DummyController::~DummyController()
50 RCLCPP_INFO(get_logger(),
"Shutting down DummyController");
54 DummyController::followPath(
const nav2_behavior_tree::FollowPathCommand::SharedPtr )
56 RCLCPP_INFO(get_logger(),
"Starting controller ");
58 auto start_time = std::chrono::system_clock::now();
59 auto time_since_msg = std::chrono::system_clock::now();
63 std::this_thread::sleep_for(50ms);
65 if (task_server_->cancelRequested()) {
66 RCLCPP_INFO(get_logger(),
"Task cancelled");
68 task_server_->setCanceled();
73 auto current_time = std::chrono::system_clock::now();
74 if (current_time - time_since_msg >= 1s) {
75 RCLCPP_INFO(get_logger(),
"Following path");
76 time_since_msg = std::chrono::system_clock::now();
80 auto cmd_vel = std::make_unique<geometry_msgs::msg::Twist>();
81 cmd_vel->linear.x = 0.1;
82 vel_pub_->publish(std::move(cmd_vel));
84 if (current_time - start_time >= 30s) {
85 RCLCPP_INFO(get_logger(),
"Reached end point");
91 nav2_behavior_tree::FollowPathResult result;
92 task_server_->setResult(result);
95 void DummyController::setZeroVelocity()
97 auto cmd_vel = std::make_unique<geometry_msgs::msg::Twist>();
98 cmd_vel->linear.x = 0.0;
99 cmd_vel->linear.y = 0.0;
100 cmd_vel->angular.z = 0.0;
101 vel_pub_->publish(std::move(cmd_vel));