From 3b8b3a2d6209eb26407a0de4a81844e91094eb95 Mon Sep 17 00:00:00 2001 From: acki Date: Thu, 29 May 2025 08:26:05 -0400 Subject: [PATCH] send one time --- .../include/modelec_strat/enemy_manager.hpp | 2 ++ src/modelec_strat/src/enemy_manager.cpp | 25 +++++++++++++------ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/modelec_strat/include/modelec_strat/enemy_manager.hpp b/src/modelec_strat/include/modelec_strat/enemy_manager.hpp index 577a7ac..ff6ccf4 100644 --- a/src/modelec_strat/include/modelec_strat/enemy_manager.hpp +++ b/src/modelec_strat/include/modelec_strat/enemy_manager.hpp @@ -38,6 +38,8 @@ namespace Modelec bool enemy_initialized_ = false; rclcpp::Time last_publish_time_; + bool is_enemy_close_ = false; + float min_move_threshold_mm_ = 0.0f; float refresh_rate_s_ = 0.0f; diff --git a/src/modelec_strat/src/enemy_manager.cpp b/src/modelec_strat/src/enemy_manager.cpp index e0ffd57..1624bc3 100644 --- a/src/modelec_strat/src/enemy_manager.cpp +++ b/src/modelec_strat/src/enemy_manager.cpp @@ -138,16 +138,27 @@ namespace Modelec // Check if in bounds if (x_global >= 0 && x_global <= (map_width_ - margin_detection_table_) && y_global >= 0 && y_global <= (map_height_ - margin_detection_table_)) { - modelec_interfaces::msg::OdometryPos emergency_msg; - emergency_msg.x = x_global; - emergency_msg.y = y_global; - emergency_msg.theta = 0.0; + if (!is_enemy_close_) + { + modelec_interfaces::msg::OdometryPos emergency_msg; + emergency_msg.x = x_global; + emergency_msg.y = y_global; + emergency_msg.theta = 0.0; - close_enemy_pos_pub_->publish(emergency_msg); - RCLCPP_WARN(this->get_logger(), "EMERGENCY CLOSE OBJECT DETECTED at x=%.2f y=%.2f (%.1f mm)", x_global, y_global, range_mm); + close_enemy_pos_pub_->publish(emergency_msg); + RCLCPP_WARN(this->get_logger(), "EMERGENCY CLOSE OBJECT DETECTED at x=%.2f y=%.2f (%.1f mm)", x_global, y_global, range_mm); + + is_enemy_close_ = true; + } + + break; } - break;; + is_enemy_close_ = false; + } + else + { + is_enemy_close_ = false; } // Convert to local robot frame